したがって、Windows 8のデュアルブートでUbuntuを1〜2か月使用しましたが、見た目も動作も良好でしたが、何らかの理由で故障し、PC全体を復元する必要がありました。この悪い経験のため、私はメインのWindowsマシンとは別の外部ハードドライブにUbuntuを再インストールすることにしました。このオプションは、両方のオペレーティングシステムに適しているようです。
ただし、Ubuntuをインストールするとき、何らかの理由でブートローダーGrubが外部ドライブにインストールされず、同時に「古い」GrubブートローダーがPCの内部ハードドライブから消去されませんでした。その結果、私は奇妙な状況にあります。Windowsを実行したいときは、PCの電源を入れてすぐに行きます。 Linuxを実行したい場合は、外部ドライブを接続し、スタートアップメニューに移動し、ブートローダーをWindowsからGrubに変更する必要があります。外付けハードドライブは(たとえばUSBスティックとして)起動可能ではなく、この長い操作シーケンスを毎回繰り返す必要があります。
簡単な要約:
私の質問:WindowsからLinuxに切り替えたいとき、PCの電源を切り、USBを接続し、PCの電源を入れて行くように、外部ドライブを起動可能にするにはどうすればよいですか? (既に保存されているデータとすべての設定を失うことなく)
PS。何らかの理由で、内部ドライブで利用可能なGrubブートローダーを介してロードすると、Windowsが非常に遅くなります。さらに、外付けハードドライブが接続されていない場合、GrubブートローダーはGrubレスキューパネルのみを表示します。したがって、すでにインストールされているGrubを唯一のブートローダーとして使用することは選択肢ではありません。
私は最終的に私の問題の解決策を見つけました。誰かがそれを必要とするかもしれない場合に備えて、ここに投稿します。また、何が機能したのか完全に定かではなく、実行したすべての手順が本当に必要だった場合でも、これは機能しました。
パーティションのUUIDを確認するには、端末に入力するだけです
ls -l /dev/disk/by-uuid
fstabファイルの編集中
Sudo nano /etc/fstab
Grubをインストールします。 (grubを内部ドライブから外部ドライブパーティションにコピーすることもできますが、うまくいきませんでした)。
Sudo grub-install/dev/sdX
sdXを実際のドライブに置き換えます。
これが、grubをUbuntu 17.04がインストールされた外付けハードドライブ(GPT)にインストールした方法です。これを行うと、PC grubに依存せずに外部でgrubを使用して、UEFIをサポートする任意のPCでUbuntuを起動できます。また、WindowsのEFIに問題がある場合のバックアップgrubとしても機能します。
UbuntuライブUSBを起動し、外部ハードドライブを接続します。
すべてのデバイスのパーティションをリストします。
lsblk
lsblk
の結果から、外付けハードドライブのLinuxパーティションとefiパーティション、つまりそれぞれ/dev/sdXY1
と/dev/sdXY2
を特定します。 XY1
およびXY2
を独自のパーティション名に置き換えます。
Linuxパーティションを特別にマウントします。
Sudo mount /dev/sdXY1 /mnt
重要な仮想ファイルシステムをマウントします。
for i in /dev /dev/pts /proc /sys /run; do Sudo mount -B $i /mnt$i; done
chroot
をマウントしたLinuxパーティションに:
Sudo chroot /mnt
これで、外付けハードドライブのLinuxファイルシステムに移動しました。
Grubがファイルをインストールするディレクトリを作成します。
mkdir -p /boot/efi
既に存在する場合は、手順8に進みます。
手順3のefiパーティションをマウントします。
mount /dev/sdXY2 /boot/efi
Grubを外付けハードドライブにインストールします。
grub-install /dev/sdX
GRUBを更新します。
update-grub
Efiパーティション(別名「vfat」)のUUIDを見つけてメモします。
blkid
または
ls -l /dev/disk/by-uuid
次に、ブート時に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エントリを必ずコメント化してください。
Chrootを終了します。
exit
PCを再起動します。
Sudo reboot
この時点で、再起動してEFIブートマネージャーから外部デバイスを選択すると、grubで起動します。
外部を挿入するとUbuntuが自動的に起動し、外部が挿入されないとWindowsが自動的に起動するようにするには、外部ドライブのefiを指すようにUbuntuのカスタムブートエントリを作成する必要があります。
WindowsからEasyUEFIはブートエントリを追加または削除できます。
Linuxからefibootmgrはブートエントリを追加または削除できます。
代替#1 – EasyUEFIを使用
WindowsでEasyUEFIをダウンロードし、インストールして実行します。
EFIオプションマネージャーを選択します
「新しいエントリを作成」を+記号で選択します
Linuxまたは他のOSを選択し、説明ボックスに名前を付けます
GRUBブートローダーを含む外部ドライブでFAT32 EFIパーティションを選択します
browseを選択します
/ efi/ubuntu/shimx64.efiまたは/ efi/ubuntu/grubx64に移動します
セーブ
ブートエントリリストの一番上に移動します
再起動
代替#2 – efibootmgr
を使用
ブートメニューエントリを一覧表示します。
efibootmgr
ブートエントリを作成します。
efibootmgr -c [-L label] [-d /dev/sdX]
例:efibootmgr -c -L myubuntu -d /dev/sdX
このブートエントリが自動的に最初のエントリになります。
/dev/sdX
は、grubブートローダーを備えた外部ハードドライブです。
これで再起動でき、ユーザーの介入なしで、外部ハードドライブが接続されるとUbuntuが自動的に起動します。外部ハードドライブが接続されていない場合、PCはbunt次のエントリへのブートエントリをスキップしますおそらくWindowsブートマネージャーです。