○Plamo-7.1のinitrd対応について
従来、Plamo Linuxでは、起動回りの処理を簡単にするため、initrd は使わないようにしていました。
しかしながら、昨今のカーネルの多機能化や周辺機器の多様化に伴ない、 カーネルにどのドライバを組み込んでいいのかがよく分からなくなってきたため(苦笑)、 Plamo-7.1からはHDD等のブロックデバイスやファイルシステム回りのドライバはinitrd経由で組み込むようにしました。
使用するinitrdは、initrd.img-<kernel_vers>_plamo64 という名前で、 インストールするカーネルパッケージ(Plamo-7.1ではkernel-4.19.35-x86_64-B1.txz)に 収めています。
# tar tvf kernel-4.19.35-x86_64-B1.txz drwxr-xr-x root/root 0 2019-04-25 11:37:25 boot/ -rwxr-xr-x root/root 4048671 2019-04-25 11:37:00 boot/System.map-.19.35_plamo64 -rwxr-xr-x root/root 221794 2019-04-25 11:37:00 boot/config-4.19.35_plamo64 -rwxr-xr-x root/root 6862720 2019-04-25 11:37:00 boot/vmlinuz-4.19.35_plamo64 -rwxr-xr-x root/root 17596355 2019-04-25 11:37:00 boot/initrd.img-4.19.35_plamo64 drwxr-xr-x root/root 0 2019-04-25 11:33:18 lib/ drwxr-xr-x root/root 0 2019-04-25 11:33:18 lib/modules/ drwxr-xr-x root/root 0 2019-04-25 11:37:25 lib/modules/4.19.35-plamo64/ drwxr-xr-x root/root 0 2019-04-25 11:36:55 lib/modules/4.19.35-plamo64/kernel/ drwxr-xr-x root/root 0 2019-04-25 11:33:19 lib/modules/4.19.35-plamo64/kernel/arch/ ....
initrd を起動時に読み込ませるには grub.cfg に設定が必要なものの、 付属の grub-mkconfig でgrub.cfgを作れば、 カーネルのバージョンに適合したinitrdイメージを自動的に見つけて登録してくれるので、 特に何もする必要はありません。
grub.cfg(MBRの場合は /boot/grub/grub.cfg, UEFIの場合は/boot/efi/grub/grub.cfg) の該当箇所は、以下のようになります。なお、root=UUID=... の部分は、 環境ごとに異なります。
echo 'Loading Linux 4.19.35_plamo64 ...' linux /boot/vmlinuz-4.19.35_plamo64 root=UUID=47749fa2-16d6-4b5a-bb44-9538e8605ac3 ro net.ifnames=0 quiet echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-4.19.35_plamo64
このgrub.cfgから起動すると、画面に一瞬、以下のような grub の起動メッセージが表示され、
Loading Linux 4.19.35_plamo64 ... Loading initial ramdisk ...
その画面がクリアされると initrd のメッセージが表示され、
mdadm: No arrays found in config file or automatically Successfully mounted device UUID==47749fa2-16d6-4b5a-bb44-9538e8605ac3
その後、init の起動メッセージが表示される、という順番になります。
Init version 2.88 booting * Mounting virtual file systems: /run [OK] * Bring up the loopback interface... [OK] * Setting hostname to plamolinux.linet.jp... [OK] Populating /dev with device nodes...
起動処理はこういうステップで進むはずですが、もし途中で、
"The device XXX, which is supposed to contain the root file system, does not exist. Please fix this problem and exit this shell."
とか
"Could not mount device XXXX Sleeping forever. Please reboot and fix the kernel command line."
みたいなエラーが出て止まってしまう場合は、 何らかの理由で initrd が本来のroot filesystemをマウントできていません。 この種のエラーの多くは環境依存なため手元での再現が難しいものの、 機器構成等を報告いただければ、可能な限り対応します。