web-dev-qa-db-ja.com

GRUBレスキュー-エラー:不明なファイルシステム

マルチブートシステムをセットアップしています。システムには3つのドライブがあります。マルチブートは、Windows XP、Windows 7、Ubuntuで構成され、すべて最初のドライブにあります。ドライブにはパーティション化されていないスペースがたくさん残っていて、他のOSを追加したり、将来そこにファイルを保存したりするために、それを予約していました。

ある日、パーティションWizardをダウンロードして、Windows 7内から論理NTFSパーティションを作成しましたが、まだパーティション化されていないスペースが残っています。数日後にコンピューターを再起動するまで、すべてがうまくいきました。

今私は得ています:

error: unknown filesystem.  
grub rescue>

まず、次のことを試してみて、ヘルプコマンドが見つからないことに驚きました。

help?man--help-hbashcmdなど.

今、私は起動不可能なシステムで立ち往生しています。私はこの問題を調査し始め、人々が通常Live CDから起動してそこから問題を修正することを推奨していることに気付きました。 Live CDを使用せずにGRUBレスキュー内からこの問題を修正する方法はありますか?

UPDATE

GRUB rescueに入力されたコマンドを永続化 の手順に従うことで、initramfsプロンプトを起動することができました。しかし、それ以上の場所ではありません。

grub rescue のマニュアルを読むまでは、lsコマンドを使用してドライブとパーティションを見ることができました。最初のハードドライブについては、次のように表示されます。
(hd0)(hd0、msdos6)(hd0、msdos5)(hd0、msdos2)(hd0、msdos1)

ls (hd0,msdos6)/にはディレクトリがリストされるため、(hd0、msdos6)にはLinuxが含まれていることがわかりました。その他は「エラー:不明なファイルシステム」を与えます。

更新2

次のコマンドを実行すると、ブートメニューが表示され、Windows 7とUbuntuを起動できますが、再起動するとこれらの手順を繰り返す必要があります。

ls
ls (hd0,msdos6)/
set root=(hd0,msdos6)
ls /
set prefix=(hd0,msdos6)/boot/grub
insmod /boot/grub/linux.mod
normal

更新3

Shashank Singhに感謝します。あなたの指示で、私は次のステップを簡略化しました。 msdos6を6に置き換えることができ、insmod normalの代わりにinsmod /boot/grub/linux.modを実行できることをあなたから学びました。ここで、OSを起動せずに、grub自体からこの設定を保存する方法を理解する必要があります。

set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal

更新4

まあ、それはLinuxを起動するための要件のようです。 Ubuntuを起動した後、 manual で説明されている次の手順を実行しました。

Sudo update-grub
Sudo grub-install /dev/sda

これは問題を解決しませんでした。私はまだgrubレスキュープロンプトを取得します。永続的に修正するには何をする必要がありますか?

また、いくつかのコマンドでは、hd0のようなドライブ番号を/ dev/sdaのようなドライブ文字に変換する必要があることも学びました。 hd1はsdb、hd2はsdcなどとなります。 grubに(hd0、msdos6)としてリストされているパーティションは、/ dev/sda6に変換されます。

UPDATE 5

以下がgrubを修正しなかった理由を理解できませんでした:

Sudo update-grub
Sudo grub-install /dev/sda

そこで私は https://help.ubuntu.com/community/Boot-Repair 投稿からの回答に基づいて boot-repair をダウンロードしました。 「推奨される修復(最も頻繁に発生する問題を修復する)」オプションを選択した後、それはトリックを行うように見えました。

57
user53817

以下がgrubを修正しなかった理由を理解できませんでした:

Sudo update-grub
Sudo grub-install /dev/sda

そこで私は boot-repair からの回答に基づいてダウンロードしました GRUB rescueに入力されたコマンドを永続化 投稿。 「推奨される修復(最も頻繁に発生する問題を修復する)」オプションを選択した後、それがトリックを行うように見えました。

また、 Grub Customizer を使用して、ブートエントリの順序をカスタマイズしました。

23
user53817

この問題には別の原因があります。この特定のケースでは、GRUBが何らかの形で破損しており、修復または再インストールする必要がありました。ただし、 Grubレスキューが「ブート修復」でエラー「不明なファイルシステム」で失敗する に示すように、GRUBがインストールされているルートパーティションが破損している可能性もあります。これを修正するには:

これは可能な解決策ですが、ルートパーティションがさらに破損しないように、使用しないでください。コマンドfsck -t ext4 /dev/sda1を実行すると、このプログラムは破損したファイルシステムでエラーの検索と修復を試みます。 sda1を実際のルートパーティションに置き換えます。 ext4を実際のファイルシステムに置き換えます。ファイルシステムを知る必要があります。そうしないと、パーティションがさらに破損します。詳細については、 破損したファイルシステムの修復 を参照してください。


この質問には答えがありますが、私のために働いた問題を解決する別の方法があります。手順は苦痛なビデオで説明されています Grub Rescue-初心者向けガイド 。要するに、GRUB 2を修復するのではなく、完全に再インストールします。

このビデオは見るのがとてもつらいので、以下の手順をリストします(ビデオを見るのがどれだけ苦痛であるかに関係なく)

  1. Ubuntuのライブセッションを開始します。ビデオではライブCDを使用しますが、ライブUSBを使用しました。ライブUSBには、ハードドライブと同じバージョンのUbuntuが含まれていることを確認しました。
  2. ルートパーティションがマウントされた場所を見つけます。ビデオでは、ユーザーはNautilusを使用して、マウントされた各ドライブをナビゲートします。数字と文字の長い文字列でマウントされました。この場合は、次の手順に従ってパーティションを再マウントしてください。それ以外の場合は、手順5に進みます。
  3. で端末を起動します Ctrl + Alt + T mountコマンドを使用して、パーティションの名前を見つけます。
  4. パーティションをマウントします。メディアフォルダーに新しいフォルダーを作成します。 Sudo mkdir /media/ubuntu。次に、パーティションをそのフォルダにマウントします。 Sudo mount /dev/sdxx /media/ubuntuここで、xx of sdxxはステップ3で決定されます。
  5. ライブCD/USBのルートディレクトリから次のディレクトリをUbuntuのバージョンのルートディレクトリのディレクトリにバインドします。ディレクトリは、devprocおよびsysです。次のコマンドを使用してください。

    Sudo mount --bind /dev /media/ubuntu/dev
    Sudo mount --bind /sys /media/ubuntu/sys
    Sudo mount --bind /proc /media/ubuntu/proc
    
  6. ルートディレクトリをUbuntuパーティション上のものに変更します。 Sudo chroot /media/ubuntu/

  7. 上記を実行した後、GRUB 2を再度インストールすると、ライブCD/USBのルートディレクトリではなく、Ubuntuのディストリビューションのルートディレクトリにインストールされます。それでは、Sudo grub-install /dev/sdxを実行してください

そして、それがライブCD/USBを使用してGRUBを修正する方法です。この方法は、YouTubeユーザーcrazytechzoneによって開発されました。

7
Nil

つかいます:

  1. set prefix=(hdX,Y)/boot/grub。前に決定した値を使用します。
    例:Ubuntuシステムがsda5にある場合、次を入力します。
    set prefix=(hd0,5)/boot/grub
  2. set root=(hdX,Y)。例:set root=(hd0,5)
  3. insmod normal。通常のモジュールをロードしてみます。
  4. normal

/boot/grubフォルダーの場所を知るには、基本的にGRUBが必要です。これが機能しない場合は、ブートCDからGRUBインストールを実行することをお勧めします。

5
Shashank Singh

面白いことに、私も1時間前に同じ問題を抱えていました!

とにかく、これは私がやったことです。

  1. Ubuntuをロードします。

    set root=(hd0,6)
    set prefix=(hd0,6)/boot/grub
    insmod normal
    normal
    

    あなたのubuntuが6にインストールされているので正しいですか?

  2. 実行端末:

    Sudo -i *to access root*
    grub-install --root-directory=/mnt/ /dev/sda
    Sudo update-grub
    Sudo grub-install /dev/sda
    
3
Francis

問題の別の原因は、まれにブートドライブ上のファイルシステムがクラッシュする可能性があることです。他の回答で述べたように、最初にlsコマンドを使用して、GRUBレスキュープロンプトのすべてのドライブ/パーティションを一覧表示しますが、all reportunknown filesystem error。 Ubuntu 16.04(Xenial Xerus)の問題を最終的に修正するには、次のようにファイルシステムを回復しました。

  1. USBスティックから起動します(インストールせずにUbuntuを試してください)

  2. ブートドライブを見つけます(ドライブの容量を確認するか、各パーティションでfsckを実行します)。

    Sudo fdisk -l
    
  3. ファイルシステムの回復:

    Sudo fsck /dev/sdb1
    
  4. ファイルシステムが修正され、クリーンになったら、ブートドライブからマシンを再起動します。

0
user84246