无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 52152|回复: 338

[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板

    [复制链接]
发表于 2019-12-25 21:09:43 | 显示全部楼层 |阅读模式
本帖最后由 liuzhaoyzz 于 2020-11-12 12:00 编辑

[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板
https://liuzhaoyzz.lanzoux.com/b00n6291c

主机运行\boot\pxe目录下的任何一个批处理即可作为pxe服务器,在同一个局域网内的客户机BIOS开启PXE,启动到logo时按F12、F9、F8、F11或ESC这样的快捷键选择从pxe启动即可。
可选用tftpd32或者TinyPXEServer方案,随便扔个PE.ISO到\boot\imgs目录下,运行免配置批处理,就可以自动把该PE加入到ipxe/grub/grub2启动菜单。VM虚拟机测试,需要把虚拟机网络设置模式设置为自定义(U):特定虚拟网络VMnet0(自动桥接)。
由于tftp传输速度太慢,随着ipxe项目的发起,可以选用速度更快的http协议来进行网络启动,\boot\pxe目录提供了以下几种方案:
(1)03[BIOS][UEFI]TinyPXEServer免配置网启http服务器ipxe.pxe和ipxe.efi
BIOS下采用ipxe.pxe,UEFI下采用ipxe.efi,TinyPXEServer免配置,运行批处理可自动把pe.iso/wim加入到ipxe启动菜单\boot\ipxemenu.ipxe中,客户机BIOS/UEFI-pxe自动适配。UEFI-PXE用的是sanboot方案。
(2)04[BIOS][UEFI]TinyPXEServer免配置网启http服务器undionly.kpxe和ipxe.efi
BIOS下采用undionly.kpxe,UEFI下采用ipxe.efi,TinyPXEServer免配置,运行批处理可自动把pe.iso/wim加入到ipxe启动菜单\boot\ipxemenu.ipxe中,客户机BIOS/UEFI-pxe自动适配。UEFI-PXE用的是sanboot方案。
(3)05[BIOS]TinyPXEServer免配置网启http服务器启动ipxegrldr
采用chenall的ipxegrldr模块,从ipxe转到grldr启动,运行批处理可自动把pe.iso/wim加入到pxe启动菜单\boot\menu.lst中,只支持BIOS-pxe启动。
(4)【06[BIOS]tftpd32免配置网启tftp服务器启动grldr】
批处理会自动设置好tftpd32起始IP,地址池大小,子网掩码,并可自动把pe.iso/wim加入到grub4dos启动菜单\menu.lst中,只支持BIOS-pxe启动。
(5)【07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64.efi】
UEFI下采用grub2x64.efi,批处理会自动配置好TinyPXEServer,并可自动把pe.iso/wim加入到grub2启动菜单\boot\grub2\grub2pxe.cfg中,只支持UEFI-pxe启动。感觉grub2的http传输速度不快,不能跑满网速,而且grub2-pxe启动似乎和lang中文字体有冲突,所以PE最好不要用中文名字。另外TinyPXEServer的httpd似乎和grub2不能很好地适配,UEFI+TinyPXEServer(http)+grub2x64.efi+pe.iso可以启动,但是UEFI+TinyPXEServer(http)+grub2x64.efi+pe.wim组合就不行,用UEFI+TinyPXEServer(tftp)+EasyWebSvr(http)+grub2x64.efi+pe.wim组合就可以绕路解决(需要注意采用win7的bootmgfw.efi)。等待grub2的更新解决问题。
(6)【08[UEFI]TinyPXEServer免配置网启http服务器ipxe.efi-grub2x64.efi】
UEFI下采用ipxe.efi作为第一引导,进而引导grub2x64.efi,这样做的目的是可以让grub2的http传输达到满速,批处理会自动配置好TinyPXEServer,并可自动把pe.iso/wim加入到grub2启动菜单\boot\grub2\grub2pxe.cfg中,只支持UEFI-pxe启动,UEFI-grub2-pxe启动问题可以采取类似上面的方案绕路解决。grub2-pxe启动似乎和lang中文字体有冲突,现在用的loopback -m ramdisk (tftp)/grub2/unicode.xz到内存的办法,参见\boot\grub2\grub2pxe.cfg里面的内容。
温馨提示:
★tftpd32/haneWinDHCP+grub4dos方案只支持tftp协议,不支持http协议,不能跑满网速,不建议采用;建议采用TinyPXEServer+ipxe/grub2+webserver方案,支持tftp/http/ftp等传输协议,可以跑满网速,千兆网下速度较为理想。webserver可以采用王宝剑大神用VC++SDK编写的的绿色软件EasyWebSvr,只有惊人的67KB,配置简单。
★wimboot启动pe.wim,pe.wim不建议使用特殊字符和中文。wimboot启动pe.wim需要涉及的文件太多,细节不注意很容易导致启动失败,我更喜欢用pe.iso启动方案。
★BIOS-pxe启动,如果想换个PE,除了用批处理自动写菜单的办法之外,还有个办法是用sratlf的run模块只需要把PE的ISO镜像文件拷贝到\boot\imgs目录下,运行【05生成ISO文件列表.bat】更新dir.txt(PXE启动需要),grub4dos菜单选择“run mem automenu by sratlf”就能从这个PE启动,run模块版本是20141206,实测与grldr20161224或者更早的版本匹配较好,可以遍历文件并启动,由于run模块已几年不更新,已经不能匹配最新版grub4dos,所以不推荐使用,推荐用批处理自动写菜单的办法。




QQ截图20191225210339.png
vm设置VMnet0自动桥接.jpg
Windows 10-2019-12-26-08-28-36.png

评分

参与人数 8无忧币 +41 收起 理由
zqm0550 + 1 赞一个!
bfgxp + 5 很给力!
2011cwj6958 + 10 很给力!
lsplsp + 5
xxkknn + 5 赞一个!
879792799 + 5 很给力!
ksafei + 5 赞一个!
xq8751 + 5

查看全部评分

 楼主| 发表于 2019-12-25 21:09:50 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 09:59 编辑

tftpd32/hanewinDHCP+grldr/pxelinux.0的方案速度太慢,现已不推荐。
TinyPXEServer+ipxegrldr/ipxe/lpxelinux.0+http服务器的方案可能大家都会了。
我介绍下TinyPXEServer+wintoflash大神修改的grub2+http服务器的新方案,BIOS下面方案已经很成熟了,我主要把grub2用在UEFI下面。
下载wintoflash大神修改的grub2,网址http://wuyou.net/forum.php?mod=v ... 7233&extra=page%3D1,grub2x64pxe.efi启动文件的定制命令如下,模块可以根据自己的需要增加,我放在\boot\目录下,tinypxeserver用它作为启动文件,网启根目录设置为\boot\。
@echo off
grub-mkimage -d x86_64-efi -p /grub2 -c bootconfigpxe.cfg -o grub2x64pxe.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 search terminal udf map font gfxterm linux linux16 vhd loopback regexp probe wimboot multiboot multiboot2 test help ext2 net tftp http efinet efi_netfs cat cpio

内置菜单bootconfigpxe.cfg内容如下,为了保持文件夹的分类清晰,我放在\boot\grub2\目录下。
#用于pxe启动的grub2内置菜单:
if search --no-floppy -f --set=root /boot/grub2/grub.cfg; then
configfile (tftp)/grub2/grub2pxe.cfg
fi

\boot\grub2\grub2pxe.cfg是pxe启动菜单,grub2x64pxe.efi会自动搜索\boot\grub2\grub2pxe.cfg菜单文件,也就是说客户机启动流程是接收http服务器传来的grub2x64pxe.efi→加载内置菜单bootconfigpxe.cfg(已编译进入grub2x64pxe.efi)→查找外置菜单(tftp)/grub2/grub2pxe.cfg,这里http没有初始化,似乎只能用(tftp),用下面的菜单启动PE.ISO成功,用wimboot启动PE.WIM成功,需要注意的是,UEFI-ipxe-wimboot启动模式下BCD中默认文件名为boot.wim,boot.wim可以放在boot/imgs/下的任何一个子目录,批处理会遍历wim文件并加入到相应的启动菜单中;BIOS-ipxe-wimboot对于wim文件名字可以任意修改,但不建议使用特殊字符和中文。wimboot启动pe.wim需要涉及的文件太多,细节不注意很容易导致启动失败,我更喜欢用pe.iso启动方案。

set default=0
set fallback=1
set timeout=2
set pager=20

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

#中文字体似乎和pxe启动有冲突?因此PE.ISO文件名里面不能包含中文。
#if loadfont /grub2/fonts/unicode.pf2;then
#set locale_dir=/grub2/locale
#set lang=zh_CN
#set gfxmode=auto,800x600,1024x768
#terminal_output gfxterm
#fi

net_bootp
set net_default_server=10.7.20.78
set root='(http)'

menuentry "Win10_16299_PE_x86_x64_10.31.iso" "Win10_16299_PE_x86_x64_10.31.iso" {
map --mem --type=CD (http)/imgs/Win10_16299_PE_x86_x64_10.31.iso
}

menuentry "SXWIN10PEX64_17763_NET20191205.iso" "SXWIN10PEX64_17763_NET20191205.iso" {
map --mem --type=CD (http)/imgs/SXWIN10PEX64_17763_NET20191205.iso
}

menuentry "WePE_64_V2.0.iso" "WePE_64_V2.0.iso" {
map --mem --type=CD (http)/imgs/WePE_64_V2.0.iso
}

menuentry "/imgs/SXWIN10PEX64_17763_NET20191205/boot.wim" "/imgs/SXWIN10PEX64_17763_NET20191205/boot.wim" {
wimboot @:bootmgfw.efi:(http)/ms/EFI/boot/bootx64.efi        @:bcd:(http)/grub2/wimboot/bcd @:boot.sdi:(http)/boot.sdi        @:boot.wim:(http)/imgs/SXWIN10PEX64_17763_NET20191205/boot.wim
}

menuentry "0.Windows" "/EFI/Microsoft/Boot/bootmgfw.efi" --hotkey=0 {
        search --no-floppy --set --file $2
        chainloader $2
}

menuentry "1.grubfm_iso_wim_img" --hotkey=1 {
        export grub_file=/boot/imgs
        configfile /boot/grub2/grubfm.cfg
}

menuentry "2.Reboot" --hotkey=2 {reboot}

menuentry "3.Halt" --hotkey=3 {halt}

TinyPXEServer+wintoflash大神修改的grub2+http服务器这个pxe启动方案,我测试#中文字体似乎和pxe启动有冲突?因此PE.ISO文件名字里面不能包含中文。
另外,grub2官方http://www.gnu.org/software/grub/manual/grub/grub.html没有任何关于grub2支持pxe-http协议的介绍,我在论坛看了jie_china转发的帖子http://wuyou.net/forum.php?mod=viewthread&tid=411143有个(http),试了下可以,但是速度不能跑满网速,原因不明,看来grub2在http协议方面还有待提升。

然后我又试了下,TinyPXEServer+ipxe.efi引导启动后,chain grub2x64pxe.efi,进入grub2菜单grub2pxe.cfg,选择启动pe.iso,http传输速度达到了满速,这跟ipxe启动后转grldr,让grub4dos支持http协议情况类似。

如果上面的内容看不懂,下载一楼的附件,直接运行
【07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64pxe.efi】
【08[UEFI]TinyPXEServer免配置网启http服务器ipxe.efi-grub2x64.efi】
任何一个就可以自动把pe.iso/wim加入到grub2启动菜单\boot\grub2\grub2pxe.cfg中(只支持UEFI-pxe启动),并一键配置好webserver。


特别鸣谢:
不点、bean、chenall、2011yaya2007777(grub4dos开发者们)、pauly(bootice、XorbootUEFI作者)、jianliulin(FbinstTool)、adef(DetectEFI)、CxDir(2012jiashanni)、sratlf(RUN模块作者)、歌理(PXE免配菜单)、ljycslg(tinypxeserver汉化分享)、芈员外(一键RAMOS框架)、tmplinshi(concmd作者)、wintoflash(UEFI-grub2_map、ntboot)、hilsonma、极限驱动、2011hiboy(Grub2定制UEFI模板)、captain_g(IPXE-UEFI网启小工具)、yigeren(TinyPXEServer自动识别BIOS/UEFI的配置文件)、江南一根葱、jie_china(grub2-pxe文章推送)...等等等等。

点评

niu ,你就是网管  详情 回复 发表于 2020-11-11 22:11

评分

参与人数 1无忧币 +1 收起 理由
zqm0550 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-12-25 21:09:54 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 08:09 编辑

就是说UEFI-grub2-pxe启动,目前已知的问题有:

1、中文字体加载失败,会冲突,大家看看是不是这样子。
2、如果只用grub2x64pxe.efi作为主引导文件,不能跑满网速,但是先用ipxe.efi作为主引导,再引导grub2x64pxe.efi就能跑满网速了。这是为什么?grub2的http传输协议是不是还有优化的空间,@wintoflash。



回复

使用道具 举报

 楼主| 发表于 2019-12-25 21:09:58 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 08:31 编辑

下载的模板文件boot_muban文件夹名字要改成boot,放在根目录下,当然也可用01-PE安装器by双心20191225一路回车一键建立。

随便扔个pe.iso到\boot\imgs\里面,不需要懂太多的pxe启动知识,一键启动http服务器即可,选2可以一键把pe.iso,pe.wim加到启动菜单,支持多种pxe启动模式。

文件目录结构:(可用01-PE安装器by双心20191225一键建立)
X:\
  │  grldr
  │  menu.lst
  ├─BOOT\(Legacy BIOS启动用)
  │   ├─BOOTICE\(存放bootice工具)
  │   ├─FbinstTool\(存放FbinstTool工具)
  │   ├─imgs\(存放PE的ISO镜像文件,各种软件img镜像文件)
  │   ├─grub\(内有grldr.*、menu.lst的备份,批处理会自动把备份拷贝到根目录,还存放font字库、sratlf的run模块和网启服务器tftpd32.*)
  │   └─grub2\(存放grubx64.efi、grub.cfg、unicode.pf2、zh_CN.mo等)  
  │   └─pxe\(存放pxe启动免配置批处理及引导器相关文件,可把pe.iso/wim加入到ipxe/grub2/grub4dos启动菜单中)



评分

参与人数 1无忧币 +1 收起 理由
zqm0550 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-12-25 21:10:06 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 08:17 编辑

上传个客户机BIOS-pxe相关设置截图。

1、高级→内置设备→PXE Option ROM要开启
QQ图片20191226074422.jpg

2、高级→网络堆栈→要开启,并且开启IPV4 6  PXE支持。
QQ图片20191226074414.jpg
3、启动→网络堆栈驱动程序支持→开启。

QQ图片20191226074409.jpg
4、从网络设备启动可以选择LEGACY ROM或者UEFI ROM优先。
QQ图片20191226074402.jpg
5、以上设置好之后,客户机启动出现logo时按F12 F8 F9 F11,shift+F10之类的按键,选择从PXE启动即可。当然在启动选项里面把PXE设置为第一位也行。 QQ图片20191226074418.jpg


不同品牌电脑的启动项快捷键 - Windows To Go - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=v ... 0907&extra=page%3D1
感谢t5481194




点评

上传错了附件? 是个文件管理器  详情 回复 发表于 2019-12-25 21:23

评分

参与人数 1无忧币 +1 收起 理由
zqm0550 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2019-12-25 21:21:56 | 显示全部楼层
怎么下载的是MDIE?
回复

使用道具 举报

发表于 2019-12-25 21:23:03 | 显示全部楼层
本帖最后由 心零 于 2019-12-25 21:28 编辑

上传错了附件?

是个文件管理器

MDIE双心封装版0.3.0.0RC6V3.exe (535.97 KB, 下载次数: 37)
回复

使用道具 举报

 楼主| 发表于 2019-12-25 21:30:57 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-25 21:34 编辑

手滑点错了文件夹,一楼下载地址已更新.

回复

使用道具 举报

发表于 2019-12-25 22:29:26 | 显示全部楼层
介绍的好详细,感谢分享
回复

使用道具 举报

发表于 2019-12-25 23:00:41 | 显示全部楼层
网启取文件是gbk的,所以菜单显示要utf8,取文件要转码gbk,

点评

我试了cfg无论用ansi或者utf-8带BOM,不带BOM的似乎都不行,不是文件格式的问题,文件格式我用VC改写的有个命令行小工具,随意转换,不应该是文件格式这个问题。  详情 回复 发表于 2019-12-25 23:06
回复

使用道具 举报

 楼主| 发表于 2019-12-25 23:06:06 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 09:04 编辑
江南一根葱 发表于 2019-12-25 23:00
网启取文件是gbk的,所以菜单显示要utf8,取文件要转码gbk,

我试了cfg无论用ansi或者utf-8带BOM,不带BOM的似乎都不行,不是文件格式的问题,文件格式我用VC改写的有个命令行小工具,随意转换,不应该是文件格式这个问题。

另外为了和葱大【史上最伟大网管】呼应,应景,娱乐,我加了头衔[我不是网管]

点评

grub2菜单文件是要utf-8的,但路径里的中文需要转换成gbk,然后网启才能正确地读到文件。  详情 回复 发表于 2019-12-26 11:24
回复

使用道具 举报

发表于 2019-12-26 07:22:19 | 显示全部楼层
xiexie
回复

使用道具 举报

发表于 2019-12-26 11:24:09 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-25 23:06
我试了cfg无论用ansi或者utf-8带BOM,不带BOM的似乎都不行,不是文件格式的问题,文件格式我用VC改写的有 ...

grub2菜单文件是要utf-8的,但路径里的中文需要转换成gbk,然后网启才能正确地读到文件。

点评

我知道grub2的菜单要用utf-8无BOM的,我也试过了,所有的路径里面,包括文件名字都没有中文,出错在loadfont这一句。  详情 回复 发表于 2019-12-26 11:26
回复

使用道具 举报

 楼主| 发表于 2019-12-26 11:26:04 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 11:27 编辑
江南一根葱 发表于 2019-12-26 11:24
grub2菜单文件是要utf-8的,但路径里的中文需要转换成gbk,然后网启才能正确地读到文件。

我知道grub2的菜单要用utf-8无BOM的,我也试过了,所有的路径里面,包括文件名字F:\boot\grub2\grub2pxe.cfg都没有中文,出错在loadfont这一句。

点评

之前江南一根葱和我讨论过这个问题。 win10等系统里面,文件名是utf-8的,但是经过网启或者生成文件列表,在grub2里面必须要转成gbk编码文件名,才能读取。 好像是这样的,我记不太清了。  详情 回复 发表于 2019-12-26 12:01
我好像是生成文件列表用的就是gbk,加chcp 936 然后从列表中读取的菜单项要转成utf8来显示,但网启实际读的依旧还是gbk 这样应该就可以支持启动中文文件名的iso了。  详情 回复 发表于 2019-12-26 11:35
回复

使用道具 举报

发表于 2019-12-26 11:35:21 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-26 11:26
我知道grub2的菜单要用utf-8无BOM的,我也试过了,所有的路径里面,包括文件名字F:\boot\grub2\grub2pxe. ...

我好像是生成文件列表用的就是gbk,加chcp 936
然后从列表中读取的菜单项要转成utf8来显示,但网启实际读的依旧还是gbk

这样应该就可以支持启动中文文件名的iso了。
回复

使用道具 举报

发表于 2019-12-26 12:01:08 | 显示全部楼层
本帖最后由 wintoflash 于 2019-12-26 12:08 编辑
liuzhaoyzz 发表于 2019-12-26 11:26
我知道grub2的菜单要用utf-8无BOM的,我也试过了,所有的路径里面,包括文件名字F:\boot\grub2\grub2pxe. ...

之前江南一根葱和我讨论过这个问题。
win10等系统里面,文件名是utf-8的,但是经过网启或者生成文件列表,在grub2里面必须要转成gbk编码文件名,才能读取。
好像是这样的,我记不太清了。

在grub2里面用strconv命令可以gbk/utf-8互相转换。
lua里面也有相关函数。

回复

使用道具 举报

发表于 2019-12-26 12:29:32 | 显示全部楼层
如果不是用的grubfm,且都用批处理了,干脆直接生成完整菜单算了
我以前好像就这么搞的,比如

@echo off
chcp 65001
echo #>iso.cfg

for /f "delims=. tokens=1-2"  %%a in ('dir /b %cd%\*.iso') do (
echo menuentry "%%a.%%b" --class %%b {
echo map --mem --type=CD (http^)//${1}
echo }
)>> iso.cfg


加些判断,就能完整生成ipxe菜单,g4d菜单,grub2菜单了。

回复

使用道具 举报

 楼主| 发表于 2019-12-26 14:53:40 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 14:57 编辑

不应该是grub2pxe.cfg菜单的问题,菜单是utf-8无BOM的,已经加载了,没有提示出错,怎么会是菜单的问题呢?类似的菜单,在UEFI硬盘启动的时候就不会出错,证明grub2pxe.cfg没有问题。

grub2pxe.cfg里面:
#loadfont /grub2/fonts/unicode.pf2
#set locale_dir=/grub2/locale
#set lang=zh_CN
#terminal_output gfxterm
上面的这几句,我逐句排查,逐句取消注释,最终排查到这一句出错:
set lang=zh_CN
看样子是因为加载\grub2\locale\zh_CN.mo的时候,不支持pxe环境所以出错,这一语句如果从本地硬盘启动不会出错的。


看了官方的说明,说是需要gettext模块,我定制的时候加上gettext模块反而出错,显示gettext已经加载,只有去掉了。

测试GPT-2019-12-26-14-51-00.png

点评

貌似你说的是菜单显示中文?那就和启非中文iso是两码事 pxe加载的字体和本地启是不一样的,貌似pxe下是zh_CN.gmo 你用tinypxe启,看下加载日志就知道了  详情 回复 发表于 2019-12-26 20:38
回复

使用道具 举报

发表于 2019-12-26 20:38:49 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-26 14:53
不应该是grub2pxe.cfg菜单的问题,菜单是utf-8无BOM的,已经加载了,没有提示出错,怎么会是菜单的问题呢? ...

貌似你说的是菜单显示中文?那就和启非中文iso是两码事
pxe加载的字体和本地启是不一样的,貌似pxe下是zh_CN.gmo
你用tinypxe启,看下加载日志就知道了

点评

我把问题详细描述下,menuentry里面有3处都是用的同一个带有中文pe.iso,"TonPE_V3.3中文.iso" 这是批处理自动遍历添加生成的 1、F:\boot\grub2\grub2pxe.cfg如果是这样子,全部注释掉字体相关文件,那么菜单会出现  详情 回复 发表于 2019-12-26 21:20
回复

使用道具 举报

发表于 2019-12-26 20:55:37 | 显示全部楼层
教程很详细。。。标记备用之。


回复

使用道具 举报

发表于 2019-12-26 21:14:20 | 显示全部楼层
第一次耍网启,对PE.ISO 有什么特别要求吗,怎么试了几个都无法启动。

大佬给推荐个!

点评

对于PE.ISO基本没什么要求,内存大点就行,pxe很多方案是把pe.iso或者wim加载到内存启动的,航母级别到PE不推荐用于网启,推荐软件全部内置到wim里面的这种PE,省事儿,不会存在找不到外置的情况,全内置PE占用启动  详情 回复 发表于 2019-12-26 21:41
回复

使用道具 举报

 楼主| 发表于 2019-12-26 21:20:55 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 21:46 编辑
江南一根葱 发表于 2019-12-26 20:38
貌似你说的是菜单显示中文?那就和启非中文iso是两码事
pxe加载的字体和本地启是不一样的,貌似pxe下是z ...

我把问题详细描述下,menuentry里面有3处都是用的同一个带有中文pe.iso,"TonPE_V3.3中文.iso" 这是批处理自动遍历添加生成的
1、F:\boot\grub2\grub2pxe.cfg如果是这样子,全部注释掉字体相关文件,那么菜单会出现空格。直接上图。文件名字显示不全,也启动不了。:
#if loadfont /grub2/fonts/unicode.pf2;then
#set locale_dir=/grub2/locale
#set lang=zh_CN
#set gfxmode=auto,800x600,1024x768
#terminal_output gfxterm
#fi

menuentry "TonPE_V3.3中文.iso" "TonPE_V3.3中文.iso" {
map --mem --type=CD (http)/imgs/TonPE_V3.3中文.iso
}

GPT_test-2019-12-26-21-13-21.png


2、F:\boot\grub2\grub2pxe.cfg如果是这样子,只注释掉#set lang=zh_CN,那么菜单中文可以正常显示,但是带中文带PE.ISO无法启动:
if loadfont /grub2/fonts/unicode.pf2;then
set locale_dir=/grub2/locale
#set lang=zh_CN
terminal_output gfxterm
fi

menuentry "TonPE_V3.3中文.iso" "TonPE_V3.3中文.iso" {
map --mem --type=CD (http)/imgs/TonPE_V3.3中文.iso
}

GPT_test-2019-12-26-21-02-16.png
3、F:\boot\grub2\grub2pxe.cfg如果是这样子,全部保留,包括set lang=zh_CN,那么菜单无法显示,加载到zh_CN.mo就出错了,从这个过程来看,F:\boot\grub2\grub2pxe.cfg明显是已经加载成功了到,怎么是F:\boot\grub2\grub2pxe.cfg的文件编码到问题呢?出错在于F:\boot\grub2\grub2pxe.cfg内部的set lang=zh_CN这一语句。
if loadfont /grub2/fonts/unicode.pf2;then
set locale_dir=/grub2/locale
set lang=zh_CN
terminal_output gfxterm
fi

menuentry "TonPE_V3.3中文.iso" "TonPE_V3.3中文.iso" {
map --mem --type=CD (http)/imgs/TonPE_V3.3中文.iso
}


GPT_test-2019-12-26-21-07-53.png
4、显示带中文到文件名字和加载到内存,确实是两个问题,但是为了保证文件名字和显示到一样,实际上我把他们都搞成一样的名字了。我感觉loadfont /grub2/fonts/unicode.pf2是用来菜单界面显示中文字体用的。对应菜单里面的$2
menuentry "TonPE_V3.3中文.iso" "TonPE_V3.3中文.iso"
zh_CN.mo是用来传递文件名字给webserver到,对应菜单里面的$1.
关键问题就在于set lang=zh_CN,我看了pxe启动记录,确实是zh_CN.mo,不是gmo,好像mo找不到才会找gmo或者gz。



点评

我下了你那个,发现启不来,(http)失效,哈哈,我是越活越回去了。  详情 回复 发表于 2019-12-26 21:52
回复

使用道具 举报

 楼主| 发表于 2019-12-26 21:41:22 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 22:23 编辑
心零 发表于 2019-12-26 21:14
第一次耍网启,对PE.ISO 有什么特别要求吗,怎么试了几个都无法启动。

大佬给推荐个!

对于PE.ISO基本没什么要求,内存大点就行,pxe很多方案是把pe.iso或者wim加载到内存启动的,航母级别的PE不推荐用于网启,推荐软件全部内置到wim里面的这种PE,省事儿,不会存在找不到外置的情况,全内置PE占用启动内存稍微大点。
不知道你是那种启动方式,只要内存大,基本上任何一个PE.ISO都可以。PXE启动PE所需的内存大概等于ISO大小+2倍WIM大小+1GB的样子,sanboot方案启动的PE启动的内存小点,你用的是那种启动模式?ISO还是wim?BIOS还是UEFI?推荐采用pe.iso。
你看下1楼 4楼 5楼到帖子吧。已经够傻瓜了,一键开启pxe服务器,一键把pe.iso加入到启动菜单,不需要懂得什么pxe启动知识。你需要检查下webserver是否开启(托盘绿色),tinypxeserver是否启动。
有什么问题来个截图撒。
回复

使用道具 举报

发表于 2019-12-26 21:52:04 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-26 21:20
我把问题详细描述下,menuentry里面有3处都是用的同一个带有中文pe.iso,"TonPE_V3.3中文.iso" 这是批处 ...

我下了你那个,发现启不来,(http)失效,哈哈,我是越活越回去了。

点评

你用批处理加载PE.ISO到菜单没有?另外你是ISO还是WIM?路径不能随便改,grub2编译的时候就决定了的。http失效,是不是next-server地址不对?你不是用的批处理自动添加PE到菜单?  详情 回复 发表于 2019-12-26 22:03
回复

使用道具 举报

 楼主| 发表于 2019-12-26 22:03:54 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-26 22:08 编辑
江南一根葱 发表于 2019-12-26 21:52
我下了你那个,发现启不来,(http)失效,哈哈,我是越活越回去了。


你用批处理加载PE.ISO到菜单没有?另外你是ISO还是WIM?路径不能随便改,grub2定制的时候就决定了的。http失效,是不是next-server地址不对?你不是用的批处理自动添加PE到菜单?

还有mywebserver托盘区是不是绿色的开启状态?

点评

http失效,我删了tinypxe配置再启就ok了,不过启iso确实就是gbk的问题  详情 回复 发表于 2019-12-26 22:31
回复

使用道具 举报

发表于 2019-12-26 22:29:27 | 显示全部楼层
终于启成功了,就是gbk的问题。。
222222222222.png
222222222222.png
回复

使用道具 举报

发表于 2019-12-26 22:31:38 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-26 22:03
你用批处理加载PE.ISO到菜单没有?另外你是ISO还是WIM?路径不能随便改,grub2定制的时候就决定了的。h ...

http失效,我删了tinypxe配置再启就ok了,不过启iso确实就是gbk的问题

回复

使用道具 举报

 楼主| 发表于 2019-12-26 23:00:02 来自手机 | 显示全部楼层
你说的中文名字gbk,具体应该怎么解决,我还没搞懂。

点评

菜单文件依然用utf8 执行map mem ,也就是选择菜单执行启动时,要先把路径“中文.iso”这段字符串转换成gbk的。 我之前是直接用的grubfm,用lua转的  详情 回复 发表于 2019-12-26 23:03
回复

使用道具 举报

发表于 2019-12-26 23:03:36 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-26 23:00
你说的中文名字gbk,具体应该怎么解决,我还没搞懂。

菜单文件依然用utf8
执行map mem ,也就是选择菜单执行启动时,要先把路径“中文.iso”这段字符串转换成gbk的。
我之前是直接用的grubfm,用lua转的
回复

使用道具 举报

发表于 2019-12-26 23:06:26 | 显示全部楼层
我举个栗子吧
menuentry "TonPE_V3.3中文.iso" "TonPE_V3.3中文.iso" {
map --mem --type=CD (http)/imgs/TonPE_V3.3^ω^h←_←一堆中文gbk乱码.iso
}


这样好理解吧

  
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 23:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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