linux – 新鮮な ArchLinux をインストールしたときの “ルートデバイスを見つけることができません”

arch-linux boot grub linux macbook-pro

私は、公式インストールガイドの指示に従って、MacBook Pro 8,1 (15インチ、ハードウェアに関しては重要な場合)のOSXとのデュアルブートに最新バージョンのArchLinux (2014.06.01)をインストールしました。しかし、新しくインストールしたシステムで再起動しようとすると、リカバリーシェルに落ちてしまいます

ERROR: device 'UUID=<snip>' not found. Skipping fsck.
ERROR: Unable to find root device 'UUID=<snip>'.
You are being dropped to a recovery shell
Type 'exit' to try and continue booting
sh: can't access tty: job control turned off
[rootfs /]#

(UUID は入力したくなかったので削除しましたが、ArchLinux がインストールされているパーティションの blkid (インストールディスクから) で与えられたものと同じです)

その他 オンライン ソース によると、これは古い pacman, udev, filesystem, linux パッケージが原因であることを示唆しています。しかし、彼らはこの問題について、新しいインストールではなく、動作中のシステムからカーネルを更新した後にのみ記述しています。インストールディスクを起動した状態で arch-chroot 環境からこれらのパッケージを強制的に再インストールしましたが、状況は変わりませんでした

代わりに、私の grub.cfg で少し実験してみると、vmlinuz ファイルを選択する linux コマンドの root パラメーターに問題があることがわかりました。実際、root=UUID=<snip>root=LABEL=ArchLinuxroot=/dev/sda8 (どちらも ArchLinux がインストールされている場所を示しており、私は以前に別のディストリビューションで 2 番目のバージョンを正常に使用したことがあります) に変更すると、それぞれ Unable to find root device 'LABEL=ArchLinux'Unable to find root device '/dev/sda8' が得られます。さらに、GRUB は UUID でパーティションを見つけることができるようですが、最初の ramdisk が適切にロードされているのに linux カーネルだけが見つからないと文句を言います (つまり、これは こちら で説明されているような GRUB のエラーではなく、むしろ linux のエラーです)

余談ですが、リカバリシェルはひどく制限されており、標準出力は正しく動作しないようです。それにもかかわらず、lsは動作し、ファイルのリストは基本的な(一時的な)ファイルシステムを示していますが、/devからはすべてのディスクデバイスが欠落しているように見えます。しかし、これがエラーの一部なのかどうかはわかりません

これは Linux doesn’t find root file system when booting と似ていますが、同じではありません。また、まったく同じではありませんが、関連性があるのは Unable to boot ArchLinux on Macbook Pro 7.1 – drops to recovery shell ですが、そこでは rootfs シェルではなく ramfs シェルに落ちてしまい、エラーメッセージが異なっています

  37  hlt  2014-06-15


ベストアンサー

通常のイメージで起動するのではなく、フォールバックバージョンを使って、なんとかシステムを起動することができました。結局、デフォルトのイメージに block mkinitcpio フック (ブロックデバイスを担当) がないため、Linux はドライブを検出できませんでした。これは、/etc/mkinitcpio.confautodetect の後に配置されているためです。これを修正するには、ファイルの HOOKS=... 行を blockautodetect の前に来るように変更する必要があります

修正する前に

HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

修正後

HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

mkinitcpio -p linuxを実行してinitramfsを再生すると、問題が永久に修正されました

35  hlt  2014-07-26


私も同じような問題に遭遇しました。仮想マシンで ArchLinux を使っていて、ブートローダは syslinux です。カーネルのフックの順番を切り替える方法についてはあなたのトリックを使いましたが、結局 rootfs-shell になってしまいました

私が問題を修正したのは、私のAPPENDの行をsyslinux.cfgから変更したことです

APPEND root=UUID=<snip>

to

APPEND root=PARTUUID=<snip>

ルートパーティションが/dev/sda1であると仮定して、blkid | grep sda1 | awk '{ print $7 }' >> /boot/syslinux/syslinux.cfgのようなコマンドを使えば、PARTUUIDsyslinux.cfgに追加することが簡単にできます

その後、お好みのテキストエディタを使用して、適切なスペースに行を移動させることができます

EDIT: 小規模なawkスクリプトのカラム番号が異なる可能性があることに気づいたので、syslinux.cfgにパイピングする前に出力を見た方が良いでしょう

1  IlikePepsi  2014-10-22


タイトルとURLをコピーしました