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
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2015-04-02 服务器性能优化