无忧启动论坛

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

[原创] GRUB2 UEFI 下的磁盘仿真

    [复制链接]
221#
发表于 2019-12-21 21:52:32 | 只看该作者
freesoft00 发表于 2019-12-21 20:12
github早上下载,10点以前吧,其它点都比较慢,基本上很多都不好下载。

克隆到国内的码云,源代码压缩包下载倒是挺快,可是release版本克隆不下来。一个8MB的zip包,github下载时断时连,要下载半天。好难啊。

点评

码云是自动同步的源码 https://gitee.com/a1ive/grub 但是码云不支持同步releases,好像也不能自动发布releases, 而且最坑的是码云下载releases要登录.国内网站都有这种坏习惯.  详情 回复 发表于 2019-12-21 22:00
回复

使用道具 举报

220#
发表于 2019-12-21 21:51:33 | 只看该作者
江南一根葱 发表于 2019-12-21 20:01
如果是楼主的grub2,这个放进去生成就行了,取tftp上的,grub.cfg的。

感谢分享!
回复

使用道具 举报

219#
发表于 2019-12-21 20:12:29 | 只看该作者
liuzhaoyzz 发表于 2019-12-21 19:23
对于tinypxeserver,有路由器dhcp的环境,我感觉开启了proxydhcp,客户端反而获取不到ip地址,跟官网说的反 ...

github早上下载,10点以前吧,其它点都比较慢,基本上很多都不好下载。
回复

使用道具 举报

218#
发表于 2019-12-21 20:01:41 | 只看该作者
本帖最后由 江南一根葱 于 2019-12-21 20:12 编辑
liuzhaoyzz 发表于 2019-12-21 19:23
对于tinypxeserver,有路由器dhcp的环境,我感觉开启了proxydhcp,客户端反而获取不到ip地址,跟官网说的反 ...

如果是楼主的grub2,这个放进去生成就行了,取tftp上的,grub.cfg的。
build_netgrub.7z (483 Bytes, 下载次数: 15)

因为cfg是echo >暴力生成的,所以会提示奇怪的内容,删掉这几行自己编辑那两个cfg,保存成什么utf8无bom格式就不会提示奇怪的东西了。

点评

感谢分享!  详情 回复 发表于 2019-12-21 21:51
回复

使用道具 举报

217#
发表于 2019-12-21 19:23:22 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-21 19:26 编辑

对于tinypxeserver,有路由器dhcp的环境,我感觉开启了proxydhcp,客户端反而获取不到ip地址,跟官网说的反而相反,奇怪得很。

最新版的grub2-release,github好慢啊,只有不到20KB/S,谁能够分享到兰奏云?

点评

github早上下载,10点以前吧,其它点都比较慢,基本上很多都不好下载。  详情 回复 发表于 2019-12-21 20:12
如果是楼主的grub2,这个放进去生成就行了,取tftp上的,grub.cfg的。  详情 回复 发表于 2019-12-21 20:01
回复

使用道具 举报

216#
发表于 2019-12-21 19:09:22 | 只看该作者
liuzhaoyzz 发表于 2019-12-21 19:01
为什么要用ipxe.efi来启动grub2?grub2.efi直接pxe启动,添加http模块不行吗?
为什么要来回倒腾?

如果局域网中有路由,开了dhcp的话grub2就启不来了,
ipxe.efi支持proxydhcp啊,然后proxydhcp作为参数 把net_default_server弄成正确的ip地址,

所以和g4d一样来回倒腾一下。
回复

使用道具 举报

215#
 楼主| 发表于 2019-12-21 19:06:46 | 只看该作者
liuzhaoyzz 发表于 2019-12-21 19:01
为什么要用ipxe.efi来启动grub2?grub2.efi直接pxe启动,添加http模块不行吗?
为什么要来回倒腾?

可以。
来回倒腾是因为efi下grub2不支持proxydhcp,而ipxe支持。
回复

使用道具 举报

214#
发表于 2019-12-21 19:01:40 | 只看该作者
为什么要用ipxe.efi来启动grub2?grub2.efi直接pxe启动,添加http模块不行吗?
为什么要来回倒腾?

点评

如果局域网中有路由,开了dhcp的话grub2就启不来了, ipxe.efi支持proxydhcp啊,然后proxydhcp作为参数 把net_default_server弄成正确的ip地址, 所以和g4d一样来回倒腾一下。  详情 回复 发表于 2019-12-21 19:09
可以。 来回倒腾是因为efi下grub2不支持proxydhcp,而ipxe支持。  详情 回复 发表于 2019-12-21 19:06
回复

使用道具 举报

213#
发表于 2019-12-21 18:55:39 | 只看该作者
liuzhaoyzz 发表于 2019-12-21 18:39
能详细说下吗?或者有没有网址或者教程之类的?网上的知识太多,找起来太费劲了。
葱大有没有整理好的教程 ...

efi下网启我是用ipxe带参数启grub2的 ,Grub2在efi下目前不支持proxydhcp..
反正grub2下用(http),net_default_server对应http服务器的ip

比如取http://192.168.1.200/grub.cfg

net_default_server必须是192.168.1.200
就可以configfile (http)/grub.cfg取文件。。

就算你是本地启,执行一下net_dhcp,也可以取文件
回复

使用道具 举报

212#
发表于 2019-12-21 18:39:53 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-21 18:52 编辑

能详细说下吗?或者有没有网址或者教程之类的?网上的知识太多,找起来太费劲了。
葱大有没有整理好的教程?
w大说的, arch\x64\builtin.lst ,在最后添加 efinet http tftp 之类的,加上这些模块,是不是修改这个文件之后,定制命令也要相应加入?定制命令这里,路径怎么办?用于pxe-http启动的话,-p /boot/grub2要怎么改?迷茫
看了论坛里面的教程,定制命令pxe似乎和本地定制之后的grubx64.efi文件不能通用?
http://wuyou.net/forum.php?mod=viewthread&tid=411143

grub-mkimage -d x86_64-efi -p /boot/grub2 -c bootconfig.cfg -o grubx64.efi -O x86_64-efi blocklist boot chain configfile disk echo efi_gop efi_uga efiload exfat extcmd fat halt iso9660 ls minicmd normal ntfs part_gpt part_msdos progress reboot sbpolicy search terminal udf map font gfxterm linux linux16 vhd loopback regexp probe wimboot multiboot multiboot2 test help ext2 file

点评

efi下网启我是用ipxe带参数启grub2的 ,Grub2在efi下目前不支持proxydhcp.. 反正grub2下用(http),net_default_server对应http服务器的ip 比如取http://192.168.1.200/grub.cfg net_default_server必须是192.  详情 回复 发表于 2019-12-21 18:55
回复

使用道具 举报

211#
 楼主| 发表于 2019-12-21 18:32:54 | 只看该作者
本帖最后由 wintoflash 于 2019-12-21 18:42 编辑
liuzhaoyzz 发表于 2019-12-21 18:10
引导文件选择编译出来的grubx64.efi?他会找本地配置文件/boot/grub/grub.cfg,不会找webserver上面的grub ...

首先要编辑 arch\x64\builtin.txt ,在最后添加 efinet http tftp 之类的,加上这些模块。后面我就不清楚了,我不会网启。以前葱也没教会我。


回复

使用道具 举报

210#
发表于 2019-12-21 18:10:06 | 只看该作者

引导文件选择编译出来的grubx64.efi?他会找本地配置文件/boot/grub/grub.cfg,不会找webserver上面的grub.cfg,怎么办,找不到就进入了rescue。
葱大可有详细点的教程?你分享的经验太多了,看得目不暇接啊!
回复

使用道具 举报

209#
发表于 2019-12-21 18:01:52 | 只看该作者
liuzhaoyzz 发表于 2019-12-21 17:16
问下wintoflash大神,你修改的grub2,UEFI下面怎么实现网启PE.ISO?能否支持http协议?

map --mem (http)/xxoo.iso
回复

使用道具 举报

208#
发表于 2019-12-21 17:16:19 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-21 17:33 编辑

问下wintoflash大神,你修改的grub2,UEFI下面怎么实现网启PE.ISO?能否支持http协议?
回复

使用道具 举报

207#
 楼主| 发表于 2019-12-10 10:35:26 | 只看该作者
本帖最后由 wintoflash 于 2019-12-10 10:38 编辑

20191209更新
添加--rw(-w)参数,可以启用写入支持
  • 只支持内存盘,不会向本地的文件实际写入内容。
  • 此参数对光盘无效。

添加--nb(-n)参数,加载虚拟盘后不立即启动
  • 虚拟盘在grub2中是不可见的
  • 支持加载多个虚拟盘,最后一个盘不加-n参数就能启动了

读虚拟盘的时候,不再显示进度
虚拟盘的UUID不再固定,而是随机生成
    UUID不再固定为 ebe35ad8-6c1e-40f5-aaed-0b919a46bf4b
使用GitHub Actions自动编译
回复

使用道具 举报

206#
发表于 2019-12-1 18:53:08 | 只看该作者
本帖最后由 ggmm888 于 2019-12-1 18:57 编辑

grub.cfg显示中文菜单,加入下面内容,使用utf-8编码
terminal_output  gfxterm
loadfont /boot/grub/fonts/unicode.pf2
set locale_dir=/boot/grub/locale
set lang=zh_CN
set gfxmode=auto,800x600,1024x768

添加
语言文件 locale/zh_CN.mo
字体文件 fonts/unicode.pf2

grub.cfg是显示中文菜单,但是执行菜单出现PE不能正常显示等问题?在运行菜单命令时,英文完全不显示。这是在虚拟机中测试结果。
回复

使用道具 举报

205#
发表于 2019-11-30 22:37:34 | 只看该作者
ggmm888 发表于 2019-11-25 16:13
我是在虚拟机中测试的,虚拟机中中文是??号,实机无条件测试。
多谢了

关于中文显示请参考http://bbs.wuyou.net/forum.php?m ... &fromuid=586362
回复

使用道具 举报

204#
发表于 2019-11-25 16:13:20 | 只看该作者
我是在虚拟机中测试的,虚拟机中中文是??号,实机无条件测试。
多谢了
回复

使用道具 举报

203#
发表于 2019-11-25 15:12:12 | 只看该作者
本帖最后由 hilsonma 于 2019-11-25 15:20 编辑
ggmm888 发表于 2019-11-24 22:16
grub.cfg 菜单喜欢显示中文

喜欢中文菜单就直接使用中文菜单,不需要特别设置:
menuentry "菜单 1" {
  echo 1
}
menuentry "菜单 2" {
  echo 2
}
只是在虚拟机下有可能中文显示不全,实机一般都能显示的。

另外,这条菜单是bios平台下用的
menuentry "启动ISO文件" {
search --file /neyan/grub/memdisk --set=root
linux16  /neyan/grub/memdisk  iso
initrd16 /rdtobot/DG.iso
}
uefi平台下:
menuentry "启动ISO文件" "/rdtobot/DG.iso" {
        search -s -f $2
        map $2
        boot
}
但你这个DG.iso应该是不能在uefi平台下启动的,必须是支持uefi启动的iso文件才可以用上面这条菜单启动。
把/rdtobot/DG.iso 替换为你要启动的支持uefi的iso文件。
支持uefi的iso文件一般都有\efi\boot\bootx64.efi这样的文件,也可能是efi.img这样的文件。

回复

使用道具 举报

202#
发表于 2019-11-24 22:16:24 | 只看该作者
grub.cfg 菜单喜欢显示中文
回复

使用道具 举报

201#
发表于 2019-11-23 16:04:15 | 只看该作者
本帖最后由 ggmm888 于 2019-11-23 20:00 编辑

set pager=0;
set debug=off;
export enable_progress_indicator=0;

loadfont ${prefix}/fonts/unicode.xz;
export locale_dir=${prefix}/locale;

set lang=en_US

export gfxmode=1024x768;
export gfxpayload=keep;
terminal_output gfxterm;

export theme=$prefix/themes/slack/theme.txt;

menuentry "menu 1" {
  echo 1
}
menuentry "menu 2" {
  echo 2
}

en_US语言,unicode.xz字体,这两个文件如何得来?

GRUB2 UEFI 下的磁盘仿真,grub2   下载:https://github.com/aIive/builds/archive/master.zip 这个文件里面没有,还是不适合使用中文?


还有一个问题,得到的bootx64.efi文件,在纯UEFI下启动ISO镜像,就是ISO镜像必须附合UEFI规范的才能启动,符合BIOS镜像不能启动,对吗?测试分区工具DG.ISO不能启动


启动ISO文件:
menuentry "启动ISO文件" {
search --file /neyan/grub/memdisk --set=root
linux16  /neyan/grub/memdisk  iso
initrd16 /rdtobot/DG.iso
}

上面的工具,启动ISO文件应如何写菜单,MAP菜单不能使用
回复

使用道具 举报

200#
发表于 2019-11-23 14:02:31 | 只看该作者
好贴,收藏先。
回复

使用道具 举报

199#
发表于 2019-11-23 13:47:47 | 只看该作者
不错,太牛逼了!收藏!
回复

使用道具 举报

198#
发表于 2019-11-23 11:02:06 | 只看该作者
谢谢分享,非常给力
回复

使用道具 举报

197#
发表于 2019-11-21 15:42:11 | 只看该作者

I appreciate you. i changed yours.Good working.
回复

使用道具 举报

196#
 楼主| 发表于 2019-11-21 15:08:38 | 只看该作者
2012apple3000 发表于 2019-11-21 14:40
good work. do you use theme? is it inner grub.cfg? i want use myUSB:\boot/grub/grub.cfg
would you ...
  1. set pager=0;
  2. set debug=off;
  3. export enable_progress_indicator=0;

  4. loadfont ${prefix}/fonts/unicode.xz;
  5. export locale_dir=${prefix}/locale;

  6. set lang=en_US

  7. export gfxmode=1024x768;
  8. export gfxpayload=keep;
  9. terminal_output gfxterm;

  10. export theme=$prefix/themes/slack/theme.txt;

  11. menuentry "menu 1" {
  12.   echo 1
  13. }
  14. menuentry "menu 2" {
  15.   echo 2
  16. }
复制代码
回复

使用道具 举报

195#
发表于 2019-11-21 15:05:15 | 只看该作者
本帖最后由 2012apple3000 于 2019-11-21 15:11 编辑

this is my efi grub.cfg and theme

compiled_bootx64.efi(created with your bat commandline)


boot.7z

1.41 MB, 下载次数: 20, 下载积分: 无忧币 -2

回复

使用道具 举报

194#
发表于 2019-11-21 14:40:29 | 只看该作者
本帖最后由 2012apple3000 于 2019-11-21 14:41 编辑

good work. do you use theme? is it inner grub.cfg? i want use myUSB:\boot/grub/grub.cfg
would you show sample grub.cfg?



2019-11-21_15-35-42.jpg (264.09 KB, 下载次数: 303)

2019-11-21_15-35-42.jpg
回复

使用道具 举报

193#
 楼主| 发表于 2019-11-21 14:22:06 | 只看该作者
2012apple3000 发表于 2019-11-21 13:20
grub-mkimage -d x86_64-efi -p /boot/grub -o grubx64.efi -O x86_64-efi acpi affs afs all_video bfs  ...

can't reproduce
testx64.efi.7z (1.78 MB, 下载次数: 14)

回复

使用道具 举报

192#
发表于 2019-11-21 14:20:59 | 只看该作者
chenall 发表于 2019-11-20 14:42
借楼问一下GRUB2有没有比较好的学习教程.有时间我也想来学习下grub2

官网只是简单的介绍,有好多命令我看 ...

我是看了这篇,然后就慢慢上手了。
http://www.jinbuguo.com/linux/grub.cfg.html

时不时也参考一下官方文档。
http://www.gnu.org/software/grub/manual/grub/grub.html

有时还需要网上搜索补充学习,如正则表达式。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-20 09:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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