
vmlinuz
ディレクトリ内のファイルを誤って 1 つ削除してしまいました。ただし、念のため内部/boot
のバックアップを作成しました。/boot
/tmp
その結果、vmlinuz ファイルが見つからないというエラーが発生し、起動できません。そこでライブ USB を使用して起動しましたが、ハード ドライブ (sda5) のディレクトリに入ると、完全に空でした。そのディレクトリに/boot
ファイルをコピーしても、起動できません。/tmp/boot
/boot
これらのファイルを適切なディレクトリに復元するにはどうすればよいですか?
答え1
vmlinuz
Linux カーネル イメージそのものです (z は圧縮されていることを示します)。
現在参照されているカーネルパッケージを再インストールするLinux イメージ ジェネリック(またはあなたのHWEカーネル)そしておそらくLinux 署名済みイメージ汎用UEFI セキュア ブート環境では、問題が解決するはずです。
chroot からカーネルを再インストールする
できれば、同じバージョンのライブ メディアを起動し、インストールのパーティション (Nautilus で実行できます。/media/ubuntu/…
その場合、次のようになります) または/boot
パーティション (これは少し複雑になります) をマウントします。これは、${my_installation}
次の手順で説明します。
/lib/modules/
インストールされた特定のカーネル バージョン( )を調べて${my_installation}/lib/modules/
、見つかった最新バージョン番号を選択します。これは${kernel_ver}
次の手順で参照されます。私のテスト VM では 3.16.0-46 でした。
以前コメントで述べたように、手順はchrootでGrubを再インストールするのと非常に似ているので、引用します。この答え若干の変更を加えます:
その他の必要なものをバインドマウントします。
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "${my_installation}$i"; done
chroot
Ubuntu のインストールに以下を追加します:sudo chroot ${my_installation}
この時点では、ライブ セッションではなくインストール セッションで、root として実行されています。…
カーネルを再インストールします(signed
パッケージは UEFI セキュア ブート用です):
apt-get install --reinstall linux-image-${kernel_ver}-generic linux-signed-image-${kernel_ver}-generic
このカーネルの がまだ見つからない/boot
場合は、ディレクトリを確認してください。手動で生成するには、次を実行します。initrd
mkinitramfs -o /boot/initrd.img-${kernel_ver}-generic ${kernel_ver}-generic
私の例:
mkinitramfs -o /boot/initrd.img-3.16.0-46-generic 3.16.0-46-generic
次に、update-grub
引用した回答のように実行して、「新しい」カーネルと initrd が含まれていることを確認します。
Grub も再インストールする必要がある場合は、残りの手順に従ってください。これらの手順は MBR 用に書かれたものであることに注意してください。UEFI (異なる OS のブートローダーが互いに上書きしてはならない) を使用している場合は、grub-efi-amd64-bin
Grub を再インストールする前に、インストールされていることを確認する必要があります。