无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 10722|回复: 19
打印 上一主题 下一主题

[发布] 自己制作系统U盘

  [复制链接]
跳转到指定楼层
1#
发表于 2018-2-10 04:25:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 911061873 于 2018-2-10 18:51 编辑

最近刚接触grub2,想全部自己动手打,造一个支持双启动的U盘。并可以安装Windows系统。
我会把相关经验写出来自己留存,也可以供大家参考。
如有错误或者更好的方法,欢迎交流。

1.准备工作
准备一个U盘
        我把它分成了两个区,一个FAT32分区放grub相关文件,一个NTFS分区放一下系统的镜像文件。
        因为FAT32不支持单个文件大小超过4G,所以要分成两个区。
下载GRUB2
        从grub官网下载for windows版本的。
        这里给出当前(2018年2月10日)最新版本的链接  grub-2.02-for-windows.zip

2.安装grub2到U盘
        把下载好的grub2解压,插入U盘。
        以管理员方式启动CMD窗口并切换到当前解压的目录。
        运行
  1. wmic diskdrive list brief
复制代码
查看U盘的设备ID
       
        那个“\\.\PHYSICALDRIVE2 ”就是U盘的设备ID
        接着运行
  1. #安装BIOS到U盘
  2. grub-install.exe --boot-directory=g: --recheck --target=i386-pc \\.\PHYSICALDRIVE2
  3. #安装UEFIx32到U盘
  4. grub-install.exe --boot-directory=g: --recheck --target=i386-efi --efi-directory=g: --no-nvram --removable \\.\PHYSICALDRIVE2
  5. #安装UEFIx64到U盘
  6. grub-install.exe --boot-directory=g: --recheck --target=x86_64-efi --efi-directory=g: --no-nvram --removable \\.\PHYSICALDRIVE2
复制代码

        其中的“g:”为我的U盘中的FAT32分区的盘符。
        至此已经做好的一个支持BIOS+UEFI的启动U盘了,但目前是命令版的,还没有配置菜单。

3.配置菜单
        配置菜单我参考的这篇文章GRUB2配置文件"grub.cfg"详解
        以下是我的配置文件
  1. #################
  2. ## (1)特殊变量 ##
  3. #################
  4. #默认启动第一个菜单项
  5. set default=0
  6. #如果第一个菜单项启动失败,转而启动第二个菜单项
  7. set fallback=1
  8. #优先使用最常规的1024x768分辨率,以保证在不同的屏幕上拥有一致的菜单效果,如果失败再自动匹配分辨率
  9. set gfxmode=1024x768,auto
  10. #使用自己制作的24px的大号字体以避免默认字体太小看不清
  11. set gfxterm_font=unicode
  12. #将GRUB2设置为简体中文界面
  13. set lang=zh_CN
  14. #指定翻译文件(*.mo)的目录,若未明确设置此目录,则无法显示中文界面。
  15. set locale_dir=$prefix/locale
  16. #每一满屏后暂停输出,以免信息太多一闪而过看不清
  17. set pager=1
  18. #开启密码验证功能,并设置一个名为'root'的超级用户
  19. #set superusers=root
  20. #设置菜单的超时时间为5秒
  21. set timeout=30
  22. #设置主题文件路径
  23. #set theme=$prefix/themes/starfield/theme.txt
  24. #设置菜单选项颜色
  25. set menu_color_normal=green/black
  26. set menu_color_highlight=white/cyan

  27. #################
  28. ## (2)公共模块 ##
  29. #################
  30. #两种最流行的磁盘分区格式
  31. insmod part_gpt
  32. insmod part_msdos
  33. #常见文件系统驱动
  34. insmod btrfs
  35. insmod exfat
  36. insmod ext2
  37. insmod fat
  38. insmod iso9660
  39. insmod jfs
  40. insmod ntfs
  41. insmod reiserfs
  42. insmod udf
  43. insmod xfs
  44. insmod zfs
  45. #一次性加载所有可用的视频驱动
  46. insmod all_video
  47. #图形模式终端
  48. insmod gfxterm
  49. #背景图片支持
  50. insmod png


  51. #########################################
  52. ## (3)公共命令(必须放在模块和变量之后) ##
  53. #########################################
  54. #激活图形模式的输出终端,以允许使用中文和背景图
  55. terminal_output  gfxterm
  56. export menu_color_normal menu_color_highlight;
  57. #设置背景图片
  58. background_image $prefix/themes/1024x768.png
  59. #加载自己制作的24px的大号字体文件($prefix/fonts/WenQuanYiMicroHeiMono24px.pf2)
  60. loadfont unicode
  61. #设置'root'用户的哈希密码[通过"grub-mkpasswd-pbkdf2"工具生成]
  62. #password_pbkdf2 root grub.pbkdf2.sha512.69.7DBCA469F80EA1C0A8A1E2FEBC4F8463.B073C1C89EC1E85309C3D6A1BAFF4356

  63. #################
  64. ## (4)菜单项   ##
  65. #################

  66. menuentry '[1]正常启动(Windows)' --hotkey=1{
  67.     if [ 'pc' == $grub_platform ] ; then
  68.         if search --file --set --no-floppy /bootmgr ; then
  69.             chainloader +1
  70.         elif search --file --set --no-floppy /ntldr ; then
  71.             chainloader +1
  72.         else
  73.             echo '没有找到Windows'
  74.             sleep --verbose 5
  75.         fi
  76.     fi

  77.     if [ 'efi' == $grub_platform ] ; then
  78.         if search --file --set --no-floppy /EFI/Microsoft/Boot/bootmgfw.efi ; then
  79.             chainloader /EFI/Microsoft/Boot/bootmgfw.efi
  80.         else
  81.             echo '没有找到Windows'
  82.             sleep --verbose 5
  83.         fi
  84.     fi
  85. }
  86. if [ 'pc' == $grub_platform ] ; then
  87.         source ${prefix}/bios.cfg
  88. else
  89.         if [ "x86_64" == $grub_cpu ] ; then
  90.                 source ${prefix}/efi64.cfg
  91.         else
  92.                 source ${prefix}/efi32.cfg
  93.         fi
  94. fi
  95. menuentry "[p]关机" --hotkey=p{
  96. halt
  97. }
  98. menuentry "[r]重启" --hotkey=r{
  99. reboot
  100. }
复制代码




接下来我要研究UEFI载入PE的问题。成功了我就继续更帖。

评分

参与人数 1无忧币 +5 收起 理由
lbw2007 + 5 感谢分享,支持原创

查看全部评分

2#
发表于 2018-2-10 05:45:49 | 只看该作者
抢个沙发
回复

使用道具 举报

3#
发表于 2018-2-10 08:32:54 | 只看该作者
谢谢分享
回复

使用道具 举报

4#
发表于 2018-2-10 09:00:29 | 只看该作者
下载了,谢谢分享
回复

使用道具 举报

5#
发表于 2018-2-10 09:45:15 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
发表于 2018-2-10 09:50:39 | 只看该作者
好东西。谢谢
回复

使用道具 举报

7#
发表于 2018-2-10 20:18:15 | 只看该作者
支持一下!
回复

使用道具 举报

8#
发表于 2018-2-10 20:28:55 | 只看该作者
这个非常赞啊!把自己的点滴心得拿出来跟大家分享。
谢LZ!
回复

使用道具 举报

9#
发表于 2018-2-16 10:11:42 | 只看该作者
不错,很给力!
回复

使用道具 举报

10#
发表于 2018-2-16 22:17:55 | 只看该作者
支持!!!
回复

使用道具 举报

11#
发表于 2018-2-17 18:48:51 | 只看该作者
回复

使用道具 举报

12#
发表于 2018-2-24 09:14:02 | 只看该作者
Legacy引导的菜单配置文件我找到位置了,位于/grub/grub.cfg,可是EFI引导的配置文件在什么位置?或者说用你的这个方法安装的/EFI/BOOT/BOOTX64.EFI 这个文件指向???
回复

使用道具 举报

13#
发表于 2018-2-24 11:29:03 | 只看该作者
谢谢分享,辛苦发帖,学习中
回复

使用道具 举报

14#
发表于 2018-2-25 20:56:32 | 只看该作者
wintoflash 发表于 2018-2-24 09:52
legacy-bios和efi的配置文件是同一个。

你应该没有按照楼主的方法实体操作吧!我实体操作,它们并没有指向同一个配置文件,菜单不一样
回复

使用道具 举报

15#
发表于 2018-4-4 09:47:03 | 只看该作者
感谢无私分享,辛苦发帖,学习中。
回复

使用道具 举报

16#
发表于 2018-4-5 23:31:23 | 只看该作者
lz给的命令,uefi模式64位的grub2的安装是写入到扇区,还是通过efi文件启动?
回复

使用道具 举报

17#
发表于 2018-4-5 23:32:02 | 只看该作者
lz给的命令,uefi模式64位的grub2的安装是写入到扇区,还是通过efi文件启动?
回复

使用道具 举报

18#
发表于 2018-4-28 14:08:43 | 只看该作者
路过进来学习一下!
回复

使用道具 举报

19#
发表于 2018-4-28 14:20:42 | 只看该作者
回复

使用道具 举报

20#
发表于 2019-12-2 11:03:08 | 只看该作者
终于找到了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 00:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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