无忧启动论坛

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

[发布] UEFI下利用ixpe远程加载isoboot直接启动PE光盘镜像

    [复制链接]
跳转到指定楼层
1#
发表于 2019-6-10 14:45:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dido0379 于 2019-9-12 12:55 编辑

要求镜像必须支持UEFI启动

用到的文件在附件中

        因为我的工作经常要启动各种pe,在uefi下本地或者ipxe远程启动PE的iso镜像文件不怎么方便,每次都要解压出来用wimboot来启动,所以一直想找一个工具能在UEFI本地或者ipxe远程直接启动iso镜像文件(本地启动iso镜像文件只找到XORBOOT可以用),后来看了这个教程http://www.lab-z.com/stu132rd/于是有了上面那个东西。
        再经过一段时间的修改,总算可以不用ramdiskdxe了,因为ramdiskdxe.efi在较新的已经包含了此驱动的UEFI BIOS上面无法工作。并且先要载入内存需要占用更多的内存和时间。
        现在也可以用efishell载入或者grub2来载入isoboot,并且加入了一个简单的配置文件,可以在配置文件第一行里面写上iso文件的路径。
        配置文件只支持一行,指出iso文件的路径,可以是相对路径如"..\123\test.iso"或者"567.iso",也可以是绝对路径如"\abc\zxc\test2.iso"。
        如果没有配置文件,那么isoboot会在自己所在目录查找iso文件,用找到的第一个iso文件来启动。
        所以ipxe的菜单可以写成两行
                initrd         ${xieyi}://${next-server}/test.iso
                chain          ${xieyi}://${next-server}/isoboot.efi
       
        用grub2的话类似这样"chainloader /123/isoboot.efi"就可以了。
        另外我没有在真实机器上面测试,只在Q启动测试器和VMWARE里面测试过。有条件的朋友可以把测试结果反馈到这里。但是我可能不会有进一步的需求来修改了,所以把源代码也放在这里。有需要的可以自己修改。

        6月29日 重做驱动部分,已兼容铭瑄B150,华硕B250,华硕B450,附件已更新

        7月6日 添加命令行参数支持,这样就可以用同一个isoboot.efi文件启动不同文件夹或者相同文件夹下的不同的iso文件,grub2菜单可以写成
                chainloader /zxc/isoboot.efi 123/test.iso(相对路径)或者
                chainloader /zxc/isoboot.efi  /abc/test.iso(绝对路径),附件已更新。
        7月7日 在使用中发现有的iso镜像把内置2.8M大小的bootimage的扇区数设置成了1个扇区(800字节)导致不能启动。改为读取内置bootimage引导区的扇区数。并且限定为最小2.8M(0x1680个扇区)。
        7月9日 调整了驱动安装顺序和策略,命令行增加了-mem,-wait n,可以按键取消倒计时,通过了少量的测试,附件已更新。

        9月12日 ,imgboot发布,包含isoboot的所有功能,增加32位版本,兼容UEFI2.0固件,增加对硬盘分区的识别,允许镜像不在imgboot所在分区。用法见压缩包中的配置文件。

isoboot.rar

17.84 KB, 下载次数: 360, 下载积分: 无忧币 -2

MyRamDisk.rar

18.87 KB, 下载次数: 247, 下载积分: 无忧币 -2

源代码

imgboot61.rar

51.52 KB, 下载次数: 594, 下载积分: 无忧币 -2

评分

参与人数 8无忧币 +40 收起 理由
wuxin9712 + 5
cckp + 5 很给力!
rabbired + 5 很给力!
lhb9900 + 5 赞一个!
282198284 + 5 大神能否改成支持IMG的,硬盘格式最好,软.
wintoflash + 5
ksafei + 5 赞一个!
有阴也有阳 + 5 很给力!

查看全部评分

2#
发表于 2019-6-10 15:30:25 | 只看该作者
不错😊没事试试看
回复

使用道具 举报

3#
发表于 2019-6-10 16:07:50 | 只看该作者
uefi总算支持ramdisk了



                                            藏起来的小尾巴,不让你看!  
    回复

    使用道具 举报

    4#
    发表于 2019-6-13 16:14:01 | 只看该作者
    下载来试试看,多谢分享啊
    回复

    使用道具 举报

    5#
    发表于 2019-6-13 17:14:58 | 只看该作者
    感谢分享
    回复

    使用道具 举报

    6#
     楼主| 发表于 2019-7-6 14:11:32 | 只看该作者
    本帖最后由 dido0379 于 2019-8-8 00:26 编辑

    以前用grub4dos,map命令启动pe.iso真是方便。这两年一直在找能简单的在UEFI下直接启动pe.iso镜像的东西,边学边做总算完成了。

    评分

    参与人数 1无忧币 +5 收起 理由
    wuxin9712 + 5

    查看全部评分

    回复

    使用道具 举报

    7#
    发表于 2019-7-6 14:32:31 来自手机 | 只看该作者
    試一下
    回复

    使用道具 举报

    8#
    发表于 2019-7-6 15:07:17 | 只看该作者
    实机测试UEFI启动,chainloader成功
    回复

    使用道具 举报

    9#
    发表于 2019-7-6 16:11:27 | 只看该作者
    高手
    回复

    使用道具 举报

    10#
    发表于 2019-7-7 13:29:27 | 只看该作者
    ipxe不是早在N年前就支持UEFI启动ISO了吗,是我穿越回5年前看到你发的这篇文章吗?

    点评

    我是真的没找到。  详情 回复 发表于 2019-7-7 14:40
    回复

    使用道具 举报

    11#
    发表于 2019-7-7 13:57:10 | 只看该作者
    能本地启动iso,grub2终于可以媲美g4d了
    回复

    使用道具 举报

    12#
     楼主| 发表于 2019-7-7 14:40:17 | 只看该作者
    熄灭的烟 发表于 2019-7-7 13:29
    ipxe不是早在N年前就支持UEFI启动ISO了吗,是我穿越回5年前看到你发的这篇文章吗?

    我是真的没找到。
    回复

    使用道具 举报

    13#
    发表于 2019-7-7 18:41:13 | 只看该作者
    0707版引导的兼容性有提高,但在30秒倒计时后需重新手动再次加载菜单才能正常启动。能否改成0706版那样一次性加载启动

    点评

    感谢反馈,已将错误等待时间改为3秒,附件已更新。  详情 回复 发表于 2019-7-8 10:48
    回复

    使用道具 举报

    14#
     楼主| 发表于 2019-7-8 10:43:49 | 只看该作者
    wintoflash 发表于 2019-7-7 19:02
    FileDiskBlockIo.c文件中,
    第317行,388行,441行

    感谢大佬指出,这造成了指针定位错误。更正后已重新上传了附件。
    回复

    使用道具 举报

    15#
     楼主| 发表于 2019-7-8 10:48:14 | 只看该作者
    ksafei 发表于 2019-7-7 18:41
    0707版引导的兼容性有提高,但在30秒倒计时后需重新手动再次加载菜单才能正常启动。能否改成0706版那样一次 ...

    感谢反馈,已将错误等待时间改为3秒,附件已更新。

    点评

    感谢楼主的好作品。测试中刚好用到2个不同引导模式ISO详细反馈如下: 1)0706版:a.iso 启动正常 b.iso 失败(字符闪过) 2)0707版:a.iso 需2次引导 b.iso 需2次引导 3)0708版:a.iso 需2次引导  详情 回复 发表于 2019-7-8 12:10
    回复

    使用道具 举报

    16#
    发表于 2019-7-8 12:10:05 | 只看该作者
    本帖最后由 ksafei 于 2019-7-8 12:13 编辑
    dido0379 发表于 2019-7-8 10:48
    感谢反馈,已将错误等待时间改为3秒,附件已更新。


    感谢楼主的好作品。测试中刚好用到2个不同引导模式ISO详细反馈如下:
    1)0706版:a.iso  启动正常      b.iso  失败(字符闪过)
    2)0707版:a.iso  需2次引导    b.iso  需2次引导
    3)0708版:a.iso  需2次引导    b.iso  启动正常

    不知以上测试情况是不是和楼上W大所说细节有关联

    点评

    能说一下2次引导的过程吗?还有这两个光盘的区别。  详情 回复 发表于 2019-7-8 13:17
    回复

    使用道具 举报

    17#
    发表于 2019-7-8 12:16:57 | 只看该作者
    强,多谢分享
    回复

    使用道具 举报

    18#
    发表于 2019-7-8 12:18:27 | 只看该作者
    还有一个大师做的也不错,可以借鉴下互联网启动,我等小白没看很明白
    http://wuyou.net/forum.php?mod=v ... d=415206&extra=

    点评

    这个港哥,我也没有看懂,好像意思一个中转服务器  详情 回复 发表于 2019-8-4 14:03
    回复

    使用道具 举报

    19#
     楼主| 发表于 2019-7-8 13:13:15 | 只看该作者
    本帖最后由 dido0379 于 2019-7-8 13:25 编辑
    wintoflash 发表于 2019-7-8 11:32
    楼主啊,我对这个很感兴趣,昨天和前天都在尝试把这个移植成grub2的模块,不过目前还没有成功。

    请问一 ...


    那个NoBootStartAddr和NoBootSize按我的设想是代表传统启动映像的,后来发现传统映像在UEFI下面没用,所以就没管了,FindPartitionInFile里面有个错误是找到其中一个就返回EFI_SUCCESS,已经改成了必须找到UEFI启动映像才返回EFI_SUCCESS。
    我的代码写得很难看(除了抄来的部分 ),写的时候也没考虑重用性,移植估计要费一番功夫。要是能成功移植成一个GRUB2的模块就太好了。
    回复

    使用道具 举报

    20#
     楼主| 发表于 2019-7-8 13:17:34 | 只看该作者
    ksafei 发表于 2019-7-8 12:10
    感谢楼主的好作品。测试中刚好用到2个不同引导模式ISO详细反馈如下:
    1)0706版:a.iso  启动正常     ...

    能说一下2次引导的过程吗?还有这两个光盘的区别。

    点评

    1.面上看不出两个ISO启动文件的区别,导出引导文件如下: a.bif b.bif 2.用chainloader命令菜单引导,为便于查找问题故用0707版截图 表现:第一次运行菜单会出现如下提示,然后返回菜单界面,再次运  详情 回复 发表于 2019-7-8 16:14
    回复

    使用道具 举报

    21#
    发表于 2019-7-8 16:14:59 | 只看该作者
    本帖最后由 ksafei 于 2019-7-8 16:40 编辑
    dido0379 发表于 2019-7-8 13:17
    能说一下2次引导的过程吗?还有这两个光盘的区别。


    1.面上看不出两个ISO启动文件的区别,导出引导文件如下:
    a.bif a.7z (1.67 KB, 下载次数: 0)


    b.bif b.7z (1.67 KB, 下载次数: 0)


    2.用chainloader命令菜单引导,为便于查找问题故用0707版截图
    表现:第一次运行菜单会出现如下提示,然后返回菜单界面,手动再次运行命令菜单,则正常启动

    a.iso-7图:


    b.iso-7图:



    注:0708版a.iso提示如下图,b.iso启动正常
    a.iso-8

    点评

    9月9日版本isoboot载入大漠孤鹰pe在铭瑄h110上一次通过了,另外加了两个命令行参数,麻烦你测试一下了。  详情 回复 发表于 2019-7-9 18:35
    可能是驱动部分的安装策略兼容性不好,我得想一想再改。最好将a.iso传给我试一下。ftp://dido0379.oicp.net:55521,用户名isoboot,密码空。谢谢你的测试。  详情 回复 发表于 2019-7-8 17:37
    回复

    使用道具 举报

    22#
     楼主| 发表于 2019-7-8 17:37:41 | 只看该作者
    本帖最后由 dido0379 于 2019-7-8 17:56 编辑
    ksafei 发表于 2019-7-8 16:14
    1.面上看不出两个ISO启动文件的区别,导出引导文件如下:
    a.bif


    可能是驱动部分的安装策略兼容性不好,我得想一想再改。最好将a.iso传给我试一下。谢谢你的测试。

    点评

    由于网络限制,我无法访问ftp页面。 此PE为 @大漠孤鹰大侠的Win10PE, https://pan.baidu.com/s/142U73dt5ygIvnGoUWD9oKQ (m359 ),辛苦你了  详情 回复 发表于 2019-7-8 17:52
    回复

    使用道具 举报

    23#
    发表于 2019-7-8 17:52:08 | 只看该作者
    dido0379 发表于 2019-7-8 17:37
    可能是驱动部分的安装策略兼容性不好,我得想一想再改。最好将a.iso传给我试一下。ftp://dido0379.oicp.n ...

    由于网络限制,我无法访问ftp页面。
    此PE为   @大漠孤鹰大侠的Win10PE, https://pan.baidu.com/s/142U73dt5ygIvnGoUWD9oKQ  (m359 ),辛苦你了
    回复

    使用道具 举报

    24#
    发表于 2019-7-8 19:49:22 | 只看该作者


    vm试的grub2环境还是efishell下都报这个错。。

    正常应该是这样的

    http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378234
    这个帖子的pe

    点评

    感谢测试,前面有一个版本是有这个问题,附件已经更新了,麻烦有空再测试一下。  详情 回复 发表于 2019-7-9 18:41
    0708版,实机测试这个PE启动正常  发表于 2019-7-8 20:23
    回复

    使用道具 举报

    25#
     楼主| 发表于 2019-7-9 18:35:27 | 只看该作者
    ksafei 发表于 2019-7-8 16:14
    1.面上看不出两个ISO启动文件的区别,导出引导文件如下:
    a.bif

    9月9日版本isoboot载入大漠孤鹰pe在铭瑄h110上一次通过了,另外加了两个命令行参数,麻烦你测试一下了。

    点评

    测试新版以及参数-mem均启动正常,再次感谢楼主  详情 回复 发表于 2019-7-9 19:42
    回复

    使用道具 举报

    26#
     楼主| 发表于 2019-7-9 18:39:42 | 只看该作者
    wintoflash 发表于 2019-7-8 18:35
    楼主,使用今天(7.8)版本的isoboot.efi启动某iso会死机,使用7.6日的版本可以正常加载为虚拟盘(但是不能启 ...

    再次更新了一下,等map模块可以用了,我这个就可以退休了。感谢w大。
    回复

    使用道具 举报

    27#
     楼主| 发表于 2019-7-9 18:41:19 | 只看该作者
    江南一根葱 发表于 2019-7-8 19:49
    vm试的grub2环境还是efishell下都报这个错。。

    正常应该是这样的

    感谢测试,前面有一个版本是有这个问题,附件已经更新了,麻烦有空再测试一下。

    点评

    现在下载的可以了,没啥报错,马上就能启  详情 回复 发表于 2019-7-9 19:18
    回复

    使用道具 举报

    28#
    发表于 2019-7-9 19:18:16 | 只看该作者
    dido0379 发表于 2019-7-9 18:41
    感谢测试,前面有一个版本是有这个问题,附件已经更新了,麻烦有空再测试一下。

    现在下载的可以了,没啥报错,马上就能启
    回复

    使用道具 举报

    29#
    发表于 2019-7-9 19:42:31 | 只看该作者
    dido0379 发表于 2019-7-9 18:35
    9月9日版本isoboot载入大漠孤鹰pe在铭瑄h110上一次通过了,另外加了两个命令行参数,麻烦你测试一下了。

    测试新版以及参数-mem均启动正常,再次感谢楼主
    回复

    使用道具 举报

    30#
    发表于 2019-7-21 22:41:38 | 只看该作者
    能否改为支持img启动的,就是把img镜像模拟到内存盘中,启动img内存盘中的EFI\Boot\bootx64.efi

    点评

    增加img启动可以的,但是内存盘生存期怎么才能延续到exitbootservice()之后需要解决,不解决这个问题也就只能启动wim打包的pe而已。  详情 回复 发表于 2019-7-28 12:47
    回复

    使用道具 举报

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

    本版积分规则

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

    闽公网安备 35020302032614号

    GMT+8, 2024-11-29 08:18

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

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