web-dev-qa-db-ja.com

Grubを外付けハードドライブにインストールする方法は?

したがって、Windows 8のデュアルブートでUbuntuを1〜2か月使用しましたが、見た目も動作も良好でしたが、何らかの理由で故障し、PC全体を復元する必要がありました。この悪い経験のため、私はメインのWindowsマシンとは別の外部ハードドライブにUbuntuを再インストールすることにしました。このオプションは、両方のオペレーティングシステムに適しているようです。

ただし、Ubuntuをインストールするとき、何らかの理由でブートローダーGrubが外部ドライブにインストールされず、同時に「古い」GrubブートローダーがPCの内部ハードドライブから消去されませんでした。その結果、私は奇妙な状況にあります。Windowsを実行したいときは、PCの電源を入れてすぐに行きます。 Linuxを実行したい場合は、外部ドライブを接続し、スタートアップメニューに移動し、ブートローダーをWindowsからGrubに変更する必要があります。外付けハードドライブは(たとえばUSBスティックとして)起動可能ではなく、この長い操作シーケンスを毎回繰り返す必要があります。

簡単な要約:

  1. PCの内部ハードドライブには、Windows OS、Windowsブートローダー、および古いLinuxインストールのGrubが含まれています。
  2. 外付けハードドライブにはUbuntu 15.10、おそらくGrubが含まれていますが、USBスティックのように起動できません。
  3. OSを切り替えるたびに、スタートアップメニューでブートローダーを手動で変更する必要があり、面倒です。
  4. ブートデバイスは次のように注文されます。1. USB 2.外付けドライブ3.内蔵ドライブ

私の質問:WindowsからLinuxに切り替えたいとき、PCの電源を切り、USBを接続し、PCの電源を入れて行くように、外部ドライブを起動可能にするにはどうすればよいですか? (既に保存されているデータとすべての設定を失うことなく)

PS。何らかの理由で、内部ドライブで利用可能なGrubブートローダーを介してロードすると、Windowsが非常に遅くなります。さらに、外付けハードドライブが接続されていない場合、GrubブートローダーはGrubレスキューパネルのみを表示します。したがって、すでにインストールされているGrubを唯一のブートローダーとして使用することは選択肢ではありません。

1
mickkk

私は最終的に私の問題の解決策を見つけました。誰かがそれを必要とするかもしれない場合に備えて、ここに投稿します。また、何が機能したのか完全に定かではなく、実行したすべての手順が本当に必要だった場合でも、これは機能しました。

  1. Gpartedなどを使用して、外部ドライブにE​​FIパーティションがあることを確認してください。パーティションはFAT32で、bootフラグとespフラグがあり、/ boot/efiにマウントされている必要があります。サイズは少なくとも200 Mbである必要がありますが、HDで使用可能なスペースがあるため、1 Gbにしました。このパーティションがない場合は、作成します。
  2. 外付けハードドライブのEFI BOOTパーティションのUUIDがfstabファイルのUUIDと一致することを確認します。

パーティションのUUIDを確認するには、端末に入力するだけです

ls -l /dev/disk/by-uuid

fstabファイルの編集中

Sudo nano /etc/fstab
  1. Grubをインストールします。 (grubを内部ドライブから外部ドライブパーティションにコピーすることもできますが、うまくいきませんでした)。

    Sudo grub-install/dev/sdX

sdXを実際のドライブに置き換えます。

  1. まだ実行していない場合は、USBドライブからの起動を有効にし、UEFIセットアップメニューから内部ブートローダーの前に外部ブートローダーがロードされていることを確認します。これで、マシンは最初にUSBから起動し、(ブートローダーが見つからない場合)内部ハードドライブから起動するはずです。
1
mickkk

これが、grubをUbuntu 17.04がインストールされた外付けハードドライブ(GPT)にインストールした方法です。これを行うと、PC grubに依存せずに外部でgrubを使用して、UEFIをサポートする任意のPCでUbuntuを起動できます。また、WindowsのEFIに問題がある場合のバックアップgrubとしても機能します。

Ubuntuがインストールされている外部ハードドライブへのGrubのインストール

  1. UbuntuライブUSBを起動し、外部ハードドライブを接続します。

  2. すべてのデバイスのパーティションをリストします。

    lsblk
    
  3. lsblkの結果から、外付けハードドライブのLinuxパーティションとefiパーティション、つまりそれぞれ/dev/sdXY1/dev/sdXY2を特定します。 XY1およびXY2を独自のパーティション名に置き換えます。

  4. Linuxパーティションを特別にマウントします。

     Sudo mount /dev/sdXY1 /mnt
    
  5. 重要な仮想ファイルシステムをマウントします。

    for i in /dev /dev/pts /proc /sys /run; do Sudo mount -B $i /mnt$i; done
    
  6. chrootをマウントしたLinuxパーティションに:

    Sudo chroot /mnt
    

    これで、外付けハードドライブのLinuxファイルシステムに移動しました。

  7. Grubがファイルをインストールするディレクトリを作成します。

    mkdir -p /boot/efi
    

    既に存在する場合は、手順8に進みます。

  8. 手順3のefiパーティションをマウントします。

    mount /dev/sdXY2 /boot/efi
    
  9. Grubを外付けハードドライブにインストールします。

    grub-install /dev/sdX
    
  10. GRUBを更新します。

    update-grub
    
  11. Efiパーティション(別名「vfat」)のUUIDを見つけてメモします。

    blkid
    

    または

    ls -l /dev/disk/by-uuid
    
  12. 次に、ブート時にfstabにそのefiパーティションをマウントするように指示する必要があります。

    cp /etc/fstab /etc/fstab.bak  
    Sudo nano /etc/fstab  
    

    以下の2行をfstabに追加し、xxxx-xxxxをステップ11のUUIDに置き換えます。

    #my modified fstab to mount external hard drive's esp  
    UUID=xxxx-xxxx   /boot/efi   vfat   umask=0077   0   1  
    

    競合しないように、Windows espのfstabエントリを必ずコメント化してください。

  13. Chrootを終了します。

    exit
    
  14. PCを再起動します。

    Sudo reboot
    

この時点で、再起動してEFIブートマネージャーから外部デバイスを選択すると、grubで起動します。

外部を挿入するとUbuntuが自動的に起動し、外部が挿入されないとWindowsが自動的に起動するようにするには、外部ドライブのefiを指すようにUbuntuのカスタムブートエントリを作成する必要があります。

Ubuntuのカスタムブートエントリを作成して、外部HDのefiをポイントする

WindowsからEasyUEFIはブートエントリを追加または削除できます。

Linuxからefibootmgrはブートエントリを追加または削除できます。

代替#1 – EasyUEFIを使用

  1. WindowsでEasyUEFIをダウンロードし、インストールして実行します。

  2. EFIオプションマネージャーを選択します

  3. 「新しいエントリを作成」を+記号で選択します

  4. Linuxまたは他のOSを選択し、説明ボックスに名前を付けます

  5. GRUBブートローダーを含む外部ドライブでFAT32 EFIパーティションを選択します

  6. browseを選択します

  7. / efi/ubuntu/shimx64.efiまたは/ efi/ubuntu/grubx64に移動します

  8. セーブ

  9. ブートエントリリストの一番上に移動します

  10. 再起動

代替#2efibootmgrを使用

  1. ブートメニューエントリを一覧表示します。

    efibootmgr
    
  2. ブートエントリを作成します。

    efibootmgr -c [-L label] [-d /dev/sdX]
    

    例:efibootmgr -c -L myubuntu -d /dev/sdX

    このブートエントリが自動的に最初のエントリになります。

    /dev/sdXは、grubブートローダーを備えた外部ハードドライブです。

  3. これで再起動でき、ユーザーの介入なしで、外部ハードドライブが接続されるとUbuntuが自動的に起動します。外部ハードドライブが接続されていない場合、PCはbunt次のエントリへのブートエントリをスキップしますおそらくWindowsブートマネージャーです。

2
ptetteh227