GNU/Linux >> Linux の 問題 >  >> Linux

Linux – 2番目のハードドライブ上のデュアルブートWindows、Uefi / gptシステム?

Linuxをインストールしたいのですが、多くの恐ろしい話を聞いたことがあるので、現在のWindowsインストールに損害を与えるリスクを冒したくありません。幸いなことに、私は余分なハードドライブを持っています。その上にLinuxをインストールしてから、Windowsドライブを変更せずにデュアルブートウィンドウをインストールできますか?

また、UEFI「BIOS」があり、WindowsドライブはGPT形式です。

承認された回答:

BIOSという用語を使用します 以下では、新しいUEFIシステムと従来のBIOSシステムの両方で同じ概念を参照する場合、これはUEFI指向の質問ですが、「BIOS」ジブについては、GRUBドキュメントなどでより適切に説明し、「BIOS/UEFI」は不格好すぎる。 GRUB(実際には、GRUB 2 —これはあいまいに使用されることがよくあります)は、Linuxによってインストールされ、Windowsのデュアルブートに使用されるブートローダーです。

まず、ドライブの順序とブートの順序について説明します。 ドライブ注文 ドライブがマザーボード上のバスに物理的に接続されている順序(最初のドライブ、2番目のドライブなど)を指します。この情報はBIOSによって報告されます。 起動順序 BIOSが起動可能なドライブをチェックするシーケンスを指します。これは必ずしもドライブの順序と同じではなく、通常はBIOSセットアップ画面から構成できます。ドライブの順序を構成したり、ブートの順序の影響を受けたりしないでください。これは、OSにとって非常に使いにくいことです(ただし、理論的には、鈍いBIOSで可能です)。また、最初のドライブを抜くと、2番目のドライブが最初のドライブになる可能性があります。このような問題を回避するために、ブートローダーの構成にUUIDを使用します(現在のLinuxインストーラーもこれを行います)。

必要なものを取得するための理想的な方法は、ドライブの順序の観点から2番目のドライブにLinuxをインストールすることです。 次に、起動順序の観点から最初に選択します UEFIセットアップを使用します。これの追加の利点は、BIOS / UEFIブート順序を使用してWindowsドライブを選択し、必要に応じてgrubをバイパスできることです。 2番目のドライブにLinuxを推奨する理由は、GRUBがWindowsネイティブブートローダーを「チェーンロード」する必要があり、Windowsブートローダーは常に最初のドライブにあると想定するためです。ただし、逆の方法でそれを好む、または必要とする場合は、それをだます方法があります。

うまくいけば、先に進んでライブCDなどを使用し、GUIインストーラーを使用してこれを実行できます。ただし、すべてのインストーラーが同じように作成されているわけではありません。これが失敗して、次のような問題が発生した場合:

  1. 最初のにLinuxをインストールしました ディスクがあり、Windowsを起動できない、または

  2. Linuxを2番目のディスクにインストールしましたが、最初のディスクをブートローダーに使用しているため、何も起動できません!

その後、読み続けます。 2番目のケースでは、最初にLinuxを2番目のディスクに再インストールしてみてください。今回は、そこにブートローダーが配置されていることを確認してください。これを行う最も簡単で確実な方法は、ドライブの順序に関係なく、Windowsドライブに余分なものがインストールされていないことを前提としているため、Windowsドライブをマシンから一時的に削除することです。

Linuxをインストールし、起動できることを確認したら、Windowsドライブを接続し直します(取り外した場合は、ドライブの順序で最初に、起動で2番目のドライブを最初に配置するのが理想的です。注文)、次のステップに進みます。

GRUB構成へのアクセス

Linuxを起動し、ターミナルを開いて、

> su root

rootのパスワードの入力を求められます。この時点から、あなたはその端末のスーパーユーザーになります(確認するには、whoamiを試してください )、だから愚かなことは何もしないでください。ただし、あなたはまだGUIの通常のユーザーであり、テキストファイルを編集するため、GUIエディターが必要な場合は、そのファイルの所有権とファイルが存在するディレクトリを一時的に変更する必要があります。

> chown -R yourusername /etc/grub.d/

「操作は許可されていません」というメッセージが表示された場合は、suを実行していません。 ちゃんと。 chown: invalid user: ‘yourusername’を取得した場合 、あなたは文字通り最後のコマンドを取りすぎました。

これで、/etc/grub.dに移動できます。 ファイルブラウザで40_customというファイルを探します 。次のようになります:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

見つからない場合は、ルートターミナルで次のコマンドを入力します。

> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom

テキストエディタで開き、上の部分をコピーして貼り付けます(w / #!/bin/shで開始) )そして次のステップに進みます。

関連:Bash:Shift +矢印キーでA、B、C、Dになりますか?

Windowsブートオプションの追加

これをコピーして、ファイルの最後にあるテキストエディタで貼り付けます:

menuentry "MS Windows" {
        insmod part_gpt
        insmod search_fs_uuid
        insmod ntfs
        insmod chain
}

これは、GRUBが処理を実行するために必要なモジュールのリストです(ntfs 不必要かもしれませんが、何も傷つけてはいけません)。 これは不完全なエントリであることに注意してください —いくつかの重要なコマンドを追加する必要があります。

Windowsの第2ステージブートローダーの検索

LinuxのインストールでWindowsパーティションが自動マウントされている可能性があり、ファイルブラウザで見つけることができるはずです。そうでない場合は、その方法を見つけてください(方法がわからない場合は、このサイトで質問してください)。それが完了したら、マウントポイントを知る必要があります。これはファイルブラウザで明らかです。 /media/ASDF23SF23/ 。入力を節約するために、それをシェル変数に入れます:

win="/whatever/the/path/is"

等号の両側にスペースがあってはなりません。 しないでください ここにWindowsパスの要素を含めます。これは、Windowsパーティションの最上位フォルダーを指している必要があります。今:

cd $win
find . -name bootmgfw.efi

大きなパーティションがある場合、これには数分かかることがありますが、おそらく最初に吐き出されるのは、私たちが探しているものです。長いgoobledygook文字列を含むファイルシステムにさらに参照がある可能性があります—そうではありません。 Ctrl-cを使用します ./Windows/Boot/EFI/bootmgfw.efiのような短くて単純なものが表示されたら、検索を停止します または./EFI/HP/boot/bootmgfw.efi

.を除く 最初は、後で使用するためにこのパスを覚えておいてください。下部の空白行でテキストエディタにコピーできます。ここで使用するためです。今すぐ前のディレクトリに戻りたい場合は、cd -を使用してください 、これから先はシェルのどこにいるかは関係ありません。

適切なパラメータの設定

GRUBは、ブートプロセスを見つけて、第2段階のWindowsブートローダーに渡すことができる必要があります。 Windowsパーティションにはすでにパスがありますが、そのパーティションがどこにあるかをGRUBに通知するためのいくつかのパラメーターも必要です。 grub-probeというツールがシステムにインストールされている必要があります または(たとえば、Fedoraで)grub2-probegrubと入力します 次に、タブを押します 2、3回;どちらか一方を含むリストが表示されます。

> grub-probe --target=hints_string $win

次のような文字列が表示されます:

--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1

GRUB構成が含まれているテキストエディタに戻り、すべてのinsmodの後に行を追加します。 コマンド(ただし、中括弧を閉じる前)は、次のようになります:

    insmod chain
    search --fs-uuid --set=root [the complete "hint bios" string]
}

その行を壊したり、テキストエディタにそうさせたりしないでください。ディスプレイで折り返される場合があります。違いを簡単に見分ける方法は、行番号をオンに設定することです。次へ:

> grub-probe --target=fs_uuid $win

これにより、「123A456B789X6X」や「b942fb5c-2573-4222-acc8-bbb883f19043」などの短い文字列、数字、および可能なダッシュが返されます。これをsearch --fs-uuidの最後に追加します ヒントBIOS文字列の後の行。スペースで区切ります。

次に、の場合(そしてその場合のみ) ドライブの順序に関して、Windowsは2番目のドライブにあります 、search --fs-uuidの後に行を追加します 行:

    drivemap -s hd0 hd1

これは前述の「トリック」です。動作が保証されているわけではありませんが、試してみても問題はありません。

最後に、最後の行は次のようになります。

    chainloader (${root})[the Windows path to the bootloader]
}

明確にするために、たとえば:

    chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi

それでおしまい。ファイルを保存し、ファイルブラウザでチェックインして、ファイルが実際に保存され、正常に表示されていることを確認します。

新しいメニューオプションをGRUBに追加

これは、grub-mkconfigというツールを使用して行われます。 またはgrub2-mkconfig; タブで見つけたリストに含まれているはずです ついさっき。 update-grubというコマンドを使用することもできます。 。それを確認するには、ルートターミナルに入力するだけです。 「コマンドが見つかりません」というメッセージが表示された場合は、grub-mkconfigを使用する必要があります 直接。そうでない場合(エラーが長くなることを含む)、構成を設定しただけで、少し下に移動できます。

grub-mkconfigを使用するには 直接、最初にgrub.cfgを見つける必要があります :

> find /boot -name grub.cfg

これはおそらく/boot/grub/grub.cfgになります または/boot/grub2/grub.cfg

> grub-mkconfig -o /boot/grub/grub.cfg

update-grub 構成を自動的にスキャンしてエラーを検出します。 grub-mkconfig そうはなりませんが、マシンを起動しようとするときよりも今すぐ対処する方がはるかに簡単なので、そうすることが重要です。これには、grub-script-checkを使用します (またはgrub2-script-check ):

> grub-script-check /boot/grub/grub.cfg

この場合(またはupdate-grub )は、grub.cfgの行番号である行番号を示すエラーを生成しますが、/etc/grub.d/40_customの対応する部分を修正する必要があります。 (テキストエディタ内のファイル)。ただし、前のファイルを確認するためだけにrootである必要がある場合があるため、less /boot/grub/grub.cfgを試してください。 ターミナルで、を押します。 、行番号を入力します。メニューエントリが表示されます。タイプミスを見つけてテキストエディタで修正し、update-grubを実行します またはgrub-mkconfig もう一度。

関連:インメモリとハードドライブのハイブリッド?

完了したら、テキストエディタを閉じて、exitと入力します。 ターミナルでスーパーユーザーモードを終了します。

再起動してください!

グラブメニューが表示されたら、すばやく下にスクロールして(タイムアウトが切れる前に、通常は5秒)、[Windows]オプションまでスクロールしてテストします。 grubからテキストメッセージエラーが発生した場合は、設定に問題があります。 Windowsからエラーメッセージが表示された場合 、その問題はあなたとマイクロソフトの間にあります。ただし、心配しないでください。Windowsドライブは変更されておらず、BIOSセットアップを介して(起動順序の観点から)最初に起動することで、Windowsドライブを直接起動できます。

再びLinuxに戻ったら、/etc/grub.dの所有権を返します。 ディレクトリとその内容を元の状態に戻します:

sudo chmod 755 /etc/grub.d/40_custom

参照

  • GRUB2マニュアル

  • Arch LinuxWikiGRUBページ

    Archにはいくつかの最高のドキュメントがあり、その多く(そのページを含む)はほとんどすべてのGNU/Linuxディストリビューションに適用できます。


Linux
  1. LinuxMintをWindows8にインストールする|デュアルブートWindows8およびLinuxMint12

  2. Windows10とMXLinuxをデュアルブートする方法

  3. Linux から起動可能な Windows 10 USB ドライブ (UEFI) を作成する

  1. Linux で ntfs ドライブを fsck する

  2. 暗号化を使用したデュアル ブート Windows + Linux

  3. BIOS システムで GPT ディスクから Linux を起動することはできますか?

  1. UEFIを使用したWindowsとLinuxのデュアルブート

  2. デュアルブートUbuntuLinuxおよびWindows7

  3. KaliLinuxとWindows10をデュアルブートする方法