私は、公式インストールガイドの指示に従って、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=ArchLinux
や root=/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.conf
の autodetect
の後に配置されているためです。これを修正するには、ファイルの HOOKS=...
行を block
が autodetect
の前に来るように変更する必要があります
修正する前に
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
のようなコマンドを使えば、PARTUUID
をsyslinux.cfg
に追加することが簡単にできます
その後、お好みのテキストエディタを使用して、適切なスペースに行を移動させることができます
EDIT: 小規模なawkスクリプトのカラム番号が異なる可能性があることに気づいたので、syslinux.cfg
にパイピングする前に出力を見た方が良いでしょう
1 IlikePepsi 2014-10-22