文章目录

  • Grub2 引导 WIM / Slax Linux (BIOS & UEFI)
    • 安装Grub2到U盘 / 硬盘
      • 1. 准备分区格式
      • 2.安装Grub2
      • 3.复制Grub2 配置文件和主题
      • 4. 目录结构
      • 5. 测试引导
    • WIM引导说明
      • 1. Legacy BIOS模式下引导大致原理
      • 2. 如何自定义bootmgr的BCD文件位置
      • 3.如何修改BCD文件配置
      • 4. UEFI引导大致原理
    • 配置文件下载
    • 参考

Grub2 引导 WIM / Slax Linux (BIOS & UEFI)

安装Grub2到U盘 / 硬盘

1. 准备分区格式

  • 主分区1(FAT32) (UEFI引导需要)
  • 主分区2(NTFS)

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

2.安装Grub2

sudo -s
# 安装依赖库
apt install grub2-common grub-pc grub-efi-amd64
# 挂载要安装的硬盘或者U盘,根据实际的设备修改(以下类似)
mount /dev/sda1 /mnt
grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sda
grub-install --target=x86_64-efi --efi-directory=/mnt --boot-directory=/mnt/boot --removable

结果如下

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

3.复制Grub2 配置文件和主题

以下主题是从该项目中生成

https://github.com/vinceliuice/grub2-themes

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#### BEGIN /etc/grub.d/00_header ###set default="0"if [ x"${feature_menuentry_id}" = xy ]; thenmenuentry_id_option="--id"
elsemenuentry_id_option=""
fi
export menuentry_id_optionfunction load_video {if [ x$feature_all_video_module = xy ]; theninsmod all_videoelseinsmod efi_gopinsmod efi_ugainsmod ieee1275_fbinsmod vbeinsmod vgainsmod video_bochsinsmod video_cirrusfi
}font=unicode
if loadfont $font ; thenset gfxmode=1024x768x32,1024x768x24,1024x768x16,1024x768,autoset gfxpayload=keepload_videoinsmod gfxtermterminal_output gfxterm
fi
insmod part_msdos
insmod ntfsinsmod gfxmenu
loadfont $prefix/themes/Tela/unifont-regular-16.pf2
insmod jpeg
insmod png
set theme=$prefix/themes/Tela/theme.txt
export theme
set timeout=15### BEGIN /etc/grub.d/05_debian_theme ###
# set menu_color_normal=white/black
# set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###menuentry "微PE X64" --class windows {if [ x$grub_platform == xpc ] ; theninsmod ntldrif search --file --set /WEPE/WEPE64.WIM ; thenntldr /WEPE/WEPEMGRfielif [ x$grub_platform == xefi ] ; thenif search --file --set /WEPE/WEPE64.WIM ; thenchainloader /WEPE/bootmgfw.efififi
}# 从Slax光盘复制slax文件夹到硬盘/U盘即可
# 虚拟机下硬盘类型选择为IDE模式,否则slax可能无法引导
menuentry "Slax Linux" --class debian {search --file --set /slax/boot/vmlinuzlinux /slax/boot/vmlinuz vga=normal load_ramdisk=1 prompt_ramdisk=0 ro printk.time=0 slax.flags=toraminitrd /slax/boot/initrfs.img
}menuentry '引导本地硬盘Window' --class cancel {if [ 'pc' == $grub_platform ] ; thenif search --file --hint-bios=hd1,msdos1 --set /bootmgr ; thenchainloader +1elif search --file --hint-bios=hd1,msdos1 --set /ntldr ; thenchainloader +1fielif [ 'efi' == $grub_platform ] ; thenif search --file --hint-efi=hd1,msdos1 --set /EFI/Microsoft/Boot/bootmgfw.efi ; thenchainloader /EFI/Microsoft/Boot/bootmgfw.efififi
}menuentry '关闭计算机' --class shutdown {halt
}menuentry '重启计算机' --class restart {reboot
}

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

4. 目录结构

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网
Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

5. 测试引导

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

WIM引导说明

1. Legacy BIOS模式下引导大致原理

2. 如何自定义bootmgr的BCD文件位置

bootmgr 默认是寻找\boot\bcd, 可以使用工具修改位置,本例中修改到\WEPE\B64

使用工具BMplus

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

3.如何修改BCD文件配置

从PE光盘镜像中提取样本BCD(传统模式和UEFI模式模板有可能同,分别单独提取编辑)文件,修改wimboot.sdi路径即可

使用工具BOOTICE

Legacy BIOS B64

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

UEFI模式bcd保持原名, bootmgfw.efi会寻找同目录该文件

Grub2 引导 WIM / Slax Linux (BIOS  UEFI)-编程知识网

4. UEFI引导大致原理

配置文件下载

  • 链接: https://pan.baidu.com/s/13f3DAsvB7a4NQLEnLTgjIg

  • 提取码: tszu

参考

  • https://www.aioboot.com/en/install-grub2-from-windows/
  • http://www.jinbuguo.com/linux/grub.cfg.html
  • http://www.wepe.com.cn/download.html
  • ······