Linuxがインストールされた産業用PCがあります。
これらのPCには2つのバージョンがあり、バージョンごとに少し異なるマザーボードがあり、PC内部のディスクはマザーボードの種類によってhdaまたはhdcと見なされます。
これまでは、次のように2種類のディスクブートのうちの1つを選択するために2つのエントリをgrub menu.lstに入れました。今後の再起動のために記憶されます。
default = 0
timeout = 9
title Linux 2.4.34 ( hda )
root (hd0,0)
kernel /boot/vmlinuz-2.4.34 ro root=/dev/hda1 console=ttyS0,9600 console=tty0 apm=off
title Linux 2.4.34 ( hdc )
root (hd0,0)
kernel /boot/vmlinuz-2.4.34 ro root=/dev/hdc1 console=ttyS0,9600 console=tty0 apm=off
ただし、ほとんどの場合、このタイプのPCは画面やキーボードなしで提供され、管理者が起動オプションを選択できないため、カーネルをロードする前にPCが正しい起動デバイスを確認できるようにする方法を探しています。
実際、ルートデバイスの正しい値(例:root = / dev / hda1またはroot = / dev / hdc1)
問題は、これが可能かどうかどうかわからないということだ。
このトピックについて提案する人はいますか?
答え1
Mattの答えが役に立ちます。私は別の可能性を指摘したいと思います:initramfs / initrdを使用することです。
rootfsを見つけるためにいくつかのコードでinitrdを送ることができます(initramfsは2.4以降ですが、2.4にはinitrdが必要です)。 initrdの利点ははい当時はLinuxが稼働していました。たとえば、ルートファイルシステムを検索するシェルスクリプトを作成できます。見つかったら、マウントしてivot_rootをマウントしてから/ sbin / initを実行できます。
また、他の利点も得ることができる。たとえば、ハードドライブやその他の起動に重要なデバイスを特定するために、異なるボード(現在または将来)から異なるモジュールをロードする必要がある場合にこれを行うことができます。
また、ここで役に立つ可能性のあるさまざまな回復ツールを配置することもできます。
(最新のLinuxディストリビューションでは、root =オプションは実際にはinitramfsによって処理されます。)