カーネルが無くなって起動できなくなったUbuntuに、カーネルをインストールする方法

  • 9
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Ubuntuで間違えてカーネルすべて消してしまうことがたまに起こります。
カーネルを消してしまえば、grubからも起動できません。
そこで、Ubuntuのインストールディスクの機能を使って、カーネルを再インストールします。

環境

今回試す環境はVirtualBox上のUbuntu Server 14.04.3で、apt-getからlinux-imageと名前のつくパッケージすべてを削除した状態です。
また、今回はインストール先のパーティションはlvmになっているので、通常の物理パーテーションのみとは少しだけ違います。

この状態で起動すると、grub上からはMemory testしか、選択できない状態になっています。

ubuntu-crash-2.png

Rescue a broken system

OSが動かない状態では、カーネルを再インストールすることは出来ません。
そこで、Ubuntu Serverのインストールディスクを使用します。

Ubuntu Serverのインストールディスクをブートさせ、言語選択をEnglishにした時、下のような画面になります。

ubuntu-cdboot.png

この画面から、"Rescue a broken system"を選択します。

その後、言語や地域、キーボードのレイアウト、OSの名前などシステムの設定を要求されますので適当に設定します。
ある程度まで設定すると、下のような画面になります。

ubuntu-rescue-deviceselect.png

この画面は、修復したいOSのパーテーションの選択です。今回の環境ではlvmでパーテーションを区切っているので、"/dev/ubuntu-vg/root"を選択します。
選択後に"Mount separate /boot partition?"と聞かれるのでYesを選択。

次に下のような画面が表示されます。

ubuntu-rescue-operations.png

ここで、"Excute a shell in /dev/ubuntu-vg/root"を選択します。
これでOSを動かせる状態になります。

OSの操作

OSを動かせる状態ではありますが、まだカーネルはインストールされていません。
なので、カーネルのパッケージをインストールします。

まず、カーネルをインストールする前にしなければいけないことがあります。
この状態だと、DNSによる名前解決ができません。名前解決が出来ないと、パッケージのインストールは出来ません。
どうやら、/run以下のファイルが生成されていないため、/etc/resolv.confのシンボリックリンク先の/run/resolvconf/resolv.confが存在しない状態になっており、ネームサーバの設定が読み込まれない状態みたいです。

なので、以下のコマンドを打ちます。

$ mkdir /run/resolvconf/
$ echo nameserver 8.8.8.8 > /run/resolvconf/resolv.conf

こうしたことで、名前解決ができるようになりました。

次に、カーネルとlvmのパッケージのインストールをします。
以下のコマンドを打ちます。

$ apt-get update
$ apt-get install linux-image-generic lvm2

以上で、カーネルは見事に復活しました。あとは再起動するだけです。