风.轻扬 发表于 2022-1-6 10:08:54

笔记本硬盘GPT+UEFI+GRUB2手动部署过程分享

本帖最后由 风.轻扬 于 2022-1-6 19:49 编辑

笔记本硬盘GPT+UEFI+GRUB2手动部署过程分享

手动部署,纯粹为了学习了解个中道理,内容仅供参考;若有错误遗漏,敬请包涵;欢迎讨论指教!
感谢无忧启动的大神们的工具及经验分享,包括但不限于Pauly、wintoflash、hilsonma、極限驅動、阿弥陀佛等

手动部署用到的软件和工具有:
      wintoflash修改版grub2,https://github.com/a1ive/grub/re ... grub2-latest.tar.gz
      bootice,Qemu,Notepad++
      
特别说明三点:
      本帖中的bat、txt文件使用Windows(CRLF)格式;cfg文件使用Unix(LF)格式;编码均使用UTF-8。照搬,可减少bug
      为突出自定义项目或关注点,+颜色标示
      grub的mod加载,各种文章不尽相同,没有看到权威说明,只能Ctrl+c & Ctrl+v,欢迎专家释疑!

成功引导截图      

模板下载




手动部署过程
电脑准备:
      进入bios,关闭安全启动
      电脑任意位置按与esp分区相同的目录结构建立文件夹,并准备文件
                \EFI\BOOT\BOOTX64.EFI(自定义)
                ----\grub\grub.cfg(自定义)
                ----------\fonts\unicode.pf2(字体支持中文)
                ----------\locale\zh_CN.mo(简体中文)
                ----------\themes(自定义)
                ----------\x86_64-efi(来自grub软件包)
      电脑任意位置建立文件夹,并准备使用grub启动的镜像文件,本例在(hd0,gpt5)
                \boot\winpe.iso,puppy

准备文件hd_efi_compile.cfg、hd_efi_build.bat、efi_builtin.txt,复制到grub2-latest解压的目录
      hd_efi_compile.cfg,定义grub两个主要参数
                search --no-floppy --set=root --file /EFI/grub/grub.cfg
                set prefix=($root)/EFI/grub
                configfile ($root)/EFI/grub/grub.cfg
      efi_builtin.txt,打包进BOOTX64.EFI的模块
                all_video blocklist boot cat chain commandline configfile echo efi_gop efi_uga exfat ext2 f2fs fat font gettext gfxmenu gfxterm gfxterm_background gfxterm_menu gzio halt help iso9660 jpeg linux linux16 loopback ls map memdisk newc normal ntboot ntfs part_gpt part_msdos png probe reboot regexp search search_fs_file search_fs_uuid tar terminal terminfo true udf vhd video video_bochs video_cirrus videoinfo wimboot xzio
      hd_efi_build.bat,生成BOOTX64.EFI批处理
                @echo off
                cd /d "%~dp0"
                set /p modules= < efi_builtin.txt
                grub-mkimage.exe -d x86_64-efi -c hd_efi_compile.cfg -p /EFI/grub -o Bootx64.efi -O x86_64-efi %modules%

进入grub2-latest目录,运行hd_efi_build.bat,生成启动管理器文件BOOTX64.EFI
运行bootice->uefi->启动项管理->修改启动序列,添加、修改启动管理器项EFI GRUB2,指向esp分区的\EFI\BOOT\BOOTX64.EFI,调整顺序到第一项
启动管理器选择窗口,在电脑开机时可以通过F8调出

管理员权限打开cmd访问esp
      diskpart
      lis disk,显示磁盘列表
      sel disk 0,选择磁盘0
      lis vol,显示卷列表
      sel vol 1,选择esp卷
      assign letter=m,为esp卷分配驱动器号m
管理员权限新开cmd窗口,访问esp,备份原文件,复制自定义文件
      m:,进入esp
      dir,查看确认esp
      cd \EFI\boot\,进入boot目录
      move Bootx64.efi Bootx64.efi.bak,备份原文件
      cd ..\..,回到esp根目录
       xcopy /S /W /F \EFI .\EFI,目录复制,将自定义的文件复制到esp
      tree /f,查看esp目录结构
      exit,关闭cmd窗口
      remove letter=m,进入另一个cmd窗口,删除分配的驱动器号
      exit,退出diskpart

部署完成的esp目录结构,有修改,供参考
      Esp分区,挂载为驱动器M,文件夹PATH列表
      │MHCOVERY.BIN
      └─EFI
                ├─Microsoft
                │├─Boot
                │└─Recovery
                ├─Boot
                │      Bootx64.efi.bak,原文件备份
                │      Bootx64.efi,自定义
                ├─HUAWEI
                ├─UpdateCapsule
                └─grub,自定义
                        │grub.cfg
                        ├─fonts
                        │      unicode.pf2
                        ├─locale
                        │      zh_CN.mo
                        ├─themes
                        │      background.png
                        │      select_c.png
                        │      select_e.png
                        │      select_w.png
                        │      theme.txt
                        └─x86_64-efi

grub.cfg参考配置,实际使用请清除所有#注释,请参考附件
###############
##(1)特殊变量##
###############
set check_signatures=no #禁止验证签名
set default=0 #默认启动第一个菜单项
set gfxmode=1152x864,1024x768,auto #按顺序使用分辨率,若失败则自动匹配
set font=${prefix}/fonts/unicode.pf2 #指定字体
set lang=zh_CN #将GRUB2设置为简体中文界面
set locale_dir=${prefix}/locale #指定翻译文件(*.mo)的目录,显示中文必须
set theme=${prefix}/themes/theme.txt #指定启动界面主题
set timeout=5 #设置菜单的超时时间为5秒
set imgpart=(hd0,gpt5) #设置镜像文件存放分区,因人而异
set imgpath=${imgpart}/boot #设置镜像文件目录
###############
##(2)公共模块##
###############
insmod part_gpt
#常见文件系统驱动
insmod fat
insmod ntfs
insmod iso9660
insmod all_video #一次性加载所有可用的视频驱动
insmod gfxterm #图形模式终端
insmod png #背景图片支持
#####################################
##(3)公共命令(必须放在模块和变量之后)##
#####################################
terminal_output gfxterm #激活图形模式的输出终端,以允许使用中文和背景图
loadfont ${font} #加载字体文件
#加载、设置主题
if background_image ${prefix}/themes/background.png; then
    set color_normal=white/black
    set color_highlight=black/white
else
    set menu_color_normal=cyan/blue
    set menu_color_highlight=white/blue
fi
#############
##(4)菜单项##
#############
#本地Windows系统
menuentry "Locale System Windows" "/EFI/Microsoft/Boot/bootmgfw.efi" --unrestricted {
      if search --no-floppy --file --set $2 ; then
                chainloader $2
      fi
}
#迷你Linux系统Puppy
if [ -f ${imgpath}/puppy/vmlinuz ] ; then
    menuentry "Puppy Linux" --unrestricted {
                clear
                echo "Starting ... ..."
                linux ${imgpath}/puppy/vmlinuz psubdir=/boot/puppy pfix=fsck,trim,copy PMEDIA=atahd
                initrd ${imgpath}/puppy/initrd.gz
    }
fi
#任意版本Windows pe更名为winpe
if [ -f ${imgpath}/winpe.iso ] ; then
      menuentry "Windows PE By Map" --unrestricted {
                clear
                echo "Starting ... ..."
                map -f "${imgpath}/winpe.iso";
      }
fi
menuentry "Reboot" --unrestricted { reboot ; }
menuentry "Halt" --unrestricted { halt ; }

最后,再分享一个主题,也许有人喜欢,哈哈!



开裆裤看 发表于 2022-1-6 10:23:08

不懂帮顶

zerogeorge 发表于 2022-1-6 11:21:29

感谢分享

dony2006 发表于 2022-1-6 11:44:30

行動表達~ ~ 感谢分享!

旁观者清 发表于 2022-1-6 12:49:06

谢谢分享。

zlzx01 发表于 2022-1-6 14:15:51

很值得学习!!

daijunjie 发表于 2022-1-6 17:29:44

感谢分享

风.轻扬 发表于 2022-1-6 19:57:22

1#楼分享一款卡哇伊新主题,喜欢的拿走不谢

wy-yang 发表于 2022-1-6 22:36:16

感谢分享

zhouzhy 发表于 2022-1-8 17:13:27

学习学习,感谢分享!

useQQqqq99 发表于 2022-1-21 11:17:41

感谢学习分享!

风.轻扬 发表于 2022-1-21 18:53:23


Grub2的手动硬盘部署告一段落,特此发帖感谢并致敬无忧启动!

今天分享给朋友们一个主题和最终grub.cfg模板,主要包括:
    三个迷你Linux版本puppy、porteux、weket的引导
    使用wintoflash大神提供的工具map、ntboot、wimboot,分别引导iso、vhdx、wim

全部实盘测试ok,请大家参考!

附件:主题和模板




有图有真相



vvqk 发表于 2022-1-21 18:57:56

谢谢分享。。

hqs4500 发表于 2022-3-14 17:14:47


感谢分享

newyeliao 发表于 2022-4-27 21:56:58

谢谢分享,自己动手。

szyang 发表于 2022-6-29 10:33:49

学习精神可嘉,感谢分享!

zyy 发表于 2022-7-3 22:10:51

谢谢分享
主题好看{:1_194:}

xkonka 发表于 2022-7-14 13:50:54

谢谢分享,学习学习

2011wolfsina 发表于 2022-9-5 22:50:00

为什么不打包为Bootx64.efi和grub.cfg两个文件更简洁?

geciwang 发表于 2022-9-6 23:27:27

谢谢分享

in9 发表于 2022-9-7 00:04:18

谢谢分享。学习了!

szyang 发表于 2022-9-7 13:20:12

功夫不负有心人。

Naushicaa 发表于 2022-9-24 10:18:57

谢谢分享。学习了!

lemontea888 发表于 2022-10-25 23:18:36

谢谢分享,收藏备用。感谢!

ppmjb2005 发表于 2022-12-6 15:00:13

多谢分享,学习一下。

qqbab 发表于 2022-12-13 22:45:26

模块都已经在make的时候打包进去了,为什么还要insmod?

1341614106 发表于 2022-12-17 23:19:31

66666666666
页: [1]
查看完整版本: 笔记本硬盘GPT+UEFI+GRUB2手动部署过程分享