BIOSとEFIの両方で起動出来るブートパーティションの作成
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BIOSで起動できないディスク | |
2TBを超えるディスク | |
4096bytes/sectorなディスク | |
fdisk pコマンド | |
physicalが 4096bytesでも logicalが 512bytesならセーフ | |
Sector size (logical/physical): 512 bytes / 512 bytes | |
# 古典的なMS-DOSパーティションテーブルを作成 | |
parted --script /dev/sdX 'mklabel msdos' | |
# 1MiB-513MiBを境界とする容量512MiBの起動パーティションを作成 | |
# 先頭1MiBを未使用にしておくのは主に grubが使用するから | |
parted --script /dev/sdX 'mkpart primary 1MiB 512MiB' | |
# 起動フラグをオンにする (BIOS向け) | |
parted --script /dev/sdX 'set 1 boot on' | |
# パーティションタイプをESPにする(EFI向け) | |
sfdisk --change-id /dev/sdX 1 ef | |
# 作成した起動パーティションをFAT32でフォーマットする | |
mkfs.vfat -F 32 /dev/sdX1 | |
# パーティションをマウントする | |
mount /dev/sdX1 /mnt | |
# grub用のディレクトリを作成 | |
mkdir /mnt/boot | |
# BIOS版 grubをインストール。MBR、ブートパーティションより前の未使用領域、ブートパーティションの /boot/grub以下に書き込みがされる | |
grub2-install --target=i386-pc --recheck --boot-directory=/mnt/boot /dev/sdX | |
# EFI用のディレクトリを作成 | |
mkdir -p /mnt/EFI/BOOT | |
# EFI版 grubをインストール。grub本体と必要なモジュールをPE形式の実行ファイルにまとめて所定の名前でブートパーティションに設置する。 | |
grub2-mkimage -o /mnt/EFI/BOOT/bootx64.efi -O x86_64-efi xfs fat part_gpt part_msdos normal linux echo all_video test multiboot multiboot2 search iso9660 gzio lvm chain configfile | |
# grubの設定ファイルを作成 (BIOS起動の場合もEFI起動の場合もこの設定ファイルが使用される) | |
vi /mnt/boot/grub/grub.cfg | |
set default=0 | |
set timeout=3 | |
set UUID=d78c847d-7f5e-4176-ba37-7d09f743c91d | |
menuentry 'Gentoo Linux' { | |
search --no-floppy --fs-uuid --set=root $UUID | |
echo 'Loading kernel...' | |
linux /boot/kernel root=UUID=$UUID | |
echo 'Loading initramfs...' | |
initrd /boot/initramfs | |
} | |
menuentry 'Rescue' { | |
echo 'Loading kernel...' | |
linux /boot/kernel | |
echo 'Loading rescue environment...' | |
initrd /boot/rescue | |
} | |
# パーティションをアンマウントして完了 | |
umount /mnt |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment