最終更新:2016-04-11 (月) 14:29:57 (2937d)  

Fedora/Linuxカーネル/ビルド
Top / Fedora / Linuxカーネル / ビルド

https://fedoraproject.org/wiki/Building_a_custom_kernel

方法

  • ソースパッケージを取ってくる
  • ビルド

必要なバッケージ

Fedora 22

Fedora 12以降

メモ

  • メモリ2GB,20GBだとビルド時にディスク容量が足りなくなった。

手順

  • yum install rpmdevtools yum-utils
  • rpmdev-setuptree
  • yumdownloader --source kernel
    • Fedora 16
      [user@localhost ~]$ yumdownloader --source kernel-3.1.0-7.fc16 
      Loaded plugins: langpacks, presto, refresh-packagekit
      Enabling updates-source repository
      updates-source/metalink                                  | 2.9 kB     00:00     
      updates-source                                           | 3.3 kB     00:00     
      updates-source/primary_db                                | 1.4 MB     00:02     
      Enabling fedora-source repository
      fedora-source/metalink                                   | 3.1 kB     00:00     
      fedora-source                                            | 3.1 kB     00:00     
      fedora-source/primary_db                                 | 3.5 MB     00:07     
      kernel-3.1.0-7.fc16.src.rpm                              |  74 MB     01:43  
  • yum-builddep kernel-<version>.src.rpm
    • systemtap-runtime?systemtap-sdt-devel?が競合するのでDevelopment Toolsを先にインストールした
    Transaction Check Error:
      file /usr/share/locale/en/LC_MESSAGES/systemtap.mo from install of systemtap-sdt-devel-2.0-1.fc16.x86_64 conflicts with file from package systemtap-runtime-1.6-1.fc16.x86_64
      file /usr/share/locale/fr/LC_MESSAGES/systemtap.mo from install of systemtap-sdt-devel-2.0-1.fc16.x86_64 conflicts with file from package systemtap-runtime-1.6-1.fc16.x86_64
      file /usr/share/locale/pl/LC_MESSAGES/systemtap.mo from install of systemtap-sdt-devel-2.0-1.fc16.x86_64 conflicts with file from package systemtap-runtime-1.6-1.fc16.x86_64
      file /usr/share/locale/en/LC_MESSAGES/systemtap.mo from install of systemtap-sdt-devel-2.0-1.fc16.x86_64 conflicts with file from package systemtap-1.6-1.fc16.x86_64
      file /usr/share/locale/fr/LC_MESSAGES/systemtap.mo from install of systemtap-sdt-devel-2.0-1.fc16.x86_64 conflicts with file from package systemtap-1.6-1.fc16.x86_64
      file /usr/share/locale/pl/LC_MESSAGES/systemtap.mo from install of systemtap-sdt-devel-2.0-1.fc16.x86_64 conflicts with file from package systemtap-1.6-1.fc16.x86_64
    
    Error Summary
    -------------
  • rpm -Uvh kernel-<version>.src.rpm
    [user@localhost rpmbuild]$ tree
    .
    ├── BUILD
    ├── RPMS
    ├── SOURCES
    │   ├── 0001-mm-vmscan-Limit-direct-reclaim-for-higher-order-allo.patch
    │   ├── 0002-mm-Abort-reclaim-compaction-if-compaction-can-procee.patch
    │   ├── acpi-ensure-thermal-limits-match-cpu-freq.patch
    │   ├── acpi-sony-nonvs-blacklist.patch
    │   ├── add-appleir-usb-driver.patch
    │   ├── add-macbookair41-keyboard.patch
    │   ├── arm-omap-dt-compat.patch
    │   ├── arm-smsc-support-reading-mac-address-from-device-tree.patch
    │   ├── be2net-non-member-vlan-pkts-not-received-in-promisco.patch
    │   ├── benet-remove-bogus-unlikely-on-vlan-check.patch
    │   ├── block-stray-block-put-after-teardown.patch
    │   ├── config-arm-generic
    │   ├── config-arm-omap-generic
    │   ├── config-arm-tegra
    │   ├── config-debug
    │   ├── config-generic
    │   ├── config-i686-PAE
    │   ├── config-ia64-generic
    │   ├── config-local
    │   ├── config-nodebug
    │   ├── config-powerpc32-generic
    │   ├── config-powerpc32-smp
    │   ├── config-powerpc64
    │   ├── config-powerpc-generic
    │   ├── config-rhel-generic
    │   ├── config-s390x
    │   ├── config-sparc64-generic
    │   ├── config-x86-32-generic
    │   ├── config-x86_64-generic
    │   ├── config-x86-generic
    │   ├── cpupower.config
    │   ├── cpupower.service
    │   ├── crypto-register-cryptd-first.patch
    │   ├── die-floppy-die.patch
    │   ├── disable-i8042-check-on-apple-mac.patch
    │   ├── dmar-disable-when-ricoh-multifunction.patch
    │   ├── drm-i915-fbc-stfu.patch
    │   ├── drm-i915-sdvo-lvds-is-digital.patch
    │   ├── drm-intel-make-lvds-work.patch
    │   ├── drm-intel-next.patch
    │   ├── drm-lower-severity-radeon-lockup.diff
    │   ├── drm-nouveau-updates.patch
    │   ├── efi-dont-map-boot-services-on-32bit.patch
    │   ├── epoll-fix-spurious-lockdep-warnings.patch
    │   ├── epoll-limit-paths.patch
    │   ├── find-provides
    │   ├── fix_xen_guest_on_old_EC2.patch
    │   ├── floppy-drop-disable_hlt-warning.patch
    │   ├── genkey
    │   ├── git-linus.diff
    │   ├── hvcs_pi_buf_alloc.patch
    │   ├── iwlagn-fix-ht_params-NULL-pointer-dereference.patch
    │   ├── linux-2.6.30-no-pcspkr-modalias.patch
    │   ├── linux-2.6-32bit-mmap-exec-randomization.patch
    │   ├── linux-2.6-acpi-debug-infinite-loop.patch
    │   ├── linux-2.6-acpi-video-dos.patch
    │   ├── linux-2.6-compile-fixes.patch
    │   ├── linux-2.6-crash-driver.patch
    │   ├── linux-2.6-debug-taint-vm.patch
    │   ├── linux-2.6-defaults-acpi-video.patch
    │   ├── linux-2.6-defaults-aspm.patch
    │   ├── linux-2.6-e1000-ich9-montevina.patch
    │   ├── linux-2.6-i386-nx-emulation.patch
    │   ├── linux-2.6-input-kill-stupid-messages.patch
    │   ├── linux-2.6-intel-iommu-igfx.patch
    │   ├── linux-2.6-makefile-after_link.patch
    │   ├── linux-2.6-serial-460800.patch
    │   ├── linux-2.6-silence-acpi-blacklist.patch
    │   ├── linux-2.6-silence-fbcon-logo.patch
    │   ├── linux-2.6-silence-noise.patch
    │   ├── linux-2.6-upstream-reverts.patch
    │   ├── linux-2.6-v4l-dvb-experimental.patch
    │   ├── linux-2.6-v4l-dvb-fixes.patch
    │   ├── linux-2.6-v4l-dvb-update.patch
    │   ├── linux-2.6-v4l-dvb-uvcvideo-update.patch
    │   ├── linux-3.1.tar.bz2
    │   ├── Makefile.config
    │   ├── media-dib0700-correct-error-message.patch
    │   ├── media-dib0700-protect-the-dib0700-buffer-access.patch
    │   ├── media-DiBcom-protect-the-I2C-bufer-access.patch
    │   ├── merge.pl
    │   ├── mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
    │   ├── oom-fix-integer-overflow-of-points.patch
    │   ├── powerpc-Fix-deadlock-in-icswx-code.patch
    │   ├── rcu-avoid-just-onlined-cpu-resched.patch
    │   ├── rcutree-avoid-false-quiescent-states.patch
    │   ├── revert-efi-rtclock.patch
    │   ├── taint-vbox.patch
    │   ├── udlfb-bind-framebuffer-to-interface.patch
    │   ├── ums-realtek-driver-uses-stack-memory-for-DMA.patch
    │   ├── usb-add-quirk-for-logitech-webcams.patch
    │   ├── utrace.patch
    │   └── xfs-Fix-possible-memory-corruption-in-xfs_readlink.patch
    ├── SPECS
    │   └── kernel.spec
    └── SRPMS
    5 directories, 94 files
  • ソースツリーの準備
  • diffをとるためにカーネルのソースをコピー
    • Linux/~/rpmbuild/BUILD/kernel-3.1.fc16.orig?
    • Linux/~/rpmbuild/BUILD/kernel-3.1.fc16.new? - こっちをいじる
  • diff orig new > SOURCES/linux-3.1-mynewpatch.patch
  • rpmbuild -bb --target=`uname -m` kernel.spec
    └── RPMS
          └── x86_64
    -rw-rw-r--. 1 user user  24M Apr  7 13:33 kernel-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user  25M Apr  7 13:37 kernel-debug-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user 261M Apr  7 13:41 kernel-debug-debuginfo-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user 7.2M Apr  7 13:38 kernel-debug-devel-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user 254M Apr  7 13:37 kernel-debuginfo-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user  40M Apr  7 13:34 kernel-debuginfo-common-x86_64-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user 7.2M Apr  7 13:34 kernel-devel-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user 767K Apr  7 13:33 kernel-headers-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user 429K Apr  7 13:34 kernel-tools-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user 1.1M Apr  7 13:34 kernel-tools-debuginfo-3.1.0-7.nakamura.fc16.x86_64.rpm
    -rw-rw-r--. 1 user user  19K Apr  7 13:34 kernel-tools-devel-3.1.0-7.nakamura.fc16.x86_64.rpm
    

参考