マイコンピュータにはArch Linuxがインストールされていますが、/dev/sda5
他のパーティション()にはSlackwareもインストールされています。
/etc/grub.d/40_custom
起動時にメニューリストにSlackwareを追加するために、ファイルを介してArch LinuxインストールでGrub2を設定したいと思います。
私は長い間オンラインで検索しましたが、SlackwareにGrubをインストールする必要があるか、設定ファイルに正確に何を入れるべきかについての答えが見つかりませんでした。
grubのドキュメント全体を読むのが長すぎます。
以下を試しましたが、Slackwareの読み込み中に「チャンクが見つかりません」などのカーネルパニックが発生しました。
menuentry "Slackware 14.0" {
set root='hd0,msdos5'
echo 'Loading Linux Slackware 14.0 ...'
linux /boot/vmlinuz root=UUID=xxxXXxx-xx-XXX... ro acpi=off
}
答え1
私のUbuntuシステムで次を実行して、新しくインストールされたgrub-mkconfig
パーティションを見つけます。手動変更なしで以下を実行できます。
grub-mkconfig | diff - /boot/grub/grub.cfg
Arch Linuxが同じことを実行できるかどうかを見てみましょう。その場合は、次を実行します。
grub-mkconfig -o /boot/grub/grub.cfg
答え2
initrd行がないため、このエラーが表示されますroot=UUID=...
。カーネルには組み込みサポートはありませんroot=UUID=...
。これはinitrdによって処理されるべきです。
- したがって、initrd行を追加するだけです。通常、インストール中にinitrdを作成する必要があります。
それ以外の場合(Slackware)、Linuxのインストールに問題があるため、それを救出する必要があると思います。オペレーティングシステムのインストールメディアには非常に便利な回復システムが含まれていることがよくあります。オペレーティングシステムをインストールして維持するときは、このような回復システムを確保することをお勧めします。 (まだ構造システムの使い方に自信がない場合は、インターネットにアクセスできることを確認してください。)
- またはUUIDを使用しない可能性があります。代わりに、ルートファイルシステムのデバイスノードを直接指定してください
root=/dev/sda1
。たとえば、システムの起動/修復が完了したら、UUIDを再挿入できます。
あなたの意見で興味深い循環依存関係について言及しました。プロセスがまったく同じカーネルを起動する必要がある場合は、initrdをどのように生成しますか?しかし、私はこの要件が意味がないと思います。 (インストールプログラム、カーネルのアップグレードなどを検討してください。)これは、一致する回復システムで発生した場合、または最新の回復システムからインストールにchrootingした場合に発生する必要があります。
あなたは考えている必要がありますmkinitrd_command_generator.sh
。特定のコアに対してこれを呼び出す例を別の場所で見ました。
/usr/share/mkinitrd/mkinitrd_command_generator.sh /boot/vmlinuz-generic-2.6.37.6
うまくいけば、これは少し役に立たないので、これは現在カーネルに限定されないことを意味します。