EFI
os-prober

別ドライブに入れたWindows OSをos-proberで認識させる話 (restore)

これは別ドライブに入れたWindows10をgrubで認識させるときに私が行ったことに関する備忘録である。

Windows10をインストールして久しぶりにWindowsユーザーになった私であるが、やはりLinuxのこれが足りない、あれが足りないということで結局Arch Linuxとのデュアルブートをさせるに至った。

メイン機には2つのドライブ(SSD:Windows10,HDD:Arch Linux)があり、grubはもちろんArch Linux側のHDDに入ってる。

os-proberをインストールしているが別ドライブでも検出するのかという不安があった。

その不安は現実となったわけである。

さていろいろ調べた結果以下のことをやればいいことが分かった。

1.ntfsパーティションを認識できるようにするためntfs-3Gをインストールする。

2.Windows10の高速スタートアップを無効化する。

3.Windows10を入れたドライブをマウントする。

4.os-proberでWindowsのブートローダーを検出させる。

5.grubの更新。

これを行えばおそらく大丈夫。

BIOS/MBRを使用している方へ

BIOS/MBRの場合はWindowsが更新時にブートレコードに変更を与えることがあるためこの方法だと更新後の起動ができなくなることがある。

そのためBIOS/MBRの場合はこの記事に書かれている方法を使うことはおすすめしない。

その代わりBIOSの設定から起動ディスクを切り替えることで2つのOSの行き来が可能である。

1.ntfsパーティションを認識できるようにするためntfs-3Gをインストールする。

$ yaourt -S ntfs-3g

2.Windows10の高速スタートアップを無効化する。

再起動してWindows10に切り替える。

"高速スタートアップを有効にする"のチェックを外す。
(スタートボタン->コントロールパネル->電源オプション->電源ボタンの動作を選択する)

3.Windows10を入れたドライブをマウントする。

以上2項目でWindows10がインストールされたntfsパーティションをマウントする準備は整った。

再起動してArch Linuxに切り替える。

nautilusなどのファイルマネージャーを使ってドライブをマウントするのもよいし、mountコマンドを使ってマウントするのもよい。

一番ラクなのはnautilusなので、そちらでマウントした。

4.os-proberでWindowsのブートローダーを検出させる。

# os-prober

Windows Boot Managerとかが出ればOK。

5.grubの更新。

私のメイン機はUEFI以下のようになる。

# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --recheck
# grub-mkconfig -o /boot/grub/grub.cfg

Biosの方は以下のようになる。

# grub-install --recheck --target=i386-pc /dev/sdx
# grub-mkconfig -o /boot/grub/grub.cfg

参考文献

http://askubuntu.com/questions/197868/grub-does-not-detect-windows
https://wiki.archlinuxjp.org/index.php/NTFS-3G
http://note.kurodigi.com/archlinux-ntfs/