base
# https://www.v2ex.com/t/466839
Hybrid MBR(MBR 混合分区表)
MBR 分区方案中,磁盘的第一个扇区( 512 字节),存放磁盘引导代码和 4 个分区表项。这 512 个字节被称为 MBR
GPT 分区方案中,分区表放在第 2~33 扇区,共 33 个扇区( 512 * 33 字节),另外在磁盘最末尾 33 个扇区,备份一个分区表。
因为第一个扇区已被 MBR 分区方案使用,GPT 分区方案保留第一扇区,被称为 protective MBR。 protective MBR 上只有一个分区项,并标记为特殊的"EE"类型,尽可能大的覆盖整个磁盘。防止只识别 MBR 的系统操作磁盘。
Hybrid MBR 就是利用这个 protective MBR,重新开辟出分区表,并和 GPT 分区表的分区区块位置保持一致。从而激活 MBR 系统识别分区。
bootloader
# https://www.slant.co/topics/4820/~linux-bootloaders
1. GNU GRUB
2. Syslinux
3. rEFInd
4. Clover Bootloader
5. BURG
6. systemd-boot (Gummiboot)
7. LILO
1. x86_64
disk partion
1. gparted
设置分区表GPT,新建主分区FAT32,格式化分区FAT32,设置分区flag为boot
2. gdisk
剩余1M空间创建分区, GUID设置为ef02(BIOS boot partition),不需要格式化
3. 分区信息
sudo parted /dev/sdd print
Number Start End Size File system Name Flags
1 1049kB 61.5GB 61.5GB fat32 boot, esp
2 61.5GB 61.5GB 1032kB BIOS boot partition bios_grub
install grub
# 挂载分区
sudo mount /dev/sdd1 /mnt -o uid=$USER,gid=$USER
# x86_64: grub-efi-amd64-bin
sudo grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sdd --recheck
sudo grub-install --target=x86_64-efi --efi-directory=/mnt --boot-directory=/mnt/boot /dev/sdd --removable
/boot/grub/grub.cfg
# https://github.com/Jimmy-Z/grub-iso-boot/blob/master/grub.cfg
# http://www.jinbuguo.com/linux/grub.cfg.html
insmod part_gpt
insmod part_msdos
insmod fat
insmod ntfs
insmod iso9660
insmod udf
search --no-floppy --label --set isopart DATA
menuentry "Ubuntu Desktop 64bit ISO" {
set isofile=/boot/iso/ubuntu-14.04.3-desktop-amd64+mac.iso
loopback loop ($isopart)$isofile
linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 --
initrd (loop)/casper/initrd.lz
}
menuentry "Ubuntu Server 64bit ISO" {
set isofile=/boot/iso/ubuntu-14.04.3-server-amd64+mac.iso
loopback loop ($isopart)$isofile
set gfxpayload=keep
linux (loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed iso-scan/filename=$isofile quiet --
initrd (loop)/install/initrd.gz
}
2. arm64
分区
分区表msdos,一个fat32分区,标签DATA,标志boot
install grub
# 挂载分区
sudo mount /dev/sdd1 /mnt -o uid=$USER,gid=$USER
# arm64: grub-efi-arm64-bin
sudo grub-install --target=arm64-efi --efi-directory=/mnt --boot-directory=/mnt/boot /dev/sdd --recheck --removable
/boot/grub/grub.cfg
insmod part_gpt
insmod part_msdos
insmod fat
insmod ntfs
insmod iso9660
insmod udf
search --no-floppy --label --set isopart DATA
set timeout=3
if loadfont /boot/grub/fonts/unicode.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
menuentry 'kylin 4.0.2-sp2 desktop arm64 install' {
set default=liveinstall
set gfxpayload=keep
set isofile=/iso/Kylin-4.0.2-desktop-sp2-181112.J1-arm64.iso
loopback loop ($isopart)$isofile
linux (loop)/casper/Image boot=casper iso-scan/filename=$isofile splash
initrd (loop)/casper/initrd.img
}
menuentry 'kylin 4.0.2-sp2 server arm64 install' {
set default=install
set gfxpayload=keep
set isofile=/iso/Kylin-4.0.2-server-sp2-18071110.J1-arm64.iso
loopback loop ($isopart)$isofile
linux (loop)/casper/Image boot=casper iso-scan/filename=$isofile splash
initrd (loop)/casper/initrd.img
}