web-dev-qa-db-ja.com

/ bootフォルダを誤って削除して再起動した

ファイルシステムから誤って/ bootフォルダーを削除して再起動しましたが、ここで取得できるのはこれだけです。

error: file '/boot/grub/i368-pc/linux.mod' not found.

grub rescue>
16
Imad Nouari

おっとっと!

ここでは何をすべきかです:

  1. ライブディストリビューションを起動します。これは、Ubuntuインストールディスクまたは Knoppix などの別のディスクにすることができます。

  2. ルートファイルシステムをインストールしたドライブ/パーティションを見つけます。これを行うには、ターミナルを開いてSudo parted -lまたはSudo fdisk -lを実行します。わからない場合は、 edit で質問して、出力を追加します。

  3. 最後のステップで見つけたルートパーティションが/dev/sdxyxは別の文字で、yは数字である必要があります)であると想定して、ターミナルで次のコマンドを実行します。 :

    mkdir mnt
    Sudo mount /dev/sdxy mnt
    Sudo mount --bind /dev /mnt/dev
    Sudo mount --bind /proc /mnt/proc
    Sudo mount --bind /sys /mnt/sys
    Sudo chroot mnt
    
  4. これでchroot環境内に移動しました。つまり、ここでコマンドを実行することは、インストールされたシステムでコマンドを実行することと同じです。最初に行うことは、GRUB2をデバイスに再インストールして、正しいファイルが/bootフォルダーにコピーされるようにすることです。これを行うには、ルートパーティションが存在するドライブ(つまり、番号(y)を削除した/dev/sdxy)を使用して次のコマンドを実行します。

    grub-install /dev/sdx
    
  5. ここで、インストールしたパッケージのうち、ブートディレクトリにファイルがあるものを見つけて再インストールする必要があります。これにより、特に削除されたカーネルイメージが置き換えられます。パッケージを見つけるコマンドは次のとおりです。

    dpkg -S /boot
    

    そしてそれらを再インストールするには:

    apt-get --reinstall install ...
    

    ここで、...は、最初のコマンドからのパッケージの名前に置き換えられます。コンマは含めず、パッケージ名をスペースで区切ってください。

    この手順ではおそらくインターネットアクセスが必要になります(パッケージが既にキャッシュにある場合を除く)。問題がある場合は接続されていることを確認してください。

  6. カーネルを削除して再インストールしたので、これによりGRUB2の更新が自動的にトリガーされます。しかし、そうでない場合に備えて、次のコマンドを実行できます。

    update-grub
    
  7. 再起動すると、問題が修正されます。最後に私が同様のことをしたときに発生した問題の1つは、update-grubのバグが原因でchrootで実行したときにWindowsがos-proberで見つからない場所にインストールされることです。これが問題である場合は、修復したシステムでSudo update-grubをもう一度実行してください。

36
Graeme