无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 9181|回复: 26
打印 上一主题 下一主题

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

  [复制链接]
跳转到指定楼层
1#
发表于 2022-1-6 10:08:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 风.轻扬 于 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,欢迎专家释疑!

成功引导截图        

模板下载
grub_template.part2.rar (373.83 KB, 下载次数: 202)
grub_template.part1.rar (1000 KB, 下载次数: 232)


手动部署过程
电脑准备:
        进入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 ; }

最后,再分享一个主题,也许有人喜欢,哈哈!
themes.part1.rar (1000 KB, 下载次数: 119)
themes.part2.rar (267.11 KB, 下载次数: 109)

评分

参与人数 5无忧币 +21 收起 理由
xiaojiejun + 1
2010wxky6688 + 5 很给力!
天涯无痕 + 5 很给力!
wuxin9712 + 5
whyme22 + 5

查看全部评分

2#
发表于 2022-1-6 10:23:08 | 只看该作者
不懂帮顶
回复

使用道具 举报

3#
发表于 2022-1-6 11:21:29 | 只看该作者
感谢分享
回复

使用道具 举报

4#
发表于 2022-1-6 11:44:30 | 只看该作者
行動表達~ ~ 感谢分享!
回复

使用道具 举报

5#
发表于 2022-1-6 12:49:06 | 只看该作者
谢谢分享。
回复

使用道具 举报

6#
发表于 2022-1-6 14:15:51 | 只看该作者
很值得学习!!
回复

使用道具 举报

7#
发表于 2022-1-6 17:29:44 | 只看该作者
感谢分享
回复

使用道具 举报

8#
 楼主| 发表于 2022-1-6 19:57:22 | 只看该作者
1#楼分享一款卡哇伊新主题,喜欢的拿走不谢
回复

使用道具 举报

9#
发表于 2022-1-6 22:36:16 | 只看该作者
感谢分享
回复

使用道具 举报

10#
发表于 2022-1-8 17:13:27 | 只看该作者
学习学习,感谢分享!
回复

使用道具 举报

11#
发表于 2022-1-21 11:17:41 | 只看该作者
感谢学习分享!
回复

使用道具 举报

12#
 楼主| 发表于 2022-1-21 18:53:23 | 只看该作者

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

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

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

附件:主题和模板

grub.part2.rar (450.62 KB, 下载次数: 93)
grub.part1.rar (1000 KB, 下载次数: 98)

有图有真相



回复

使用道具 举报

13#
发表于 2022-1-21 18:57:56 | 只看该作者
谢谢分享。。
回复

使用道具 举报

14#
发表于 2022-3-14 17:14:47 | 只看该作者

感谢分享
回复

使用道具 举报

15#
发表于 2022-4-27 21:56:58 | 只看该作者
谢谢分享,自己动手。
回复

使用道具 举报

16#
发表于 2022-6-29 10:33:49 | 只看该作者
学习精神可嘉,感谢分享!
回复

使用道具 举报

17#
发表于 2022-7-3 22:10:51 | 只看该作者
谢谢分享
主题好看
回复

使用道具 举报

18#
发表于 2022-7-14 13:50:54 | 只看该作者
谢谢分享,学习学习
回复

使用道具 举报

19#
发表于 2022-9-5 22:50:00 | 只看该作者
为什么不打包为Bootx64.efi和grub.cfg两个文件更简洁?
回复

使用道具 举报

20#
发表于 2022-9-6 23:27:27 | 只看该作者
谢谢分享
回复

使用道具 举报

21#
发表于 2022-9-7 00:04:18 | 只看该作者
谢谢分享。学习了!
回复

使用道具 举报

22#
发表于 2022-9-7 13:20:12 | 只看该作者
功夫不负有心人。
回复

使用道具 举报

23#
发表于 2022-9-24 10:18:57 | 只看该作者
谢谢分享。学习了!
回复

使用道具 举报

24#
发表于 2022-10-25 23:18:36 | 只看该作者
谢谢分享,收藏备用。感谢!
回复

使用道具 举报

25#
发表于 2022-12-6 15:00:13 | 只看该作者
多谢分享,学习一下。
回复

使用道具 举报

26#
发表于 2022-12-13 22:45:26 | 只看该作者
模块都已经在make的时候打包进去了,为什么还要insmod?
回复

使用道具 举报

27#
发表于 2022-12-17 23:19:31 | 只看该作者
66666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 08:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表