Apt-get updateの後; Kali Linux VMでapt-getのアップグレードが正常に終了し、一部のインストールを完了するために再起動し、GRUBレスキューモードに移行しました。
救急時>
ls、次を返します:
(hd0) (hd0,msdos1) (hd0,msdos5)
set、次を返します:
cmdpath=(hd0)
prefix=(hd0,msdos1)/boot/grub
root=hd0,msdos1
私はls on(hd0)/ boot、(hd0、msdos1)/ boot、(hd0、msdos5)/ bootを実行し、(hd0、msdos1)でのみブート可能なイメージの結果を確認しました
insmod linux、次のGRUBエラーを返します:
symbol 'grub_file_filters' not found
Grubがどこを探しているかを確認したかったinsmod kali返された:
/boot/grub/i386-pc/kali.mod not found
したがって、エラーが発生する前にLinuxモジュールが見つかったようです。
調査の結果、このエラーはファイルシステム/ USBデバイスに関連していることがわかりましたが、これは仮想イメージであるため(そして私はVirtualBoxを使用しているため)、修正方法がわかりません。
最初から再インストールしても問題ありませんが、このエラーとそれが何を参照しているか、どのように解決できるかについて興味があります。
洞察をありがとう
追記:これは、VMを起動した瞬間からの画面の出力で、上記のlsコマンドのいくつかを実行した後です。
error: symbol ‘grub_file_filters’ not found.
Entering rescue mode...
grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos1)
grub rescue> ls (hd0)
(hd0): Filesystem is unknown.
grub rescue> ls (hd0,msdos5)
(hd0,msdos5): Filesystem is unknown.
grub rescue> ls (hd0,msdos1)
(hd0,msdos1): Filesystem is ext2.
grub rescue> ls (hd0)/boot
error: unknown filesystem
grub rescue> ls (hd0,msdos5)/boot
error: unknown filesystem
grub rescue> ls (hd0,msdos1)/boot
./ . ./ System.map-4.18.0-kali2-AMD64 config-4.18.0-kali2-AMD64
initrd.img—4.18.0-kali2-AMD64 vmlinuz-4.18.0-kali2-AMD64
grub/ config-4.19.0-kali5-AMD64 vmlinuz-4.19.0-kali5-AMD64
System.map-4.19.0-kali5-AMD64 initrd.img-4.19.0-kali5-AMD64
grub rescue>
OSXで私にとってうまくいったのは、Daniel Simonの回答とddburrjrのコメントを組み合わせたものです。
GRUBインストールがArchLinuxで更新された後、手動で作成したgrubイメージを(grub-mkimageコマンドを使用して)起動しようとしたときに、同様の問題が発生しました。私の場合、再インストールGRUB/bootパーティションに問題を解決しました。
OS全体が起動しないため、現在のブートローダーのインストールのバックアップを作成した後(たとえば、元の構成ファイルを確実に保持するため)、Kaliのライブイメージを起動し、そこからブートローダーを再インストールすることをお勧めします。
問題が発生した理由として考えられるのは、モジュールGRUBロードしようとしたモジュールが前のバージョンのGRUBに属しているのに、イメージがそうではないためです。
手順:
1。 Kali Linuxの公式Webページから新しいイメージをダウンロードしてください。
2。 VirtualBoxを起動し、Kali Linux仮想マシンの設定を開きます。
2.1ダウンロードしたISOイメージを仮想CDとして「ストレージページ」に追加します。
2.2「システム」タブで起動順序を変更して、VMが最初に光学式から起動するようにします。
3。仮想マシンを起動し、ライブモードでイメージを起動します。 4.ブートパーティションをフォルダー(/ mntなど)にマウントし、grubフォルダーを別の場所にコピーします。ブートパーティションがない場合、ファイルはブートフォルダー内のメインパーティションにある必要があります。この場合、メインパーティションをマウントし、手順5と6をスキップします。
5。ブートパーティションを再度マウント解除し、メインパーティション(/ home、/ etc、/ boot、...フォルダーを使用)をそのポイントにマウントします。
6。メインパーティションのマウントポイントの下にある/ bootフォルダにブートパーティションを再度マウントします。構造は次のようになります。
/mnt/ (mount folder of main partition)
etc/
home/
boot/ (mount folder of boot partition)
grub/
(other boot files)
(other folders)
chroot
コマンドを使用して、ルートをマウントされたOSファイルに変更します。grub-install /dev/sdX
コマンドを使用してgrubを再インストールします。Xは、Kali Linuxがインストールされているデバイスの記述子です。ルートをインストール済みのOSに変更したため、--boot-directory
パラメータを指定する必要はありません。別のパラメーターを指定する必要がある場合は、grub-installコマンドのマンページを参照してください。grub-mkconfig -o /boot/grub/grub.cfg
を実行して、grubの新しい構成ファイルを作成します。このコマンドにより、Kali Linuxのインストールが検出されます。コマンドがインストールされていないか見つからない場合は、最初にSudo
で実行してみてください。それでも見つからない場合は、apt-get install [name]
でインストールしてみてください。
重要な注意:
現在私は(前述のように)ArchLinuxを使用しているため、不明なセットアップで別のディストリビューションでGRUBを再インストールする方法に関する詳細なマニュアルを提供することは困難です。
これらのコマンドを実行する前に、使用したコマンドについて少し説明して、これらが設定とうまく連動することを確認することをお勧めします。
それに加えて、仮想マシンを使用しているため、以下の手順を実行する前にスナップショットを作成することをお勧めします。