无忧启动论坛

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

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

    [复制链接]
601#
发表于 2021-6-17 17:51:13 | 只看该作者
liuzhaoyzz 发表于 2021-6-17 17:05
proxydhcp不是你心仪已久的吗?
你在哪里看到的?
有changelog吗?

启动出来看过了,还没想好用啥姿势给ipxe传递性息。
回复

使用道具 举报

602#
 楼主| 发表于 2021-6-17 20:04:45 | 只看该作者
本帖最后由 wintoflash 于 2021-6-17 20:10 编辑
liuzhaoyzz 发表于 2021-6-17 11:00
https://ftp.gnu.org/gnu/grub/
        grub-2.06-for-windows.zip        2021-06-08 13:21        12 ...
想请问下,grub2的changelog在哪里?

我也是醉了。你下载 grub-2.06.tar.gz (或者 tar.xz),里面有个 NEWS。

想看详细的,就看它的提交历史 (commit history)
http://git.savannah.gnu.org/cgit/grub.git

点进去详细看或者点 expand,可以看到修改原因,作者、审核人员。每一根毛都看得清清楚楚,比 AV 都清晰。


点评

想请教下,对于你魔改的grub2和官方GNU grub2,对于启动linux方面,具体有哪些革命性的改进,就是说原来GNU grub2做不到的,你做到了? 有优点尽管说!请不要谦虚!  详情 回复 发表于 2024-4-29 09:31
哦,看到了,很详细的解释!  详情 回复 发表于 2021-6-17 21:24
回复

使用道具 举报

603#
发表于 2021-6-17 21:24:47 | 只看该作者
wintoflash 发表于 2021-6-17 20:04
我也是醉了。你下载 grub-2.06.tar.gz (或者 tar.xz),里面有个 NEWS。

想看详细的,就看它的提交历 ...

哦,看到了,很详细的解释!
回复

使用道具 举报

604#
发表于 2021-8-12 08:30:00 | 只看该作者
大神现在还在开发E2B的EFI启动项目吗,昨天重新用了V1.73的版本,无论用Isodef 还是map启动,发现启动H3后无法点击外置配置,WAIGO 的PE直接无法启动,但是把这两个PE做出IMGPTN形式后,完全正常。imgPTN的PE兼容性更好。另外问一下大神,我做盘是分了三个区,第一个区80G为E2B的,第二个10G为EFI的,第三个区30G,总共120G的U盘,看说明弄的,不知对不对?

点评

Easy2Boot 不是我开发的。它的 UEFI 部分是基于我的 grubfm 修改的。据我所知,它启动 WinPE 的时候,可能是直接把 ISO 挂载到 Y 盘的。而国内 PE 大多数都需要把外部数据加载到 Y 盘,这会造成冲突。 至于 WAIGO  详情 回复 发表于 2021-8-12 13:09
回复

使用道具 举报

605#
 楼主| 发表于 2021-8-12 13:09:34 | 只看该作者
brook 发表于 2021-8-12 08:30
大神现在还在开发E2B的EFI启动项目吗,昨天重新用了V1.73的版本,无论用Isodef 还是map启动,发现启动H3后 ...

Easy2Boot 不是我开发的。它的 UEFI 部分是基于我的 grubfm 修改的。据我所知,它启动 WinPE 的时候,可能是直接把 ISO 挂载到 Y 盘的。而国内 PE 大多数都需要把外部数据加载到 Y 盘,这会造成冲突。
至于 WAIGO 的 PE 无法启动,那是因为 WAIGO 的 PE 带了不稳定的 SVBus 驱动。你应该找到启动 ISO 的配置文件,在 map 后面加上 -g 选项。
    map [--pause] [--mem] [--type=CD|HD|FD] FILE
        -m, --mem  加载到内存
        --rt 指定内存盘在操作系统加载后不被释放
        ...
        -g, --no_g4d  不向内存写入 GRUB4DOS map 信息
        -f, --first 使该设备位于磁盘列表的第一位

点评

谢谢大神的指点,我试试。  详情 回复 发表于 2021-8-12 18:10
回复

使用道具 举报

606#
发表于 2021-8-12 18:10:09 | 只看该作者
wintoflash 发表于 2021-8-12 13:09
Easy2Boot 不是我开发的。它的 UEFI 部分是基于我的 grubfm 修改的。据我所知,它启动 WinPE 的时候,可 ...

谢谢大神的指点,我试试。
回复

使用道具 举报

607#
发表于 2021-9-14 12:49:55 来自手机 | 只看该作者
传统BIOS下无法使用map命令?

点评

没必要开发。  详情 回复 发表于 2021-9-14 13:58
回复

使用道具 举报

608#
 楼主| 发表于 2021-9-14 13:58:22 | 只看该作者
求道者 发表于 2021-9-14 12:49
传统BIOS下无法使用map命令?

没必要开发。
回复

使用道具 举报

609#
发表于 2021-11-10 16:55:23 | 只看该作者
为什么按照示例命令编译时,提示efifwsetup模块不存在呢

点评

删掉efifwsetup就行了。  详情 回复 发表于 2021-11-11 12:40
回复

使用道具 举报

610#
 楼主| 发表于 2021-11-11 12:40:50 | 只看该作者
201287zr 发表于 2021-11-10 16:55
为什么按照示例命令编译时,提示efifwsetup模块不存在呢

删掉efifwsetup就行了。
另外示例命令那个不叫编译。

点评

loopback启动菜单最下面一行的提示,因为默认没有加载字库,导致出现乱码现象,这怎么解决?set default=1 set fallback=1 set timeout=3 set pager=20 set grub_draw_border=1 #设定菜单字体及背景颜色 set  详情 回复 发表于 2022-3-16 10:35
大神有空请看下751楼,http://www.lucky8k.com/forum.php?mod=redirect&goto=findpost&ptid=133372&pid=652600 到758楼http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=423423&pid=4448229&fromuid=29  详情 回复 发表于 2021-12-21 08:15
回复

使用道具 举报

611#
发表于 2021-12-21 08:15:12 | 只看该作者
wintoflash 发表于 2021-11-11 12:40
删掉efifwsetup就行了。
另外示例命令那个不叫编译。

大神有空请看下751楼,http://www.lucky8k.com/forum.php ... d=133372&pid=652600
到758楼http://wuyou.net/forum.php?mod=r ... 8229&fromuid=298214
是怎么回事?高分辨率2880x1800的MAC,找不到/boot/grub/grub.cfg
grubx64.efi是用默认的build.bat生成的。
回复

使用道具 举报

612#
发表于 2022-2-10 23:06:16 | 只看该作者
Thank you for sharing
回复

使用道具 举报

613#
发表于 2022-3-16 10:35:03 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-3-16 10:46 编辑
wintoflash 发表于 2021-11-11 12:40
删掉efifwsetup就行了。
另外示例命令那个不叫编译。

loopback启动菜单最下面一行的提示,因为默认没有加载字库,导致出现乱码现象,这怎么解决?
硬盘里面grub2的菜单/boot/grub.cfg相关内容如下:
set default=1
set fallback=1
set timeout=3
set pager=20
set grub_draw_border=1

#设定菜单字体及背景颜色
set menu_color_normal=white/black
set menu_color_highlight=white/blue

#插入动态模块:保存在$prefix/boot/grub2/i386-pc中
insmod vga
insmod vbe
insmod font
insmod gfxterm
insmod terminal
insmod linux
insmod linux16
insmod iso9660
insmod udf
insmod help
insmod echo
insmod ls
insmod cat
insmod chain
insmod configfile
insmod reboot
insmod halt
insmod gzio
insmod xzio
insmod tar
insmod loopback
insmod part_gpt
insmod regexp
insmod wimboot
insmod ntboot
insmod probe
insmod partnew
insmod test
insmod newc
insmod memdisk
insmod ntldr

set locale_dir=/boot/grub2/locale
set lang=zh_CN
loadfont /boot/grub2/fonts/unicode.pf2
set gfxterm_font=unicode
#set gfxmode=auto,800x600,1024x768
set gfxmode=1024x768,800x600,auto
set gfxpayload=keep
terminal_output gfxterm


menuentry "/linux/veket/v22.a-2022.02.02/veket_22.a.iso-loopback.cfg" "/linux/veket/v22.a-2022.02.02/veket_22.a.iso" {
terminal_output console
search --no-floppy --set --file $2
export iso_path=$2;loopback -d loop;loopback loop $2
set root=loop
configfile (loop)/boot/grub/loopback.cfg
}

上面的主菜单已经加载了字体loadfont /boot/grub2/fonts/unicode.pf2,但是进入loopback启动项之后,会加载iso里面的\grub\loopback.cfg菜单,iso里面的\grub\loopback.cfg内容如下:

loadfont /boot/grub/font.pf2

color_normal=cyan/black
#menu_color_highlight=black/light-gray
menu_color_highlight=yellow/red
menu_color_normal=light-gray/black

menuentry "veket 22.a" {
    linux /vmlinuz pfix=fsck pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}

menuentry "veket 22.a - Copy SFS files to RAM" {
    linux /vmlinuz pfix=copy,fsck pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}

menuentry "veket 22.a - Don't copy SFS files to RAM" {
    linux /vmlinuz pfix=nocopy,fsck pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}

menuentry "veket 22.a - RAM only" {
    linux /vmlinuz pfix=ram,fsck pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}

menuentry "veket 22.a - No X" {
    linux /vmlinuz pfix=nox,fsck pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}

menuentry "veket 22.a - No KMS (Kernel modesetting)" {
    linux /vmlinuz nomodeset pfix=fsck pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}

menuentry "veket 22.a - Ram Disk SHell" {
    linux /vmlinuz pfix=rdsh pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}

menuentry "Shutdown" {
        halt
}

menuentry "Reboot" {
        reboot
}


第一行的loadfont /boot/grub/font.pf2,这是个英文字体,不是中文字体,因而显示这个\grub\loopback.cfg菜单二级菜单,左下角会出现乱码现象,如果font.pf2改成unicode.pf2字体,应该可以显示中文。但是问题是iso里面的\grub\loopback.cfg以及他所加载的字体是在iso中,而iso不受我的控制,所以我希望grub2左下角的提示能改成英文字符,而不是用中文字符提示,因为这不是个案,debian,ubuntu之类的可能也存在类似的现象,这个乱码提示虽然不影响启动,但是总觉得不美。

左下角这个提示能否改成英文?是不是需要重新编译grub2?还是有个我不知道的参数可以设置?


左下角乱码现象.png (8.26 KB, 下载次数: 313)

左下角乱码现象.png

QQ截图20220316103713.png (20.97 KB, 下载次数: 311)

QQ截图20220316103713.png

点评

仔细一看,你在菜单里面就切换到了文本模式: menuentry "/linux/veket/v22.a-2022.02.02/veket_22.a.iso-loopback.cfg" "/linux/veket/v22.a-2022.02.02/veket_22.a.iso" { terminal_output console search --no  详情 回复 发表于 2022-3-16 14:50
回复

使用道具 举报

614#
发表于 2022-3-16 12:59:03 | 只看该作者
用用看效果如何
回复

使用道具 举报

615#
 楼主| 发表于 2022-3-16 14:50:14 | 只看该作者
liuzhaoyzz 发表于 2022-3-16 10:35
loopback启动菜单最下面一行的提示,因为默认没有加载字库,导致出现乱码现象,这怎么解决?
硬盘里面gr ...

仔细一看,你在菜单里面就切换到了文本模式:
menuentry "/linux/veket/v22.a-2022.02.02/veket_22.a.iso-loopback.cfg" "/linux/veket/v22.a-2022.02.02/veket_22.a.iso" {
terminal_output console
search --no-floppy --set --file $2
export iso_path=$2;loopback -d loop;loopback loop $2
set root=loop
configfile (loop)/boot/grub/loopback.cfg
}
切换到文本模式后,当然没办法显示中文了,与字体无关。
要么保持图形模式,要么把语言设成英文 (set lang=en_US)

点评

必须用文本模式,这是因为veket.iso里面默认用的就是文本模式,这一点困扰了我很长的时间,前面的帖子有讨论。puppy.iso也是类似。iso里面的菜单不受我控制,所以我只有修改硬盘的菜单去适应iso内部的二级菜单。  详情 回复 发表于 2022-3-16 15:45
回复

使用道具 举报

616#
发表于 2022-3-16 15:45:33 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-3-16 15:48 编辑
wintoflash 发表于 2022-3-16 14:50
仔细一看,你在菜单里面就切换到了文本模式:
menuentry "/linux/veket/v22.a-2022.02.02/veket_22.a.is ...

必须用文本模式,这是因为veket.iso里面默认用的就是文本模式,这一点困扰了我很长的时间,百思不得其解,前面的帖子有讨论。puppy.iso也是类似。iso里面的菜单不受我控制,所以我只有修改硬盘的菜单去适应iso内部的二级菜单。

按照你的提示,我改成如下的菜单,亲测可行:
menuentry "/linux/veket/v22.a-2022.02.02/veket_22.a.iso-loopback.cfg" "/linux/veket/v22.a-2022.02.02/veket_22.a.iso" {
terminal_output console;set lang=en_US
search --no-floppy --set --file $2
export iso_path=$2;loopback -d loop;loopback loop $2
set root=loop
configfile (loop)/boot/grub/loopback.cfg
}

QQ截图20220316154612.png (8.8 KB, 下载次数: 323)

QQ截图20220316154612.png

点评

为什么? 图形模式下显示不出来东西?那说明linux内核配置有问题。  详情 回复 发表于 2022-3-16 16:31
回复

使用道具 举报

617#
 楼主| 发表于 2022-3-16 16:31:38 | 只看该作者
liuzhaoyzz 发表于 2022-3-16 15:45
必须用文本模式,这是因为veket.iso里面默认用的就是文本模式,这一点困扰了我很长的时间,百思不得其解 ...
必须用文本模式,这是因为veket.iso里面默认用的就是文本模式

为什么?
图形模式下显示不出来东西?那说明linux内核配置有问题。

点评

http://wuyou.net/forum.php?mod=viewthread&tid=420085&extra=page%3D1&page=60 从300楼开始,折腾了好长时间,最后就是改为文本模式,解决了问题。  详情 回复 发表于 2022-3-16 16:44
回复

使用道具 举报

618#
发表于 2022-3-16 16:44:08 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-3-16 17:11 编辑
wintoflash 发表于 2022-3-16 16:31
为什么?
图形模式下显示不出来东西?那说明linux内核配置有问题。

http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=420085&pid=4243486&fromuid=298214
从300楼开始,到355楼,http://wuyou.net/forum.php?mod=r ... &fromuid=298214折腾了好长时间,最后就是改为文本模式,解决了问题。

图形模式也不是不行,如果修改iso内部的菜单为图形模式,和硬盘的菜单匹配,应该也可以的,我好像试过,忘记了。最主要的问题是各种iso经常更新,iso内部的菜单不受我的控制,所以只有我自己改适配iso。

点评

什么意思 没看懂  详情 回复 发表于 2022-3-16 17:00
回复

使用道具 举报

619#
 楼主| 发表于 2022-3-16 17:00:01 | 只看该作者
liuzhaoyzz 发表于 2022-3-16 16:44
http://wuyou.net/forum.php?mod=viewthread&tid=420085&extra=page%3D1&page=60
从300楼开始,折腾了 ...
如果修改iso内部的菜单为图形模式,和硬盘的菜单匹配

什么意思 没看懂

点评

iso里面的\grub\loopback.cfg内容如下: set gfxmode=1024x768,800x600,auto set gfxpayload=keep terminal_output gfxterm loadfont /boot/grub/font.pf2 color_normal=cyan/black #menu_color_highlight=b  详情 回复 发表于 2022-3-16 17:03
回复

使用道具 举报

620#
发表于 2022-3-16 17:03:48 | 只看该作者

iso里面的\grub\loopback.cfg内容如下:
set gfxmode=1024x768,800x600,auto
set gfxpayload=keep
terminal_output gfxterm
loadfont /boot/grub/font.pf2

color_normal=cyan/black
#menu_color_highlight=black/light-gray
menu_color_highlight=yellow/red
menu_color_normal=light-gray/black

menuentry "veket 22.a" {
    linux /vmlinuz pfix=fsck pmedia=cd find_iso=${iso_path}
    initrd /initrd.gz
}
如果加上前面的3行黑体字,保存ISO,然后硬盘里面的菜单\boot\grub2\grub.cfg也用terminal_output gfxterm,好像可以启动,我记不清了。
回复

使用道具 举报

621#
发表于 2022-10-14 16:55:21 | 只看该作者
看看在 GRUB2 UEFI 下如何进行磁盘仿真啊
回复

使用道具 举报

622#
发表于 2023-3-6 22:09:55 | 只看该作者
加载IMG的菜单怎么写
回复

使用道具 举报

623#
发表于 2023-3-28 19:31:09 来自手机 | 只看该作者
不错谢谢分享
回复

使用道具 举报

624#
发表于 2023-3-28 23:14:51 | 只看该作者
666
回复

使用道具 举报

625#
发表于 2023-5-11 17:24:45 | 只看该作者
Grub2 使用chainloader  后 屏幕上 有输出 Booting /ACPI.......什么的信息,这个怎么不让它显示出来?
回复

使用道具 举报

626#
发表于 2023-5-12 03:18:41 | 只看该作者
谢谢分享
回复

使用道具 举报

627#
发表于 2023-5-14 09:21:21 | 只看该作者
本帖最后由 dghgw 于 2023-5-14 09:29 编辑
hilsonma 发表于 2019-11-25 15:12
喜欢中文菜单就直接使用中文菜单,不需要特别设置:
menuentry "菜单 1" {
  echo 1

bios下出错是什么问题
回复

使用道具 举报

628#
发表于 2023-5-14 09:28:17 | 只看该作者
回复

使用道具 举报

629#
发表于 2023-8-10 11:27:48 | 只看该作者
请教下 search -s -f /EFI/Microsoft/Boot/bootmgfw.efi;
chainloader -t /EFI/Microsoft/Boot/bootmgfw.efi;
这两条命令加载windows系统 时会有先出现一个距屏幕边缘一定距离的黑窗口,然后在到正常的windows 转圈圈的过程,有办法避免这个黑窗口或者减短这个黑窗口时间的办法吗?

点评

这是你用的主题设置的terminal-box。 https://www.gnu.org/software/grub/manual/grub/grub.html#Global-Properties 两个思路:要么全屏,要么把大小设为0  详情 回复 发表于 2023-8-10 14:36
回复

使用道具 举报

630#
 楼主| 发表于 2023-8-10 14:36:44 | 只看该作者
zczc8888 发表于 2023-8-10 11:27
请教下 search -s -f /EFI/Microsoft/Boot/bootmgfw.efi;
chainloader -t /EFI/Microsoft/Boot/bootmgfw. ...

这是你用的主题设置的terminal-box。
https://www.gnu.org/software/gru ... l#Global-Properties
两个思路:要么全屏,要么把大小设为0
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-25 14:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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