"Articles are my own, not views of my employer"

就活や転職に役立てるためTips投稿や競プロwriteupを行いプレゼンスを高める自分用備忘録です

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