Tosainu Lab

ERROR: Unable to find root device 'xxxxxx'で起動しなくなった時の対処法

どうもです。

 

水曜日の朝、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を立ち上げると、

 

 

起動しねーよ

 

諦めて再インストールかなぁとも考えましたが、海外のフォーラムにて「おっ!?」という情報があり、それを参考にいろいろ弄ったところ無事復活させることができたので対処法としてメモしようと思います。

 

[SOLVED] ERROR: Unable to find root device '/dev/sda3' (Page 1) / Kernel & Hardware / Arch Linux Forums

 

準備するもの

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] # exit

cd /

umount /mnt/arch/proc

umount /mnt/arch/sys

umount /mnt/arch/dev

umount /mnt/arch/boot

umount /mnt/arch

reboot

(アンマウントのコマンド、もう少し楽に出来るけど、そこは突っ込まないでください・・・)

 

僕の環境ではこの方法で復活できました。

一時は本当にどうなることかと思いましたが、無事復活してよかったです。