2011年11月19日土曜日

UEFIブート可能な SystemRescueCD (LiveUSB)を作る

先日 ThinkPad X220 を購入しました.新しいマシンは速くていいですね.
電池の保ちも良い感じです.

ThinkPad X220 に Funtoo Linux を入れる際に気づいたんですが,最近のマシンは UEFI も搭載しているようで通常の BIOS ブートの他に EFI ブートも選べるようになっていました.
せっかくなので UEFI Only で行ってみることにしてみました.

私は Gentoo や Funtoo をインストールする際に SystemRescue CD を使っています.
比較的頻繁に更新されているのと,ベースが Gentoo なので Kernel も新しいし各種ツールも入っていてとても便利です.

しかしながら,そのままでは EFI には対応していないようなので,使う方法をまとめてみました.

1. USBメモリの準備
まずは,USBメモリの準備をします.
UEFIでは BIOS パーティションではなく GPT を使用します.

パーティションを構成するツールとしては parted と gdisk があります.
今回は gdisk を使いました.

# emerge sys-apps/gptfdisk

さっそく gdisk でパーティションを作成します.
使い方は fdisk と同じです.

# gdisk /des/sdb

使い方は Funtoo Linuxのドキュメント GUID Booting Guide を眺めると良いと思います.
次にファイルシステムを作ります.FAT32 を使用しますので,sys-fs/dosfstools をいれましょう.
# emerge sys-fs/dosfstools
# mkfs.vfat -F32 /dev/sdb1

2. BootLoaderの設定

Boot Loader には GRUB2 を使用します.
EFIに対応している Boot Loader としては,他に elilo があるようです.

まずUSBメモリをマウントしておき,UEFI と GRUB で使用するディレクトリを作ります.

# mount /dev/sdb1 /mnt/usb
# mkdir -p /mnt/usb/efi/boot

次に GRUB をインストールします.
Funtoo の Portage に含まれている GRUB の ebuild では EFI に対応していないため,flow overlay のを使用します.

# layman -a flow
# echo 'GRUB_PLATFORMS="efi-64"' >> /etc/make.conf
# emerge --autounmask-write =sys-boot/grub-1.99::flow
# dispatch-conf
# emerge =sys-boot/grub-1.99::flow

GRUB のインストールができたら,ブートイメージを作ります.

# grub2-mkimage -d /lib/grub/x86_64-efi -O x86_64-efi -p "" -o /mnt/usb/efi/boot/bootx64.efi part_gpt btrfs fat ext2 normal chain boot configfile linux multiboot efi_gop linux

で,grub.cfg を作ります.
これは,SystemRescueCD 内にある isolinux/isolinux.cfg を参考に作りますが,メニュー全部つくるのはめんどくさいので,必要なモノだけにしました.

# vim /mnt/usb/efi/boot/grub.cfg
timeout=10 
default=0

insmod efi_gop
insmod efi_uga
insmod font

if loadfont efi/BOOT/unifont.pf2
then
  insmod gfxterm
  set gfxmode=auto
  set gfxpayload=keep
  terminal_output gfxterm
fi

menuentry "rescue64 cached" {
  linux /isolinux/rescue64 scandelay=1 docache
  initrd /isolinux/initram.igz
}

3. SystemRescueCD のコピー

難しく考えずに,そのままファイルをコピーするだけです.

 # mount -o loop,ro /path/to/systemrescuecd-x86-2.4.0.iso /mnt/cdrom
 # cp -a /mnt/cdrom/* /mnt/usb/


BIOS のようにマスターブートレコードに書き込むとかは必要ないようです.



続いて Funtoo Linux のインストール記事でも書こうかと思ってたんですが Thinkwiki に Gentoo インストール手順がまとまってました.
Installing Gentoo on a ThinkPad X220