私は最新版のArchLinux(2014.06.01)をMacBook Pro 8,1(ハードウェアに関しては15インチ)にOSXでデュアルブートしてインストールしました 公式のインストールガイド しかし、新しくインストールしたシステムを再起動しようとすると、回復シェルに入ります。
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
のちょっとした実験では、root
コマンドのlinux
パラメータに、使用するvmlinuz
ファイルの選択に関する不満があることを示しています。実際、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でパーティションを見つけることができるようですが、最初のRAMディスクが正しくロードされているため、Linuxカーネルだけがパーティションを見つけられないと訴えます(つまり、これはGRUBエラーではありません)。説明された ここ しかし、むしろLinuxエラー)。
補足として、リカバリシェルは非常に制限されており、標準出力は正しく機能していないようです。それにもかかわらず、ls
は機能し、ファイルの一覧表示は基本的な(一時的な)ファイルシステムを示していますが、すべてのディスクデバイスが/dev
にないようです。しかし、これがエラーの一部かどうかはわかりません。
これは似ていますが、 Linuxは起動時にルートファイルシステムを見つけられません と同じではありません。パーティションはext4だったからです。最初から。まったく同じではありませんが、おそらく関連性があります MacBook Pro 7.1でArchLinuxを起動できません - 回復シェルにドロップします しかし、そこにはramfs
シェルの代わりにrootfs
シェルにドロップし、エラーメッセージが表示されます。異なる。
通常のイメージで起動するのではなく、代替バージョンを使用してシステムを起動しました。結局のところ、Linuxはデフォルトのイメージからblock
mkinitcpio
フック(ブロックデバイスを担当)がないためにドライブを検出できませんでした。これは/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"
initramfs
theを再生成するためにmkinitcpio -p linux
を実行すると、問題が恒久的に修正されました。
私は似たような問題に遭遇しましたが、セットアップが異なります。私は仮想マシンでArchLinuxを使っています、そして私のブートローダはsyslinuxです。私はカーネルフックの順番を切り替えるのにあなたのトリックを使いました、しかし私はまだrootfsシェルに終わりました。
私にとっての問題を修正したのは、私のsyslinux.cfg
のAPPEND
行を
APPEND root=UUID=<snip>
に
APPEND root=PARTUUID=<snip>
ルートパーティションがsyslinux.cfg
であると仮定すると、blkid | grep sda1 | awk '{ print $7 }' >> /boot/syslinux/syslinux.cfg
のようなコマンドを使用することによって、PARTUUID
を/dev/sda1
に簡単に追加することができます。
その後、好きなテキストエディタを使って行を適切なスペースに移動することができます。
編集:私は小さなawkスクリプトの列番号が変わるかもしれないことをちょうど認識したので、syslinux.cfg
にそれをパイプする前に出力を見ることをお勧めします