概要
USBメモリへ複数のOSインストールISOファイルを配置し,ブートローダをインストールすることで,マルチブートなUSBメモリを作成する.
手順として,まずWindows10のインストーラを作成したのち,そこへGRUBをインストールする.GRUBから各種LinuxOSのインストーラISOファイルを読み込ませたり,Windowsのインストーラへチェインロードすることで,マルチブートを実現する.
必要なもの
- Windows10 マシン
- Arch Linux マシン(他のディストリビューションでも可能)
- USBメモリ(16GB以上推奨)
手順
Windowsでの作業
インストーラーにしたいUSBメモリをあらかじめWindowsマシンに挿入しておく.
最低8GB必要な上,他のLinuxディストリビューションのISOを配置するので,なるべく大容量のものを選択する.
Microsoftのメディア作成ツールをダウンロードする.
上記ページより「MediaCreationToolXXXX.exe」をダウンロードして起動する.「XXXX」のところにはインストールするバージョンが入る.
起動したツールの説明に従い,USBメモリにOSインストーラを作成する.
インストーラが作成できた旨が表示されれば成功.一先ずWindowsでの作業は終わり.
インストーラはFAT32で作成されるため,大容量のUSBメモリを利用しても32GBのパーティションに区切られる.Windowsのディスク管理から残った領域を別パーティションとして利用することもできる.
Linuxでの作業
作成したインストーラUSBメモリをLinuxマシンへ挿入する.また必要なLinux ISOファイルを用意しておくこと.
以下,Arch Linuxを前提に進める.他のディストリビューションではソフトウェア名称やオプション等が異なる場合がある.本稿で説明するGRUBのバージョンはGRUB2である.
まずGRUBをインストールする.
sudo pacman -S grub
USBメモリをマウントする.アクセス可能になったら,/mnt/usb/efi/boot/bootx64.efi
をリネームし,bootx64.efi.windows
とする.
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
mv /mnt/usb/efi/boot/bootx64.efi /mnt/usb/efi/boot/bootx64.efi.windows
USBメモリにGRUBをインストールする.
grub-install --target x86_64-efi --efi-directory /mnt/usb --boot-directory=/mnt/usb/boot --removable
次にGRUBの設定ファイルを作成する.パーティションのUUIDを記述する必要があるため,先に調べておく.XXXX-XXXXのようなハイフン区切りの8桁の文字列を取得する.
lsblk -f | grep /mnt/usb
コンフィグファイルの書き方はArch Wikiを参考にする.Ubuntu18.04に関してはWikiのUbuntuの情報が古いため以下を参照したほうがよい.Arch Linux,CentOS7,Ubuntu 18.04 Serverの該当するバージョンのISOファイルを用意するか,ISOファイルのバージョンに合わせて該当箇所を修正する.ISOファイルは/mnt/usb/boot/iso
ディレクトリを作成し,そこにファイルを配置する.Windows10は最初にインストールしたものをチェインロードして起動する.作成したコンフィグファイルは/mnt/usb/boot/grub/grub.cfg
として保存する.grub.cfg
の2行目のUUIDは先程取得したものを指定する.
mkdir /mnt/usb/boot/iso
vim /mnt/usb/boot/grub/grub.cfg
# path to the partition holding ISO images (using UUID)
set imgdevpath='/dev/disk/by-uuid/XXXX-XXXX'
insmod all_video
menuentry '[loopback]archlinux-2020.03.01-x86_64' {
set isofile='/boot/iso/archlinux-2020.03.01-x86_64.iso'
loopback loop $isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisodevice=/dev/loop0 img_dev=$imgdevpath img_loop=$isofile
initrd (loop)/arch/boot/x86_64/archiso.img
}
menuentry "[loopback]CentOS-7-x86_64-Minimal-1908" {
set isofile='/boot/iso/CentOS-7-x86_64-Minimal-1908.iso'
loopback loop $isofile
linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:/dev/sdb1:/$isofile
initrd (loop)/isolinux/initrd.img
}
menuentry '[loopback]ubuntu-18.04.4-live-server-amd64' {
set isofile='/boot/iso/ubuntu-18.04.4-live-server-amd64.iso'
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile locale=en_US.UTF-8
initrd (loop)/casper/initrd
}
menuentry '[chain]Win10_1909_Japanese_x64' {
insmod chain
chainloader /efi/boot/bootx64.efi.windows
}
各種ファイルの配置をしたら作業は終了.
OSインストールしたいマシンに挿入し,起動時にBIOSのブートメニューからUSBのパーティション1を選択する.GRUBのメニューが表示されれば成功.