EFIブートするUSBメモリでdebianをインストール
概要
- EFIブートするUSBメモリを作成し、これを使ってdebianをインストールする。
- 古いXserveをdebian化しようとした中での例。
- インストールできたものの、うまく起動しない状態で終わってます。多分ドライバ周り・・・。
- grubを導入したUSBメモリを用意してしまえば、カーネルや初期RAMディスク、ISOイメージを書き換えるだけでよくなる。この作業はUSBメモリのファイルを書き換えるだけなので、debian機は不要。
必要なもの
- 2GBくらいのUSBメモリ
- 中身は完全に消える。
- 母艦となるdebian機
- VMでも構わないが、USBメモリをmountできないとダメ。
手順
grubの準備
まずは母艦となるdebianでEFI対応のgrubを用意する。インストールしたいアーキテクチャに合わせたものを用意する。今回はx86の64bit版で。
sudo apt-get install grub-efi-x86_64-bin
USBメモリにパーティションを作る。/dev/sdb
の部分はUSBメモリのデバイス名を指定する。分からん場合はsudo dmesg
とかで調べるべし。
sudo fdisk /dev/sdb
あとはよしなに。FAT32にするのが良い。どんなマシンでもFAT32なら読めるみたいなので(確証なし)。partition IDをbにするとWin95 FAT32になる。
FAT32でフォーマット。-v
は詳細表示、-c
は不良ブロック精査、-F
は形式。16にすればFAT16になる。
sudo mkfs.vfat -v -c -F 32 /dev/sdb1
- Q. mkfs.vfatなんてないんだけど。
- A. dosfstoolsを入れるべし。
sudo apt-get install dosfstools
USBメモリをマウントし、EFIのディレクトリを指定してgrubをUSBメモリに書き込む。
sudo mount /dev/sdb1 /mnt
sudo grub-install —target=x86_64-efi —efi-directory=/mnt —boot-directory=/mnt/boot —no-floppy
ちなみに、Macで起動するためにはEFIの下をboot/bootx64.efi
にしないとダメらしい。本当かしらん。まぁ、変更しておくということで。
sudo mv /mnt/efi/boot/grubx64.efi /mnt/efi/boot/bootx64.efi
grub.cfgをboot/grub
に作成する。
sudo mkdir -p /mnt/boot/grub
sudo vi /mnt/boot/grub/grub.cfg
grub.cfg
はこんな感じ。
# Load Graphical modules
insmod efi_gop
insmod efi_uga
# Load Font module
insmod font
# Setup GFXTERM along with loading unifont.pf2 font file
if loadfont ${prefix}/fonts/unifont.pf2
then
insmod gfxterm
set gfxmode="auto"
set gfxpayload=keep
terminal_output gfxterm
set color_normal=light-blue/black
set color_highlight=light-cyan/blue
fi
insmod part_gpt
insmod part_msdos
insmod fat
insmod ext2
# Timeout for menu
set timeout=5
# Set default boot entry as Entry 0
set default=0
menuentry "Debian Install (expert mode)" {
set root=(hd0,msdos1)
linux /boot/vmlinuz root=/dev/sda1 ro video=efifb agp=off priority=low ipv6.disable=1
initrd /boot/initrd.gz
}
menuentry "Debian Install" {
set root=(hd0,msdos1)
linux /boot/vmlinuz root=/dev/sda1 ro video=efifb agp=off ipv6.disable=1
initrd /boot/initrd.gz
}
これでgrubの準備は完了。
debianインストーラの導入
自分はいつもdebian開発者ページ(?)からインストーラを取得している。 ここで手に入るのはtesting版。だと思う。日次スナップショットはうまく起動しない場合もあるので注意。
「その他のイメージ>インストール先アーキテクチャ>hd-media」とたどる。
ここからvmlinuz
(カーネル)とinitrd.gz
(初期RAMディスク)を取得する。
また、元のページから「netinst CDイメージ」も取得しておく。
あとはこれを配置するだけ。USBメモリをmountし、以下のように配置する。FAT32でフォーマットしてあるとMacからでもWinからでも配置できるので便利。MacのEFIで読めるのはFATとHFS+とかだった気がするけど定かではない。FAT32なら大丈夫だった。
ファイル | 配置場所 |
---|---|
netinst CDイメージ(.isoファイル) | USBメモリのトップ/ |
vmlinuz | USBメモリのトップ/boot/ |
initrd.gz | USBメモリのトップ/boot/ |
インストールはどうやるの?
普通にUSBメモリからEFIで起動させればOK。
インストーラでパーティションを切るときに、EFI用のディレクトリを作成しないとダメ。100MBくらいで十分なはずだけど、200MBくらいを確保している。
Windowsが入っているマシンとかに後からdebianを追加するときは、すでにあるEFIシステムパーティションが利用できる。もちろん、WindowsがEFIブートでインストールされていれば、の話だが。