あれこれ備忘録@はてなブログ

勉強したことやニュースや出来事を備忘録として書いていきます

このブログには広告が含まれます

カーネルイメージのエラーで起動しなくなった場合試すこと

3.19.0-26だとAMDの一部でLinuxが起動しなくなります。

 

arekorebibouroku.hateblo.jp

 

記事ではいろいろ試行錯誤していますが、結局の所、原因は記事の最後にも書いてあるようにlinux-image-3.19.0-26にアップデートされてしまうとfglrx関係がビルドできずにXでエラーが出て起動できなくなるのです。

 

古いカーネルイメージが残っている場合は、GRUB起動画面で古いカーネルイメージを指定して起動することでXが起動できるでしょう。

 

古いカーネルイメージが無い場合、また古いカーネルイメージで起動できた場合でも3.19.0-26を消さなくてはいけません。

 

古いカーネルイメージで起動できた時には端末(ターミナル)を起動します。

 

Xが起動できなかった場合は、Ctrl + Alt + F1キーを押すなどしてCUI画面に切り替えてログインした状態にします。

 

sudo apt-get purge linux-3.19.0-26-generic linux-headers-3.19.0-26-generic

 

linux-image-extra-3.19.0-26やlinux-signed-image-3.19.0-26-genericなどもインストールされているかも知れませんが、一緒に削除されるのではないかと思います。

 

古いイメージがなくなっていた場合、これでは起動できなくなるので、これを試す前に古いカーネルイメージをインストールしておく必要があります。

 

sudo apt-get install linux-3.19.0-25-generic linux-headers-3.19.0-25-generic linux-image-extra-3.19.0-25-generic

 

あたりで良いと思います。一行で書いてください。

 

ascii.jp

 

ここに書いてありますが、通常はlinux-image-genericと言った形でインストールされていて、これだと最新のカーネルが出るたびにアップデートされます。

 

しかし、それでエラーが出てしまっているのでバージョンを指定してインストールするしかありません。

 

当然ですが、今後自動でアップデートされなくなってしまうので、問題がなくなったかどうか確認して手動でインストールするか、改めてlinux-image-genericと入力してインストールすることになるのだと思います。

 

トラブルがあったあたりに、3.19.0-27が出ていたのですが、これでもうまくいってませんでした。

 

解決されるのにもう少し時間がかかるのではないでしょうか?

 

それにしてもこの問題について、日本語の記事が全然ありません。

 

他の人はどうしているのでしょうか?

 

AMDのグラフィックボードが使えなくなっているけれど、Intelオンボードに切り替わっていて気づいていないとかあるのでしょうかね?

 

15.04にアップグレードしている人が少ないからかも知れませんね。

 

これで一度は解決したのですが、起動時のちょっとした不具合を癒すためにBoot Repairを使った際に誤った設定(本当は誤ったとも言えないのですが、これを選ぶとハングしてしまいBoot Repairが終了しなくなる)をしてしまって再び起動しなくなってしまいました。

 

arekorebibouroku.hateblo.jp

 

この記事の最後にあるBoot Repairの注意点です。

 

これをしてしまって起動できなくなってしまった場合、UbuntuのLiveCDイメージなどで起動してchrootでPCのルートディレクトリに入り、カーネルイメージをインストールしなおさなくてはいけません。

 

askubuntu.com

 

最初、上に書かれている方法を試していたのですが、最後に書かれている方法を使うほうが良いようです。

 

sudo mount /dev/sda2 /mnt
sudo cp /etc/resolv.conf /mnt/etc/
sudo cp /etc/hosts /mnt/etc/
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

 

 

/dev/sda2に当たる部分はPC内でUbuntuがインストールされている場所です。

 

/mntにマウントする必要はありませんが、他へマウントする場合にはmkdirを使って自分でディレクトリを作ってください。

 

apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub

 

今回の場合は古いイメージをインストールするのでupdateはしなくても良いと思います。

 

linux-image2.6...の部分は当然、linux-image-3.19.0-25-genericです。

 

この他、最初の方に書いたようにlinux-headers-3.19.0-25-genericなどもインストールすると良いと思います。

 

3.19.0-26を消すことも忘れずに。

 

rm /etc/resolv.conf
rm /etc/hosts
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc # if this doesn't work try umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount /mnt

 

後処理は大切です。これをしないとPC用の設定が書き換えられたままになってしまいます。

 

例えば /etc/resolv.confは消さないとPCで起動できるようになってもインターネットに接続できなくなるでしょう。

 

Ubuntuの仕様が変わっているせいか、Network Managerがインストールされているせいかわかりませんが、Boot Repairを使うと正常に処理が完了できてもresolv.confの問題が起きてネットに接続できなくなる場合もあります。

 

dnsmasq[2449]: /etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf

NetworkManager[1482]: /etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf

 

あたりがログに出ているかも知れません。

 

その場合は

 

sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

sudo resolvconf -u

 

とすると良いようです。

 

うちのマシンでは、これで何とか元に戻りました。

 

一週間くらい前の出来事ですが、なかなか記事にする気力がなくて先延ばしになっていました。

 

忘れてしまうと困るので書いておきます。

 

追記

ここに書かれてあるようにfglrx-updatesでfglrx関係をアップデートしたあとに新しいカーネルをインストールすれば問題なくなるようです。

askubuntu.com

 

私はAMDからドライバをダウンロードしてインストールしているので駄目だったんですね。