ERROR: Unable to find root device 'xxxxxx'で起動しなくなった時の対処法
- 2013/07/27
- Arch Linux
どうもです。
水曜日の朝、Chrome v28とかmozcの更新があったので久しぶりにメイン機のArchのソフトウェアアップデートをかけたのですが・・・
(*/*) checking for file conflicts error: failed to commit transaction (conflicting files) filesystem: /bin exists in filesystem filesystem: /sbin exists in filesystem filesystem: /usr/sbin exists in filesystem Errors occurred, no packages were upgraded.
とまぁ、エラーがあって更新失敗したわけです。
とりあえず対処として、filesystemパッケージ以外を更新した後、Forceオプションを付けて更新させました。
その結果なのか知りませんが、次にArchを立ち上げると、
起動しねーよ
諦めて再インストールかなぁとも考えましたが、海外のフォーラムにて「おっ!?」という情報があり、それを参考にいろいろ弄ったところ無事復活させることができたので対処法としてメモしようと思います。
準備するもの
Arch Linuxのインストールディスク(chroot使えるLiveCDなら何でもいけるかも)
「何としてでも再インストールは避けたい」と思う気持ち
方法
Arch LinuxのインストールディスクでPCを起動、
もしシステムにudevやmkinitcpioをインストールしていない場合は、ネットワークの設定を済ませておきます。
適当なマウントポイントを作成し、起動しなくなったシステムのパーティションをマウントさせます。
僕の場合、/mntにarchフォルダを作成、/のsda6、/bootのsda5をマウントさせました。
# mkdir /mnt # mkdir /mnt/arch # mount /dev/sda6 /mnt/arch # mount /dev/sda5 /mnt/arch/boot
次に、chrootさせるために必要なproc等をマウント、そしてchrootします。
# cd /mnt/arch # mount -t proc proc proc/ # mount -t sysfs sys sys/ # mount -o bind /dev dev/ # chroot .
chrootしたら、initramfsをmkinitcpioを使って再生成します。
[chroot] # pacman -Syu udev mkinitcpio ↑mkinitcpio等をインストールしていない場合[chroot] # mkinitcpio -p linux
chrootから抜けマウントしたドライブをアンマウント、再起動させます。
[chroot] # exitcd /
umount /mnt/arch/proc
umount /mnt/arch/sys
umount /mnt/arch/dev
umount /mnt/arch/boot
umount /mnt/arch
reboot
(アンマウントのコマンド、もう少し楽に出来るけど、そこは突っ込まないでください・・・)
僕の環境ではこの方法で復活できました。
一時は本当にどうなることかと思いましたが、無事復活してよかったです。