LoginSignup
1
0

More than 1 year has passed since last update.

Initaramfs 不要のカーネルを作る例

Last updated at Posted at 2021-11-08

Initaramfs 不要のカーネルを作る例

始めに

LFS から Arch にやってきたけど、Arch は initaramfs イメージを使って起動する。LFS で initramfs なしでやってきたノウハウを活かして Arch でも initramfs なしで起動するカーネルを作ってみた

initramfs なんで必要?

まず Linux のブートの仕組みから。ド素人の理解なので不正確かもしれない。なんとなくそんな感じというように受け止めてほしい。

Grub ブートローダーは、たいていの記憶デバイスを動かせるし、たいていのファイルシステムを扱える。なのでまず、どこかの記憶デバイスのなにかのファイルシステム上に存在するカーネルを起動させることができる。

Grub の役目は終り、カーネルが始動する。この後はカーネル自身がなんとかしなくてはならない。カーネルは /sbin/init を起動しようとする。このとき、自分の例では SATA 接続の SSD に XFS ファイルシステムで /sbin/init がある。Arch のカーネルは XFS はモジュールになっているので、xfs モジュールを読みこみたいが、/lib/modules を読むのに xfs モジュールが必要なので詰む。

なのでカーネル自身に xfs も sata コントローラも両方組み込んでおく必要があるし、逆を言えば、そうすれば initramfs は無くても動く。

Arch での kernel ビルドの準備

前提としてカーネルのビルドは知ってる、としてます。ビルド方法そのものは説明しません。

まずは Arch の linux パッケージで入ってるのと同じバージョンのカーネルソースを https://www.kernel.org 持ってくる。そうすると Arch の Linux の .config を使って make olddefconfig でほぼ同じ設定にできるので、そこから開始する。ほぼ同じというのは Archwiki によると多少パッチを独自に当てているから、ということになる。全く同じにしたい人は Arch の物を取ってくれば良いだろう。

ちなみに Arch の .config は zcat /proc/config.gz > .config で取得できる

Arch での kernel config

make nconfig にて

File systems --->
   <*> XFS filesystem support  

これだけで良い。Arch は記憶デバイス用のドライバーは基本モジュールではなくて組み込みにしてあるみたいだ。自分の例だと以下のおかげで動く。

Device Drivers  --->
  <*> Serial ATA and Parallel ATA drivers (libata)  --->
    <*>   AHCI SATA support

カーネルパニック起こしながらトライしてみると良いと思う。

grub.cfg の設定と起動。

カーネル起動コマンドから initrd の行を削除したら、祈りを捧げよう。

あっと、もうひとつあった。kernel 行の root パーティション指定が UUID になってると思うので、デバイス名直打ちか PARTUUID に変える必要がある。UUID はファイルシステム上の固有 ID であり、カーネルにファイルシステムを組み込んだんだから行ってくれよ、と思うのだけど、この段階では、行ってくれない。自分の場合は root=/dev/sda3 としてる。ノート PC で入れ替えることなどほぼないので。

捕捉: CPU マイクロコードは?

initramfs イメージがなくてもマイクロコードは実行中に読みこめる。BLFS の説明が詳しい。

またコンフィグツリーの

Device Drivers --->
  Generic Driver Options  --->
    Firmware loader  --->
      ()    Build named firmware blobs into the kernel binary

ここにファームウェアをフルパスで指定しておけばカーネルに組込める。

まとめ

というわけで kernel panic を恐れずにいろいろやってみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0