
/dev/sda1
私は(/
)と/dev/sda2
(extended、/dev/sda5
yes、yes swap)/home
にDebianシステムを持っています/dev/sda6
。私はGentooを並列にインストールしたかったので、sda2を最小限に抑え、/dev/sda3
その中にGentooをインストールし、次に/dev/sda4
Gentooとしてインストールしました/home
。
Disk /dev/sda: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xeb362e8f
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 29296639 29294592 14G 83 Linux
/dev/sda2 29298686 1673951231 1644652546 784.2G 5 Extended
/dev/sda3 1673951232 1735391231 61440000 29.3G 83 Linux
/dev/sda4 1735391232 1953523711 218132480 104G 83 Linux
/dev/sda5 29298688 35547135 6248448 3G 82 Linux swap / Solaris
/dev/sda6 35549184 1673949183 1638400000 781.3G 83 Linux
Partition table entries are not in disk order.
現在インストールされているgrub2を使用したかったので、Gentooのマニュアルの「ブートローダ」セクションをスキップしました。/dev/sda1
だからインストールが完了した後、Debianで起動してを実行しましたが、update-grub
Gentooがメニューに正常に追加されました。ただし、起動時にカーネルパニックが発生し、ルートされたデバイスを開くことができないというメッセージが表示されます。
システムテーブルDebian の場合システムテーブルGentoo用。 DebianのようなUUIDを使用するためにGentooのfstabを編集しようとしましたが、成功しませんでした。また、grubでGentooの起動オプションを編集してみました。オリジナル:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Gentoo Base System release 2.2 (on /dev/sda3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@0,msdos3' --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 1c46e4aa-e486-48ba-8f61-1484ed899e1e
else
search --no-floppy --fs-uuid --set=root 1c46e4aa-e486-48ba-8f61-1484ed899e1e
fi
linux /boot/vmlinuz-4.1.12-gentoo root=/dev/sda3
}
submenu 'Advanced options for Gentoo Base System release 2.2 (on /dev/sda3)' $menuentry_id_option 'osprober-gnulinux-advanced-1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
menuentry 'Gentoo Base System release 2.2 (on /dev/sda3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.1.12-gentoo--1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@0,msdos3' --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 1c46e4aa-e486-48ba-8f61-1484ed899e1e
else
search --no-floppy --fs-uuid --set=root 1c46e4aa-e486-48ba-8f61-1484ed899e1e
fi
linux /boot/vmlinuz-4.1.12-gentoo root=/dev/sda3
}
}
### END /etc/grub.d/30_os-prober ###
試してみましたが、set root="/dev/sda3"
正直set root="sda3"
なところ、どういう意味なのかわかりませんが、パニックメッセージに関連しているようです。それでは、ここで何が起こっているのか、どうすればよいですか?/dev/sda
USB経由で接続された外付けハードドライブ(内蔵ハードドライブが破損している)から起動したことは言及する価値があります。エラー/警告なしにGentooがインストールされました。カーネルに何もコンパイルするのを忘れたようではありませんが、可能だと思います... ext4、SCSI、およびUSBサポートが含まれていると確信しています(モジュールではありません)。
答え1
SATAドライバをGentooカーネル(またはモジュール)にコンパイルしていないようです。私が懸念している部分は、添付のスクリーンショットの途中で次のように書かれています。
正しい「root =」オプションを追加してください。使用可能なパーティションは次のとおりです。
ただし、使用可能なパーティションはリストされません。私にとって、Gentooは物理ディスクとまったく通信できません。どのSATAコントローラがあるかわからない場合は、lshw
Debianで実行してみてください。これはカードが何であるかを知らせるだけでなく、カードが使用しているカーネルドライバ(SATAセクションの下の "configuration:driver ="行を探してください)を知らせるので、それをGentooカーネルに追加できます。
答え2
David Kingが言ったように、犯人は行方不明のカーネルドライバである可能性が高いです。 以下は、USB大容量記憶装置が正常に動作するために必要なカーネルオプションのリストです。 gentoo livecd chrootでGentooシステムに入ります。(Gentooのマニュアルにこれについて詳しく説明していることがわかります)。ここでカーネルを再構成して再コンパイルできます。(Gentooマニュアルにもよく説明されています)。 initramfsを作成した場合は、再生成することを忘れないでください。そうしないと、新しくコンパイルされたカーネルとドライバを起動するために使用できなくなります。
答え3
カーネル構成を見ると、initrdなしで最新のシステムを起動するために必要なすべての機能が有効になっているように見えますが、出力にはlshw
ISAブリッジとPentium M 1.4 CPUがあります。
私の考えでは、CONFIG_PATA_MPIIX、ATA_GENERIC、PATA_LEGACYなどのPATAオプションが欠落しているようですが、推測ゲームをせずに次のようにします。
USBドライブを挿入してDebianシステムを起動します。
lsmod
実行のためにカーネル構成(= y)に追加する必要がある他の項目を確認したり、出力を公開したりすると、いくつかのヒントが表示されます。
または、このホームページを利用するか、http://kmuto.jp/debian/hcl/をクリックして結果を貼り付けます。lspci -n
Gentooで一般的にカーネルを設定する方法は次のとおりです。
- ArchLinux USBおよびlsmodの起動
- Slackwareから最新のカーネル設定をコピーします(例:http://mirrors4.kernel.org/slackware/slackware64-current/source/k/config-x86_64/config-generic-4.1.15.x64)
SlackwareはGentooに似ていますしかし、両方ではありません。 systemd(Gentooはデフォルトでは使用されていません)を使用して長期リリースのカーネルバージョンを使用し、設定に満足しています。一般的なものは必要だと思うすべてを=yで構築し、オプションは=mで構築することであり、巨大なものはすべてを=yで構築することです(これはほぼ動作が保証されますがコアが非常に大きくなるでしょう)。 - 以前の構成の作成
- EXT4=y およびその他のファイルシステムモジュールを設定します(何らかの理由で Slackware が必ずアクティブになるわけではありません)。
- Gentooカーネル設定ガイドでモジュールが= yに設定されていることを確認してください。
- lsmod = yを使用して、ALSAおよびWifiモジュールを除くすべてのモジュールを設定します。
- プロセッサの種類と機能 - >プロセッサファミリで正しいプロセッサタイプを選択します。
- インストールを終了します。
それでも動作しない場合、ドライブはDebianでは/dev/sdaを持っていますが、Gentooでは他のもの(おそらく/dev/sdb)を持っているようです。この問題を解決する最も簡単な方法は、/ etc / fstabでUUID =を使用し、カーネルに渡されたブートローダパラメータでPARTUUID =を使用することです。 blkid出力でPARTUUIDを見つけることができます。
答え4
長年、USBデバイスの検索は非同期プロセスでした。すべてのドライバをコンパイルし、スクリーンショットにUSBストレージデバイスが列挙されているように見えますが、USB大容量ストレージデバイスドライバの初期化が完了する前に、カーネルがルートファイルシステムをマウントしようとしているようです。
grub 構成が initramfs ロードを指定していないようです。
Gentooの詳細についてアドバイスすることはできませんが、私のDebianシステムはあなたが正しい答えを見つけるのに役立つのと同じくらい似ていることを願っています。 Debianでは、initramfsスクリプトは必要なブロックデバイスがマウントされるまで起動プロセスを停止します。
私の知る限り、Debianでは、コアinitramfsスクリプトの1つである/scripts/localにudevを起動し、ルートデバイスが列挙されるのを待つのに必要なロジックがあります。具体的には local_device_setup() 関数をご覧ください。ここ。
Gentooにも同様のシステムがあるようですが?