2011yaya2007777 发表于 2023-10-11 15:04:20

有关G4D/G4E启动porteus.iso测试

本帖最后由 2011yaya2007777 于 2023-10-12 10:11 编辑

测试porteus版本:3.2,4.0,5.0
在QEMU虚拟机测试
分别测试 Legacy BIOS,EFI-ia32,EFI-x64启动模式

一、从光盘镜像直接启动

光盘镜像                           porteus-3.2.iso    Porteus-4.0-x86_64-20170917.iso   Porteus-KDE-v5.0-x86_64.iso
启动模式Legacy BIOS                     ok                     ok                                 ok
启动模式EFI-ia32                           ok                     ok                                 err
启动模式EFI-x64                            ok                     ok                                 err

二、由G4D/G4E通过map加载光盘镜像,然后启动

光盘镜像                           porteus-3.2.iso    Porteus-4.0-x86_64-20170917.iso   Porteus-KDE-v5.0-x86_64.iso
启动模式Legacy BIOS
通过commandloader启动             ok                     ok                                 ok
通过kernel启动                           ok                     ok                                 ok
启动模式EFI-ia32
通过commandloader启动             ok                     ok                                 err
通过kernel启动                           ok                     err(返回菜单了)            ok
启动模式EFI-x64
通过commandloade启动            ok                     ok                                 err
通过kernel启动                           err                      ok                                 ok

菜单:
title Start porteus-3.2.iso by chainloader
find --set-root /boot/imgs/porteus-3.2.iso
map /boot/imgs/porteus-3.2.iso (cd)
map --hook
chainloader (cd-1)

title Start porteus-3.2.iso by kernel
find --set-root /boot/imgs/porteus-3.2.iso ;; uuid ()
map /boot/imgs/porteus-3.2.iso (hd32)
map --hook
kernel (hd32)/porteus/vmlinuz from=UUID:%?_UUID%/boot/imgs/porteus-3.2.iso norootcopy nomagic
initrd (hd32)/porteus/initrd.xz


注:通过commandloader启动,需将光盘镜像中的porteus目录及其文件复制到启动盘任意分区的根目录。
就其原因,是因为porteus不使用UEFI环境安装的光盘镜像,他自己从底层枚举设备。

这种情况下,是否可以删除光盘镜像内部的porteus文件夹?测试如下:

启动模式          Legacy BIOS    EFI-ia32    EFI-x64
全有                        ok            ok         ok
内部有,外部无      err         err      err
内部无,外部有      err         ok         err
结论:不能删除porteus-3.2.iso内部的porteus文件夹。

此结论有误!实际上可以删除porteus-3.2.iso内部的porteus文件夹。
导致上述的原因是由于UltraISO保存文件时,胡乱修改内部信息!


三、全解开,从U盘启动

1. 提取porteus-3.2.iso全部文件到临时目录。
2. 复制临时目录的/porteus文件夹到esp分区根目录
3. 修改临时目录/efi/boot/的文件,然后复制到esp相应文件夹。
    重命名:bootia32.efi -> porteus-ia32.efi
    删除:bootMX64.efi,bootWX64.efi,bootx64.efi
4. 如果esp分区有/boot/grub/,则将目录下的menu.lst文件移动到根目录。
5. 复制临时目录的/boot/grub/文件夹到esp相应文件夹。
   
Legacy BIOS 菜单:
title porteus-3.2.iso
find --set-root /porteus/vmlinuz
configfile /boot/grub/menu.lst
boot

EFI-ia32/EFI-x64 菜单:
title porteus-3.2.iso
find --set-root /efi/boot/grubx64.efi
if %@uefi%==64 && chainloader /efi/boot/grubx64.efi ! if %@uefi%==32&& chainloader /efi/boot/porteusia32.efi
boot

tanglf 发表于 2023-10-11 15:31:29

谢谢分享测试经验

有阴也有阳 发表于 2023-10-11 16:27:13


          在《我的Grub4dos0.4.6a的启动U盘》中用UEFI Grub4dos 32/64成功启动了porteus-3.2.iso:

      菜单:

title 运行 Porteus 3.2 口袋 Linux 系统中文定制版
find --set-root /myudisk.txt
map /porteus.iso (cd)
map --hook
chainloader (cd-1)

      关键:

      您在帖子中说的:“要用软碟通把porteus-3.2.iso文件里面的porteus文件夹及里面的文件全部提取出来放到启

动U盘的根目录下,究其原因,是因为porteus不使用UEFI环境安装的光盘镜像,它自己从底层枚举设备。”

      谢谢!!!{:1_186:}

假大空 发表于 2023-10-11 16:30:19

学习了。我说咋kde 5.0我老是启动不了,原来方法不对

yc2428 发表于 2023-10-11 16:58:33


谢谢分享

dfw9 发表于 2023-10-11 20:28:31

本帖最后由 dfw9 于 2023-10-11 20:38 编辑

Porteus 3.2找到了个20170206版的。

dfw9 发表于 2023-10-11 21:28:51

我只取了EFI-x64启动模式:
将EFI-ia32/EFI-x64 菜单:
title porteus-3.2.iso
find --set-root /efi/boot/grubx64.efi
if %@uefi%==64 && chainloader /efi/boot/grubx64.efi ! if %@uefi%==32&& chainloader /efi/boot/porteusia32.efi
boot
编辑porteus.cfg中加改为:
menuentry " porteus-3.2.iso" --class konboot{
        chainloader /efi/boot/grubx64.efi
}

另在下拉菜单的"查找并启动Windows系统(EFI)"下面加上:
menuentry "启动 雷电 Win10x64PE" --class windows{
   search --set --file /boot/bootmgfw.efi
   chainloader /boot/bootmgfw.efi
}


U盘跟目录下,小加文件就可以引导进入win10x64.wim 雷电PE了。

dfw9 发表于 2023-10-11 21:55:29

而grubx64.efi所指的iso并没有在/boot/imgs/porteus-3.2.iso下

nathan6498 发表于 2023-10-11 23:30:48

谢谢分享

liuzhaoyzz 发表于 2023-10-12 09:37:45

本帖最后由 liuzhaoyzz 于 2023-10-12 14:33 编辑

我测试了BIOS和UEFI64环境下,测试的结果和yaya结果一样。我的体会:
1、Porteus-KDE-v5.0-x86_64.iso这个是官方版本的,感觉在UEFI启动方面,官方iso没有做好,在CDROM上面无法启动,在硬盘上启动需要自己用g4e/grub2去启动。
2、我感觉用chainloader (cd-1)这种方式启动,只能适合于经过国内魔改过initrd的linux发行版,类似的还有tinycore,slitaz,这种方式并不通用,通用的启动菜单,还是需要用kernel+initrd这样子的组合。
3、从porteus4.0开始,官方porteus的启动脚本linuxrc有了很大的改变,支持from=UUID:%?_UUID%/linux/porteus/Porteus-MATE-v5.0-x86_64.iso这样子的引导代码关键字,porteus3.2似乎不行,建议放弃porteus3.2版本,内核是4.8.7的,太旧了,驱动也少。
4、porteus3.2用grub2UEFI可以正常启动,但是用g4e就不行,可能因为内核支持的启动协议不同,grub2UEFI用的是32位的boot protocol引导协议,兼容性较好,据wintoflash说后期可能也会采用loadfile2引导协议;g4e用的handover/loadfile2引导协议面向未来,感觉g4e做到面向未来就可以了,以前的老版本就让他随风而去吧。
yaya:porteus3.2.iso 不支持 64 位 CPU,测试肯定失败。要想支持UEFI启动,只能用porteus4.0以上的版本才行。
#grub2UEFI可启动Porteus-3.2-i586-20170206.iso
menuentry "/linux/porteus/Porteus-3.2-i586-20170206.iso" "/linux/porteus/Porteus-3.2-i586-20170206.iso" {
set gfxpayload=keep
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
loopback loop $2
linux (loop)/porteus/vmlinuz from=UUID:$uuid$2 norootcopy nomagic
}

#g4e无法启动Porteus-3.2-i586-20170206.iso,与上面类似的菜单
title /linux/porteus/Porteus-3.2-i586-20170206.iso
find --ignore-floppies --ignore-cd --set-root /linux/porteus/Porteus-3.2-i586-20170206.iso ;; uuid () ;; echo %?_UUID%
map /linux/porteus/Porteus-3.2-i586-20170206.iso (hd32)
map --hook
kernel (hd32)/porteus/vmlinuz from=UUID:%?_UUID%/linux/porteus/Porteus-3.2-i586-20170206.iso norootcopy nomagic

2011yaya2007777 发表于 2023-10-12 10:21:17

porteus3.2用grub2UEFI可以正常启动,但是用g4e就不行,可能因为内核支持的启动协议不同,grub2UEFI用的是32位的boot protocol引导协议,兼容性较好,
赞同这个观点。g4e就是缺少kernel函数的32位引导方法。好像引导32位UEFI时,他没有使用UEFI内部函数,而是与BIOS模式使用的同一套32位函数。
g4e使用UEFI内部函数,而grub2有底层驱动程序。

2011yaya2007777 发表于 2023-10-12 10:31:17

上传一个去除内部porteus文件夹的porteus-3.2.iso。
今天才发现UltraISO或者WinISO,当修改文件名或者删除文件夹时,胡乱修改内部信息!尤其是BIOS/UEFI双引导,被破坏了!

不点 发表于 2023-10-12 10:58:13

2011yaya2007777 发表于 2023-10-12 10:31
上传一个去除内部porteus文件夹的porteus-3.2.iso。
今天才发现UltraISO或者WinISO,当修改文件名或者删除 ...

分享一下,本人有个原则:在可能的情况下,尽量使用开源的工具。比如,既然有 mkisofs,就不用 UltraISO 或 WinISO。既然有 imdisk,就不用 WinImage。既然有 Vim,就不用 UltraEdit。既然有 7zip,就不用 WinRAR。

假大空 发表于 2023-10-12 11:19:46

测试了下,发现我下载的 Porteus-4.0-x86_64-20170917.iso 居然没有porteus/initrd.xz

liuzhaoyzz 发表于 2023-10-12 11:51:15

假大空 发表于 2023-10-12 11:19
测试了下,发现我下载的 Porteus-4.0-x86_64-20170917.iso 居然没有porteus/initrd.xz

wintoflash魔改的porteus,不需要initrd (hd32)/porteus/initrd.xz语句,但我发现有了它也可以正常启动,但是官方的需要这样子的语句,所以我还是习惯,顺便放上去了。

2011yaya2007777 发表于 2023-10-12 12:45:04

我知道mkisofs可以生成ISO引导光盘镜像。但不知道如何用他解包。解包后能包含引导文件吗?UltraISO只能提取BIOS引导,不能提取UEFI引导。

dfw9 发表于 2023-10-12 13:09:17

本帖最后由 dfw9 于 2023-10-12 13:57 编辑

假大空 发表于 2023-10-12 11:19
测试了下,发现我下载的 Porteus-4.0-x86_64-20170917.iso 居然没有porteus/initrd.xz
从Porteus-3.2-UD-i586-20170206里提取initrd.xz大小328MB,加入4.0iso里porteus目录下试试。
已成功,进入。

liuzhaoyzz 发表于 2023-10-12 13:46:12

本帖最后由 liuzhaoyzz 于 2023-10-12 14:07 编辑

2011yaya2007777 发表于 2023-10-12 12:45
我知道mkisofs可以生成ISO引导光盘镜像。但不知道如何用他解包。解包后能包含引导文件吗?UltraISO只能提取 ...
7z也可以解包iso文件。

BIOS引导是基于扇区的,UEFI文件引导不是基于文件的吗,就是/EFI/BOOT/BOOTX64.EFI啊,有这个文件就可以UEFI引导,不需要管扇区里面的引导数据是什么,不存在提取UEFI引导之说吧。

dfw9 发表于 2023-10-12 13:55:44

本帖最后由 dfw9 于 2023-10-12 13:59 编辑

liuzhaoyzz 发表于 2023-10-12 13:46
7z也可以解包iso文件。

BIOS引导是基于扇区的,UEFI文件引导不是基于文件的吗,就是/EFI/BOOT/BOOTX64 ...
但要知道/EFI/BOOT/BOOTX64.EFI其指向的可引导iso的路劲,即是否是yy大侠示意的/boot/imgs/porteus-3.2.iso。

liuzhaoyzz 发表于 2023-10-12 14:05:32

本帖最后由 liuzhaoyzz 于 2023-10-12 14:14 编辑

dfw9 发表于 2023-10-12 13:55
但要知道/EFI/BOOT/BOOTX64.EFI其指向的可引导iso的路劲,即是否是yy大侠示意的/boot/imgs/porteus-3.2.i ...
对于ISO镜像本身来说,不存在可启动iso路径之说。

UEFI加载/EFI/BOOT/BOOTX64.EFI,这个是isolinux.efi的引导文件→加载iso\EFI\boot\syslinux.cfg菜单→加载/boot/syslinux/porteus.cfg菜单,这个菜单里面文件是直接被系统挂载起来后直接访问的,哪里有可启动路径之说?

PROMPT 0
TIMEOUT 90
UI vesamenu.c32
DEFAULT GRAPHICAL
MENU BACKGROUND ../../boot/syslinux/porteus.png
MENU TITLE Porteus-5.01 64bit

LABEL GRAPHICAL
MENU LABEL Graphics mode
KERNEL /boot/syslinux/vmlinuz
INITRD /boot/syslinux/initrd.xz
APPEND changes=/porteus
我感觉porteus5.0,5.01里面,isolinux.efi引导兼容性不行啊,不如grub2x64.efi.


liaonf 发表于 2023-10-12 14:05:56

很给力,感谢分享!

wintoflash 发表于 2023-10-12 14:08:33

liuzhaoyzz 发表于 2023-10-12 11:51
wintoflash魔改的porteus,不需要initrd (hd32)/porteus/initrd.xz语句,但我发现有了它也可以正常启动, ...

没有那就不应该添加。initrd 集成在内核里面了。你再加上一个不知道从哪里找到的 initrd 就乱套了。

liuzhaoyzz 发表于 2023-10-12 14:12:33

wintoflash 发表于 2023-10-12 14:08
没有那就不应该添加。initrd 集成在内核里面了。你再加上一个不知道从哪里找到的 initrd 就乱套了。
我当时写了个批处理用于搞定porteus启动,为了通用,没有细分porteus3.2,4.0,5.0,iso里面/porteus/initrd.xz不存在,我发现有这一句不影响你制作的3.2、4.0启动。
但是没有他,官方porteus5.0就启动不了,所以就一直放着了,这纯粹是偷懒的做法。

wintoflash 发表于 2023-10-12 14:16:16

本帖最后由 wintoflash 于 2023-10-12 14:19 编辑

liuzhaoyzz 发表于 2023-10-12 14:12
我当时写了个批处理用于搞定porteus启动,为了通用,没有细分porteus3.2,4.0,5.0,iso里面/porteus/ini ...
我发现有这一句不影响你制作的3.2、4.0启动。
只能说是你 "没发现" 影响。这个是不能胡乱混用的。你也别传播错误方法。

liuzhaoyzz 发表于 2023-10-12 14:34:00

wintoflash 发表于 2023-10-12 14:16
只能说是你 "没发现" 影响。这个是不能胡乱混用的。你也别传播错误方法。

严谨啊!前面的菜单改过了。

2011yaya2007777 发表于 2023-10-12 14:57:14

UEFI文件引导不是基于文件的吗
linux的这个文件,不是G4E的。我一般是通过winhex把2进制复制为xxx.img。

dfw9 发表于 2023-10-12 19:23:47

liuzhaoyzz 发表于 2023-10-12 14:05
对于ISO镜像本身来说,不存在可启动iso路径之说。

UEFI加载/EFI/BOOT/BOOTX64.EFI,这个是isolinux.ef ...

您在10楼写到:
#grub2UEFI可启动Porteus-3.2-i586-20170206.iso
menuentry "/linux/porteus/Porteus-3.2-i586-20170206.iso" "/linux/porteus/Porteus-3.2-i586-20170206.iso" {
set gfxpayload=keep

所以直接理解为启动iso了。

2011whp 发表于 2023-10-12 19:51:05

光盘分区:

假大空 发表于 2023-10-12 19:55:36

dfw9 发表于 2023-10-12 13:09
从Porteus-3.2-UD-i586-20170206里提取initrd.xz大小328MB,加入4.0iso里porteus目录下试试。
已成功, ...

OK.空了我试下。目前在hp下面测试不解包g4e无法启动4.0和5.0的镜像。

dfw9 发表于 2023-10-14 11:39:51

liuzhaoyzz 发表于 2023-10-12 09:37
我测试了BIOS和UEFI64环境下,测试的结果和yaya结果一样。我的体会:
1、Porteus-KDE-v5.0-x86_64.iso这个 ...
第1条 回复:
Porteus-Kiosk-ThinClient-5.5.0-x86_64.ios 试试可以启动。
页: [1] 2
查看完整版本: 有关G4D/G4E启动porteus.iso测试