システム復旧時やOSのインストール,ハードウェアのテストなど,普段とは異なるOSやLinuxディストリビューションでブートしたい場面がありますね.そんなときに,1本のUSBメモリでいくつかのOSをブートできるようにしておくと大変便利です.以下では,UEFIのISOブート機能を活用して,1本のUSBメモリでSystemRescueCD,CentOS,Ubuntuの3種類のLinuxディストリビューションをブートできるUSBメモリを作成します.この3種類以外にも,Arch,Fedora,Gentoo,Mint,Knoppix,OpenSUSEなど,様々なディストリビューションに対応しています(詳細は参考リンクを参照ください).
まずはUSBメモリ(ここでは/dev/sdb
)にDOSパーティションを1つ作成し,FAT32でフォーマット.
1 |
mkdosfs -F 32 /dev/sdb1 |
/mnt/usb
にマウントしてgrubをインストール.
1 2 3 |
mkdir /mnt/usb mount /dev/sdb1 /mnt/usb grub2-install --target x86_64-efi --efi-directory /mnt/usb --boot-directory=/mnt/usb/boot --removable |
/mnt/usb/boot/iso
ディレクトリを作成し,SystemRescueCD 4.7.1,Ubuntu 14.04.4 Server/Desktop (amd64),CentOS 7.2.1511 minimal (x86_64) のISOイメージをダウンロードして配置する.
1 |
mkdir /mnt/usb/boot/iso |
lsblk -f | grep /mnt/usb
してユニークなラベルを取得する.ここでは「EA9D-52B3
」がユニークなラベル.
1 2 |
$ lsblk -f | grep /mnt/usb └─sdb1 vfat EA9D-52B3 /mnt/usb |
/mnt/usb/boot/grub/grub.cfg
を作るときに,先頭部分で先に取得したラベルを設定する.作成したgrub.cfg
は以下のような感じ.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# path to the partition holding ISO images (using UUID) set imgdevpath="/dev/disk/by-uuid/EA9D-52B3" insmod all_video menuentry "[loopback] SystemRescueCd 4.7.1 64bit" { set isofile='/boot/iso/systemrescuecd-x86-4.7.1.iso' loopback loop $isofile linux (loop)/isolinux/rescue64 isoloop=$isofile initrd (loop)/isolinux/initram.igz } menuentry "[loopback] CentOS 7 x86_64 Minimal" { set isofile="/boot/iso/CentOS-7-x86_64-Minimal-1511.iso" loopback loop $isofile linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:/dev/sdb1:/$isofile initrd (loop)/isolinux/initrd.img } menuentry "[loopback] Ubuntu 14.04.4 server amd64" { set isofile="/boot/iso/ubuntu-14.04.4-server-amd64.iso" loopback loop $isofile linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile locale=en_US.UTF-8 initrd (loop)/casper/initrd.lz } menuentry "[loopback] Ubuntu 14.04.4 desktop amd64" { set isofile="/boot/iso/ubuntu-14.04.4-desktop-amd64.iso" loopback loop $isofile linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile locale=en_US.UTF-8 initrd (loop)/casper/initrd.lz } |
OSごとにmenuentryの書式が異なるので,その他のOSをブートしたい場合は以下の参考リンクを参照して適切に記載してください.
ISOの配置とgrub.cfgの設定が終われば作業終了です.PCに接続してUSBからブートすると,上で設定した4つのメニューが現れるはずです.
参考リンク
[1] Multiboot USB drive: https://wiki.archlinux.org/index.php/Multiboot_USB_drive
広告欄