Linux/USBメモリブート
EFI領域を利用してLinuxを起動する
EFIブートはMBRを利用せずに、直接FAT領域にあるローダを読み込む仕様のようだ。
但しディレクトリ名は固定で「/EFI/BOOT/」である必要がある。※もしかするとBOOTは不要?。小文字でもいける?
1. USBメモリの準備(従来のMBR版と同じ)
VFATパーティションがあるUSBメモリを用意する
Bootフラグが有効になっていること.有効でない場合はfdiskコマンドで設定しておく.
# /sbin/fdisk -l /dev/sdb Disk /dev/sdb: 131 MB, 131072000 bytes 5 heads, 50 sectors/track, 1024 cylinders, total 256000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xb0bcd68e Device Boot Start End Blocks Id System /dev/sdb1 * 2048 133119 65536 b W95 FAT32 /dev/sdb2 133120 255999 61440 83 Linux # /sbin/mkfs.vfat -F32 /dev/sdb1
2. ブートファイル類の配置
Linuxカーネルとinitrd.gz
# mount /dev/sdb1 /mnt # mkdir -p /mnt/EFI/BOOT # cp vmlinuz /mnt/EFI/vmlinuz # cp initrd.gz /mnt/EFI/initrd.gz
ブート設定ファイル
# cat > /mnt/EFI/BOOT/syslinux.cfg <<EOF default current prompt 1 timeout 30 label current kernel /EFI/vmlinuz append initrd=/EFI/initrd.gz EOF
3. syslinux のインストール
syslinux の version6.0以上がEFI対応しているらしい。
https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
# mount /dev/sdb1 /mnt/ # tar xvfz syslinux-6.03.tar.gz # cd syslinux-6.03 # cp com32/elflink/ldlinux/ldlinux.e64 /mnt/EFI/BOOT/ # cp efi/syslinux.efi /mnt/EFI/BOOT/
#MBR起動も併用可能。設定しておくと対応環境が増えて便利。
# syslinux -i /dev/sdb1 -d /EFT/BOOT ※「-d directory」はMountポイントでなく、/dev/sdb1を基準にしたパス # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
MBR + vfat領域を利用してLinuxを起動する
syslinux をUSBメモリ(/dev/sdb)へインストールする
1. USBメモリの準備
VFATパーティションがあるUSBメモリを用意する
Bootフラグが有効になっていること.有効でない場合はfdiskコマンドで設定しておく.
# /sbin/fdisk -l /dev/sdb Disk /dev/sdb: 131 MB, 131072000 bytes 5 heads, 50 sectors/track, 1024 cylinders, total 256000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xb0bcd68e Device Boot Start End Blocks Id System /dev/sdb1 * 2048 133119 65536 b W95 FAT32 /dev/sdb2 133120 255999 61440 83 Linux # /sbin/mkfs.vfat -F32 /dev/sdb1
2. ブートファイル類の配置
Linuxカーネルとinitrd.gz
# mount /dev/sdb1 /mnt # mkdir /mnt/syslinux # cp vmlinuz /mnt/syslinux/vmlinuz # cp initrd.gz /mnt/syslinux/initrd.gz # umount /mnt
3. syslinux のインストール
vfat 領域に syslinux コマンドで起動プログラムをインストールし,
メモリデバイスのMBRにdd コマンドでブートコードを書き込む(パーティション分割した場合のみ)
# syslinux /dev/sdb1 # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
起動パラメータ類の設定とファイル確認
# mount /dev/sdb1 /mnt # cat > /mnt/syslinux/syslinux.cfg default linux label linux kernel /syslinux/vmlinuz append root=/syslinux/initrd.gz ... 確認 ... # ls /mnt ldlinux.sys syslinux # ls /mnt/syslinux initrd.gz vmlinuz syslinux.cfg # umount /dev/sdb1
MBR + ext2,3領域を利用してLinuxを起動する
extlinux をUSBメモリ(/dev/sdb)へインストールする
1. USBメモリの準備
ext3パーティションがあるUSBメモリを用意する
Bootフラグが有効になっていること.有効でない場合はfdiskコマンドで設定しておく.
# /sbin/fdisk -l /dev/sdb Disk /dev/sdb: 131 MB, 131072000 bytes 5 heads, 50 sectors/track, 1024 cylinders, total 256000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xb0bcd68e Device Boot Start End Blocks Id System /dev/sdb1 2048 133119 65536 b W95 FAT32 /dev/sdb2 * 133120 255999 61440 83 Linux
2. ブートファイル類の配置
Linuxカーネルとinitrd.gz
# mount /dev/sdb1 /mnt # mkdir /mnt/extlinux # cp vmlinuz /mnt/extlinux/vmlinuz # cp initrd.gz /mnt/extlinux/initrd.gz # umount /mnt
3. extlinux のインストール
ext3 領域に extlinux コマンドで起動プログラムをインストールし,
メモリデバイスのMBRにdd コマンドでブートコードを書き込む(パーティション分割した場合のみ)
# mount /dev/sdb2 /mnt # /sbin/extlinux -i /mnt/extlinux /mnt/extlinux/ is device /dev/sdb2 # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
起動パラメータ類の設定とファイル確認
# mount /dev/sdb1 /mnt # cat > /mnt/extlinux/extlinux.conf default linux label linux kernel /extlinux/vmlinuz append root=/extlinux/initrd.gz ... 確認 ... # ls /mnt lost+found extlinux # ls /mnt/extlinux extlinux.conf initrd.gz vmlinuz # umount /dev/sdb1
---
update at 2022/11/28 16:35:02