2014年11月3日月曜日

Arch Linuxが起動しない (can't boot Arch Linux)

いつも通りpacman -Syuでアップデートし、OSを再起動したらArch Linuxが起動しなくなった。症状としては、GRUBが起動した後、読み込むカーネルを選択するが、以下のメッセージが表示されてOSが起動されなくなった。
warning: /lib/modules/3.17.1-1-ARCH/modules.devname not found -- ignoring
ERROR: Unable to find root device 'UUID of root device'.
You are being dropped to a recovery shell
        Type 'exit' to try continue booting
sh: can't access tty; job control turned off
[rootfs /]#

カーネルのダウングレードとか試したが、結局udev (systemd)とmkinitcpioの再インストールとカーネルのイメージを作りなおすことで解決。Arch Linuxには、よくある症状っぽい。以下、修復手順。



Live CDを作成
Arch Linuxの公式サイトからOSをダンロードして、CDなどにイメージとして書き込む。書き込みソフトはBraseroなどを使うと簡単。「イメージとして書き込む」を選択して、OSのイメージファイルを選択して、書き込み開始。





Live CDからArch Linuxの起動
Live CDをセットして、BiosからCDをブートしてx86_64のArch Linuxを起動する。



起動しなくなったLinuxが存在するrootパーティションをマウントする。例えば/mnt/archにマウントする。
# mkdir /mnt/arch
# mount /dev/sda3 /mnt/arch

/bootや/varが別のパーティションに存在する場合は、マウントする。自分の環境では、/bootが/dev/sda2に存在するので、
# mount /dev/sda2 /mnt/arch/boot

さらに、APIファイルシステムをマウントする。
# cd /mnt/arch
# mount -t proc proc proc/
# mount --rbind /sys sys/
# mount --rbind /dev dev/

ファイルシステムのマウントができたら、chrootする。
# chroot /mnt/arch /bin/bash

必要であれば、dhcpdを起動する。
# dhcpcd eth0 または、 # dhcpd enp3s0

カーネルイメージの作り直し
chrootができたら、カーネルイメージの作り直す。イメージを作る前に、udevとmkinitcpioを再インストールする。
# pacman -Syy
# pacman -Syu
# pacman -S udev #これでsystemdが再インストールされる。
# pacman -S mkinitcpio
# pacman -S linux
# mkinitcpio -p linux

カーネルイメージの作り直しが成功したら、chroot環境を抜けだし再起動する。
# exit
# cd /
# umount --recursive /mnt/arch/
# reboot

自分の環境では、これでOSが起動するようになった。Arch Linuxが起動しなくなるのは、アップデートの時に、カーネルイメージがうまくできなかったり、udevとかmkinitcpioがうまくアップデートされなかった時に起きるらしい。


参考:
[1]Change root
[2]Unable to find root device - after updating
[3]Repairing Broken Arch Linux

スポンサーリンク

スポンサーリンク

0 件のコメント:

コメントを投稿