最終更新:2022-10-12 (水) 11:07:12 (786d)
Linuxカーネル/ビルド
初めて
注意
新しくダウンロードし解凍したカーネルソースは、/usr/srcに置かないでください。 /usr/srcに置くよう指示する人もいますが、その指示に耳を傾けてはいけません。
- カーネルのREADMEファイルでは、次のように説明しています。
「...カーネルのtarballを、自分が権限を持つディレクトリ(たとえば自分のホームディレクトリ)に置いてください
Linux Kernel Newbies
EXTRAVERSION
- 自分でコンパイルしたカーネルにオリジナルの拡張バージョンを付けたい場合はMakefileを開いて4行目
EXTRAVERSION =
- の後に任意の文字列を追加すればOK
概要
まずはクリーン
- cd linux-4.8.6/
- make clean && make mrproper
ビルド
- カーネルのあるディレクトリでmake *configして.config(カーネルの設定ファイル)を生成
- make config,make menuconfigとかは現在の.configの値がデフォルト値として設定される。
- その後makeするとカーネルがビルドされる
cd /usr/src/linux make menuconfig make make install
出力フォルダを指定
cd /usr/src/linux-4.X make O=/home/name/build/kernel menuconfig make O=/home/name/build/kernel sudo make O=/home/name/build/kernel modules_install install
処理のステップ
- 1) Configuration of the kernel => produce .config
- 2) Store kernel version in include/linux/version.h
- 3) Symlink include/asm to include/asm-$(ARCH)
- 4) Updating all other prerequisites to the target prepare:
- 5) Recursively descend down in all directories listed in init-* core* drivers-* net-* libs-* and build all targets.
- 6) All object files are then linked and the resulting file vmlinux is located at the root of the obj tree.
- 7) Finally, the architecture-specific part does any required post processing and builds the final bootimage.
- This includes building boot records
- Preparing initrd images and the like
Linuxカーネル/make
- make *configとか
make mrproper configで設定した内容の消去を行う make config 純粋なテキストベース make xconfig X上で行うグラフィックベース make menuconfig テキストベースだけどお気楽メニュー形式 make oldconfig 古い.configファイルを読み込んで設定 make defconfig デフォルト設定 make gconfig? GTKベースのフロントエンド - 詳細はLinuxカーネル/make helpを参照。
.config
- デフォルトの設定
- Linux/boot/config-`uname -r`をコピーして使う。
CentOS,Fedora
- 標準だとソースコードを含むパッケージが用意されていないのでrpmから抽出する
yum install rpmdevtools yum-utils rpmdev-setuptree yumdownloader --source kernel yum-builddep kernel-<version>.src.rpm rpm -Uvh kernel-<version>.src.rpm cd ~/rpmbuild/SPECS rpmbuild -bp --target=$(uname -m) kernel.spec cp configs/kernel-<version>.config .config make oldconfig
コマンド
参考
ディストリビューション別ドキュメント
CentOS Wiki
- http://wiki.centos.org/HowTos/BuildingKernelModules
- http://wiki.centos.org/HowTos/I_need_the_Kernel_Source
Fedora Project Wiki
Ubuntu Documentation
Debian Wiki
- http://www.debian.org/releases/stable/i386/ch08s06.html.ja
- http://wiki.debian.org/HowToRebuildAnOfficialDebianKernelPackage
Linux 2.6
関連
Linux/カーネルモジュール/ビルド
参考
- http://www.geocities.jp/lethevert/softwares/linux_kernel/index.html
- http://jibun.atmarkit.co.jp/lskill01/rensai/lpicdrill05/lpicdrill01.html
- http://itpro.nikkeibp.co.jp/article/COLUMN/20071025/285507/
- http://d.hatena.ne.jp/cupnes/20110226/1298713968
- http://www.geocities.co.jp/SiliconValley-Cupertino/9120/kernel_recompile.html
- http://www.ctrlz.jp/techdoc/linuxkb/50-kernelconf.html
- http://enterprisezine.jp/iti/detail/86