web-dev-qa-db-ja.com

2つのLinuxブートローダーが1つのLinuxOSしかインストールされていない、何か奇妙なことが起こった

Linux Parrot Security3.9カーネルバージョン4.14.086_64をKali2017.3(皮肉なことに現在Debianと同じカーネルバージョン)4.14.086_64のインストールの上に再インストールしました。

これで、HDDを完全にパーティション分割しました。いつものように手動で、/ dev/sda1-boot 512M、/ dev/sda2-swap 8G、/ dev/sda3-/root-25G、/ dev/sda4/home-残りのパーティションサイズ。

F11を押さない限り、Linuxを最初に起動する正しい順序で2台のHDDがあります。LinuxHDDは最初のSATAケーブルスロットにあり、2番目のSATAケーブルスロットには別のWindowsHDDがあります。同じHDD上でLinuxとデュアルブートWindowsを使用したくない。

通常、電源を入れると、起動オプションとしてF11を押すと、両方のHDDが表示され、それに応じて選択します。ゲームにはWindowsを使用し、その他はすべてLinuxを使用します。

しかし、F11を押したとき、/ dev/sda3 Windowsが起動する2番目のオプションとして表示されるため(このセットアップでは1年以上続いているため)、古いKaliはまだ最初のオプションですが、Parrotも表示されます/ dev/sda3(上書きされるべきであったKaliと同じ)/ dev/sda3/Parrotを選択でき、正常に動作します。 Windowsは正常に動作しますが、/ dev/sda3/Kali(上書きされているはずです)を選択すると、grubエラーが発生し、grubレスキュー>プロンプトが表示されます。

最後に、これを常にケーブル接続してきた方法は、F11キーを押してWindows HDDを選択しない限り、Linuxブートでしたが、このGrub Error Grub Rescue>が表示され、最後のKali's Grubが削除されなかったため、常に削除する必要があります。今すぐF11を押してください。現在Kaliと同じカーネル上に構築された新しいParrotOSに入ることができないわけではありません。Debian9は、私が思うに異なるリポジトリ更新方法です。それはうまく機能します、私は私のシステムができるだけ正確であることを望んでいます。

私は何をすべきか?/dev/sda3に実際のDistroがインストールされているのと競合しているようですが、別の1つは、そうでないときに競合すると考えていますか?

2
user265608

F11を押すと、BIOSブートメニューにアクセスしているように聞こえます。 Windows、Parrot、Kaliなどのオペレーティングシステム名が含まれている場合、これはおそらくUEFIスタイルのブートを使用している手がかりです。

それが本当なら、カーリーの残骸を取り除く最も便利な方法は、Linuxでefibootmgrツールを使用することです。

UEFIスタイルのブートでは、ブートローダーに関する3つのことがNVRAM(= BIOS設定が保存される場所)に保存されます。

  • 特定のOSのUEFIブートローダーを含むパーティションのUUID(これは通常、ESPまたは(U)EFIシステムパーティションと呼ばれる小さなFAT32パーティションです)
  • そのOSのブートローダーファイルの名前
  • そのOSのわかりやすい名前

特定のOSのブートローダーを完全に削除し、それが持っていたすべてのパーティションを上書きしても、この情報はNVRAMに残ります。一部のUEFIファームウェアは、UEFI BIOS設定メニューから廃止されたブート設定を削除する方法を提供しますが、残念ながら、そのオプションがないUEFIファームウェアバージョンが市場に出回っています。

UEFIシステムでefibootmgr -vを実行すると、現在NVRAMに保存されているUEFIブート設定のリストが表示されます。システムの起動に最近使用された起動オプションを識別するBootCurrent値があります。通常は0に設定されるTimeout値があります。次に、ファームウェアがさまざまな構成済みブートオプションを試行する順序を識別するBootOrderリストがあります。各ブートオプションは次のように識別されます。 0000、0001、0002などの4桁の数字。

そして最後に、実際の起動オプションがあります。各ブートオプション行には、ブートオプションの4桁の番号が「BootNNNN」の形式で一覧表示されます(たとえば、最初のブートオプションの場合はBoot0000)。次に、OSの説明的な名前があり、次にブートローダーパーティションUUIDとそのパーティション上のブートローダーファイルのパス名があります。行の最後に、オプションでブートローダーのいくつかのパラメーターを含めることができます。

Kaliブートオプションの残りを取り除くには、リストでその4桁の番号を見つけます。次に、efibootmgr -B -b NNNNを使用して削除できます。

たとえば、KaliがブートオプションBoot0002であることがわかった場合は、次の方法で削除できます。

efibootmgr -B -b 0002

efibootmgrコマンドはrootとして実行する必要があります(または接頭辞Sudoを付けます)。

1
telcoM

私はここで助けを求めることを経験したことはありません。 Modがこれを尋ねる正しい場所を推奨したり、正しいフォーラムに転送するのを手伝ったりできる場合は、事前にたくさん感謝します。これが間違った場所である場合は、事前にお詫び申し上げます。

あなたは正しいです、ここで、それは良いです!ただし、Parrot SecurityとKaliはセキュリティ中心のディストリビューションであり、気の弱い人向けではありません。これらを使用する場合は、経験豊富なLinux管理者であることが期待されます。

基本的に、古いKaligrubエントリがまだ残っているという問題があります。

Grub構成は/etc/grub.d/*に保存されるため、そこにKaliのエントリが含まれているファイルがないこと、ParrotSecurityエントリがそこにあることを確認する必要があります。次に、Sudo update-grubを実行すると、問題が修正されます。

Kaliが存在しないことを確認するには:grep Kali /etc/grub.d/* then grep Parrot /etc/grub.d/*、両方のコマンドが「もの」を見つけ、両方のエントリが同じファイルにない場合は、Kaliを含むファイルを安全に削除できます。

0
thecarpy