Ubuntuカーネルビルド手順
まとめ
Ubuntu Bionic(つまりUbuntu 18系の別名)をビルドする方法を記す. 基本的に Kernel/Compile - Community Help Wiki から多大に情報を得ているが,いくつかコメントを書いた.
なぜUbuntu用カーネルをビルドするのか
もちろんオリジナルlinuxカーネルをそのままビルドしてインストールしても一応使える. Ubuntu用カーネルはオリジナルのlinuxカーネルに多少の変更がしてあるらしい.
したがって,オリジナルのlinuxカーネルをビルドしてそのままインストールした場合,
- グラフィックの様子がおかしい
- ネットワークのバーチャルブリッジ(virbr0)とかが設定されない
などの不都合が起きる(起きた). その結果として仮想マシンが正常に起動しないなどのトラブルが発生する.
ビルド手順
ソースコードダウンロード
$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git
いくつかコメント.
- 上記URLの見つけ方はこれという決まった手順がない.
- 自分の場合はubuntu-trustyのURLを見つけたのでこれをbionicに置き換えてみた.
- 数十kB/sしかバンド幅がないのですごく時間がかかる.
apt source
でやる方法もあるらしいがうまくいかずに時間を溶かしたので最初はこちらを推奨.
ビルド
$ cd ubuntu-bionic $ git tag $ git checkout Ubuntu-4.15.0-hoge-fuga $ fakeroot debian/rules clean $ AUTOBUILD=1 fakeroot debian/rules binary-generic
- 普通は.configファイルをコピーしたり,
make oldconfig
を走らせたりするが不要.binary-debs
に応じて.configファイルが生成されるらしい.- したがって
binary-FLAVOUR
のように他のものを指定することが可能.
-j
オプションでビルドスレッド数を指定する必要もない.- 自動で物理コア数分のスレッドが立ち上がる.
- 上記サイトだと
binary-debs
を指定しているがやめたほうがいい.- generic, lowlatency, cloud, serverその他すべてのフレーバーがビルドされてしまい,時間と空間を取られる.
binary-generic
で明示的にフレーバーを指定する.- これでも物理6コアで20分かかる.
以上の操作でdebファイルが複数生成されているはずである.
$ ls ../linux-*deb ../linux-cloud-tools-4.15.0-23-generic_4.15.0-23.25_amd64.deb ../linux-headers-4.15.0-23-generic_4.15.0-23.25_amd64.deb ../linux-image-unsigned-4.15.0-23-generic_4.15.0-23.25_amd64.deb ../linux-modules-4.15.0-23-generic_4.15.0-23.25_amd64.deb ../linux-modules-extra-4.15.0-23-generic_4.15.0-23.25_amd64.deb ../linux-tools-4.15.0-23-generic_4.15.0-23.25_amd64.deb
インストール
これをインストールすれば完了である.
$ sudo apt install linux-headers-4.15.0-23 $ sudo dpkg -i linux-headers-4.15.0-23-generic_4.15.0-23.25_amd64.deb $ sudo dpkg -i ../linux-modules-4.15.0-23-generic_4.15.0-23.25_amd64.deb $ sudo dpkg -i ../linux-image-unsigned-4.15.0-23-generic_4.15.0-23.25_amd64.deb $ sudo dpkg -i linux-modules-extra-4.15.0-23-generic_4.15.0-23.25_amd64.deb
- 依存関係解消のために上の順序でインストールする必要がある.
- とくに最初の
apt
に注意.
- とくに最初の
アンインストール
なおアンインストールは以下のようにする.
$ sudo dpkg -r linux-image-unsigned-4.15.0-23-generic