マルチブートシステムをセットアップしています。システムには3つのドライブがあります。マルチブートは、Windows XP、Windows 7、Ubuntuで構成され、すべて最初のドライブにあります。ドライブにはパーティション化されていないスペースがたくさん残っていて、他のOSを追加したり、将来そこにファイルを保存したりするために、それを予約していました。
ある日、パーティションWizardをダウンロードして、Windows 7内から論理NTFSパーティションを作成しましたが、まだパーティション化されていないスペースが残っています。数日後にコンピューターを再起動するまで、すべてがうまくいきました。
今私は得ています:
error: unknown filesystem.
grub rescue>
まず、次のことを試してみて、ヘルプコマンドが見つからないことに驚きました。
help
、?
、man
、--help
、-h
、bash
、cmd
など.
今、私は起動不可能なシステムで立ち往生しています。私はこの問題を調査し始め、人々が通常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 をダウンロードしました。 「推奨される修復(最も頻繁に発生する問題を修復する)」オプションを選択した後、それはトリックを行うように見えました。
以下がgrubを修正しなかった理由を理解できませんでした:
Sudo update-grub
Sudo grub-install /dev/sda
そこで私は boot-repair からの回答に基づいてダウンロードしました GRUB rescueに入力されたコマンドを永続化 投稿。 「推奨される修復(最も頻繁に発生する問題を修復する)」オプションを選択した後、それがトリックを行うように見えました。
また、 Grub Customizer を使用して、ブートエントリの順序をカスタマイズしました。
この問題には別の原因があります。この特定のケースでは、GRUBが何らかの形で破損しており、修復または再インストールする必要がありました。ただし、 Grubレスキューが「ブート修復」でエラー「不明なファイルシステム」で失敗する に示すように、GRUBがインストールされているルートパーティションが破損している可能性もあります。これを修正するには:
これは可能な解決策ですが、ルートパーティションがさらに破損しないように、使用しないでください。コマンドfsck -t ext4 /dev/sda1
を実行すると、このプログラムは破損したファイルシステムでエラーの検索と修復を試みます。 sda1を実際のルートパーティションに置き換えます。 ext4を実際のファイルシステムに置き換えます。ファイルシステムを知る必要があります。そうしないと、パーティションがさらに破損します。詳細については、 破損したファイルシステムの修復 を参照してください。
この質問には答えがありますが、私のために働いた問題を解決する別の方法があります。手順は苦痛なビデオで説明されています Grub Rescue-初心者向けガイド 。要するに、GRUB 2を修復するのではなく、完全に再インストールします。
このビデオは見るのがとてもつらいので、以下の手順をリストします(ビデオを見るのがどれだけ苦痛であるかに関係なく)
mount
コマンドを使用して、パーティションの名前を見つけます。Sudo mkdir /media/ubuntu
。次に、パーティションをそのフォルダにマウントします。 Sudo mount /dev/sdxx /media/ubuntu
ここで、xx
of sdxx
はステップ3で決定されます。ライブCD/USBのルートディレクトリから次のディレクトリをUbuntuのバージョンのルートディレクトリのディレクトリにバインドします。ディレクトリは、dev
proc
およびsys
です。次のコマンドを使用してください。
Sudo mount --bind /dev /media/ubuntu/dev
Sudo mount --bind /sys /media/ubuntu/sys
Sudo mount --bind /proc /media/ubuntu/proc
ルートディレクトリをUbuntuパーティション上のものに変更します。 Sudo chroot /media/ubuntu/
Sudo grub-install /dev/sdx
を実行してくださいそして、それがライブCD/USBを使用してGRUBを修正する方法です。この方法は、YouTubeユーザーcrazytechzoneによって開発されました。
つかいます:
set prefix=(hdX,Y)/boot/grub
。前に決定した値を使用します。set prefix=(hd0,5)/boot/grub
set root=(hdX,Y)
。例:set root=(hd0,5)
insmod normal
。通常のモジュールをロードしてみます。normal
/boot/grub
フォルダーの場所を知るには、基本的にGRUBが必要です。これが機能しない場合は、ブートCDからGRUBインストールを実行することをお勧めします。
面白いことに、私も1時間前に同じ問題を抱えていました!
とにかく、これは私がやったことです。
Ubuntuをロードします。
set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal
あなたのubuntuが6にインストールされているので正しいですか?
実行端末:
Sudo -i *to access root*
grub-install --root-directory=/mnt/ /dev/sda
Sudo update-grub
Sudo grub-install /dev/sda
問題の別の原因は、まれにブートドライブ上のファイルシステムがクラッシュする可能性があることです。他の回答で述べたように、最初にls
コマンドを使用して、GRUBレスキュープロンプトのすべてのドライブ/パーティションを一覧表示しますが、all reportunknown filesystem error。 Ubuntu 16.04(Xenial Xerus)の問題を最終的に修正するには、次のようにファイルシステムを回復しました。
USBスティックから起動します(インストールせずにUbuntuを試してください)
ブートドライブを見つけます(ドライブの容量を確認するか、各パーティションでfsck
を実行します)。
Sudo fdisk -l
ファイルシステムの回復:
Sudo fsck /dev/sdb1
ファイルシステムが修正され、クリーンになったら、ブートドライブからマシンを再起動します。