无忧启动论坛

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

另一个uefi启动xp的可能性

  [复制链接]
跳转到指定楼层
#
发表于 2021-3-8 09:54:45 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 叮叮咚咚 于 2021-3-8 09:58 编辑

使用谷歌搜索了下相关内容,没想到,还真的到了看来Google还是牛点。
原文地址:https://m.newsmth.net/article/Apple/274609?p=1#a0
08年的帖子,来自水木社区,清华大学的告知社区(感觉高上大的样子)虽然是Mac的实例,但是我认为在普通UEFI的PC上也是有可能的。
我已经买了Macbook Air M1,彻底放弃了x86,没法折腾了。
以下是原文与附件:
  1. 这是个windows xp/2003原生efi boot loader
  2. 他能直接从efi启动windows xp/2003
  3. 而不需要使用efi去模拟bios
  4. 他能从gpt的分区上加载windows
  5. (但是仅限于加载.要让windows直接安装到gpt分区需要一点点的patch)

  6. 使用方法:

  7. 1.推荐使用refit.让refit来加载他.
  8. 将他复制到refit的安装目录即可.
  9. refit的启动画面上能看到他

  10. 2.可以选择将他安装到efi的系统分区.
  11. 先在osx下使用mount_msdos命令mount上efi的隐藏的系统分区
  12. 然后在EFI目录下建立BOOT目录,然后把ntldr.efi复制到BOOT目录,并改名为BOOTIA32.efi
  13. 同时将wgl4_boot.ttf也复制到同一个目录(这个文件是可选的.没有他的话,这个程序会自动切换到文本模式)
  14. 然后再启动电脑的时候按住option,这样就能看到比平时多出来一个EFI BOOT的磁盘图标.选择这个图标即可

  15. 3.可以安装到u盘等移动设备
  16. u盘的分区格式要是fat32.然后在u盘根目录下建立\EFI\BOOT\目录
  17. 将ntldr.efi复制到BOOT下面并改名为BOOTIA32.efi,同时也复制wgl4_boot.ttf到同一目录
  18. 同样的按照option启动,跟上面不同的是这次多出来的是个u盘的图标

  19. 4.请不要bless这个小程序
  20. 他并不能启动你硬盘上的osx
  21. 所以请不要bless他

  22. =========================================
  23. 源代码编译环境:

  24. 当然是要windows的机器
  25. 编译器需要vs 2008
  26. 然后要安装edk并且建立EDK_SOURCE环境变量,不要使用edk2,因为edk2的几个结构定义跟windows的重复了
  27. (edk需要修改Foundation\Include\Ia32\efibind.h中的
  28. typedef char int8_t,改成typedef signed char int8_t)
  29. 然后还需要安装wdk(Windows Driver Kit)

  30. 恩...其实我只是使用了edk和wdk里面的几个头文件,只是需要几个结构定义而已
  31. 并没有链接他们的lib文件.

  32. 如果有人想要把他移植到*nix或者osx下面
  33. 只是需要修改代码里面的无数vc格式的inline asm
  34. 然后port几个头文件即可

  35. (我当初计划是有4个不同的版本x86_efi,x86_bios,x64_efi,x64_bios,不过只是实现了第一个)
  36. 代码的svn在这里
  37. http://tamiaode.3322.org/svn/ntldr/

  38. =========================================
  39. 怎么直接把windows安装到gpt分区:

  40. 大概的说windows的安装过程是这样的:
  41. I.patch需要的文件.重新定制一个windows的安装盘
  42. II.插入上一步制作的安装盘进行第一步的文本模式安装,这一步完了会重启
  43. III.重启之后直接使用这个efi的boot loader接着图形模式安装
  44.     图形模式安装的过程是没有显示器输出的.所以需要配置无人值守安装
  45.     并且把显卡的驱动集成到windows的安装盘里面,再这个阶段就自动的把显卡驱动装好
  46. IV.图形模式安装完成重启以后显卡驱动就能工作了.显示器就有输出了,windows就能使用了

  47. 具体的过程:
  48. 1.首先需要检查patch disk.sys这个文件
  49. 如果是xp系统或者没打sp1的2003则需要patch disk.sys中的一个字节,
  50. 很简单..加载上disk.sys的符号表.就能看到一个叫DiskDisableGpt的变量.
  51. 他的值是1,把他改成0就行了..
  52. 不出意外可以直接搜索04 C1 EB 78 F9 4C D2 11 BA 4A 00 A0 C9 06 29 10 01
  53. 把最后一个01修改成00
  54. 如果是2003 sp1以及sp2还有将来的sp3等等则不需要patch,他们的disk.sys已经默认支持gpt分区了

  55. 2.需要patch安装光盘上的setupdd.sys
  56. 这个文件是windows文本模式安装的关键文件
  57. 他需要patch的地方很多
  58. 具体的细节在附件里面

  59. 简单的讲有两种地方需要patch
  60. 第一就是与gpt有关的判断.有2个地方
  61. 一个是不让你安装到gpt分区上
  62. 另外一个是不让你把一个mbr的硬盘切换到gpt格式上去
  63. (按S能切换分区格式,前提是这个硬盘上的所有分区都被删除了)

  64. 另外一个地方就是关于系统分区的判断
  65. 我的做法是让系统分区始终等于要安装的分区
  66. (系统分区是说boot.ini,ntldr,ntdetect.com以及hal.dll要被安装到的分区)
  67. (安装分区当然就是windows被安装的分区)

  68. 3.如果是sata的硬盘.则需要安装ahci驱动
  69. (当然也可以修改boot loader让sata工作在ide模式下)

  70. efi boot的时候sata是工作在ahci模式下的
  71. 而使用csm模拟bios的时候sata是工作在ide模式下的
  72. intel芯片组的模式切换可以通过写pci config space offset 0x90的方式切换(请查看datasheet)

  73. ahci模式并不是一开始就需要的
  74. 因为文本模式的安装还是需要csm来引导windows的安装光盘的
  75. (当然也可以重写一个efi版的setupldr)
  76. 所以文本模式的安装并不需要ahci
  77. 也就不用网上那些集成sata驱动的办法

  78. 需要的修改:(只是针对intel的主板)
  79. A).将intel的iastor.sys压缩(makecab)一下放到安装光盘的i386目录下
  80. B).在安装光盘的i386\txtsetu.sif文件的[SourceDisksFiles]下面添加一行
  81.     iastor.sys   = 1,,,,,,,4,0,0,,1,4
  82. C).在安装光盘的i386\hivesys.inf文件的[AddReg]里面添加
  83. HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2681&cc_0106",Service,0x00000000,iastor
  84. HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2681&cc_0106",ClassGUID,0x00000000,{4D36E96A-E325-11CE-BFC1-08002BE10318}

  85. 这两行里面的ven_8086&dev_2681&cc_0106需要修改成符合你自己主板的字符串
  86. 这个字符串能在你主板的ahci驱动里面找到

  87. 然后找到
  88. HKLM,"SYSTEM\CurrentControlSet\Services",,0x00000012
  89. 在他的下面添加
  90. HKLM,"SYSTEM\CurrentControlSet\Services\iastor","ErrorControl",0x00010003,1
  91. HKLM,"SYSTEM\CurrentControlSet\Services\iastor","Group",0x00000002,"SCSI miniport"
  92. HKLM,"SYSTEM\CurrentControlSet\Services\iastor","Start",0x00010003,0
  93. HKLM,"SYSTEM\CurrentControlSet\Services\iastor","Tag",0x00010003,25
  94. HKLM,"SYSTEM\CurrentControlSet\Services\iastor","Type",0x00010003,1

  95. 4.集成芯片组,ahci和显卡的驱动到windows的安装光盘
  96. 普通的集成方法即可(放到$OEM$\$1目录并使用OemPnPDriversPath无人值守安装选项)

  97. 5.准备无人值守安装的应答文件winnt.sif
  98. 需要FullUnattended,并且要提供全部pages的全部选项的答案
  99. 因为安装过程中你是看不到显示器输出的..

  100. 6.如果有多个显卡多个显示器最好拔下来只是剩下一个.

  101. 安装过程是及其麻烦的.
  102. 所以这个东西的实际使用价值几乎是0
  103. 有兴趣的同学可以玩玩

  104. ===============================================
  105. 关于这个小程序:

  106. windows的boot loader大部分的功能我都实现了
  107. 没有实现的有
  108. 1.休眠唤醒
  109. 2.sdi ramdisk
  110. 3.wim ramdisk
  111. 4.从网络启动
  112. 5.从cdfs,etfs,udfs启动

  113. 前两个功能的实现可以参考我写的另外一个bios版的ntldr
  114. http://tamiaode.3322.org/svn/NTLDR.pcat/

  115. ================================================
  116. 关于附件
  117. source.zip里面是源代码

  118. bin.zip里面是编译好的程序
  119. EFI\
  120.      BOOT\
  121.                BOOTIA32.EFI------->这其实是一个efi的shell
  122.      MICROSOFT\
  123.                NTLDR.EFI---------->这个才是boot loader
  124.                wgl4_boot.ttf------>图形模式下使用的字体文件
  125.      INTEL\----------------------->这个目录下有3个分区和格式化用的程序


  126. 分区最好使用intel这个目录下的diskpart.efi文件来分区
  127. 他创建的mbr才是符合efi标准的.
  128. windows的安装盘上的分区工具创建不鸟efi的系统分区和microsoft的保留分区
  129. 而apple创建的mbr并不是efi标准的mbr,而且apple喜欢在分区和分区之间留空间

  130. ================================================
  131. 真的只能算是个小玩具...
  132. --
复制代码
setupdd.patch.txt (2.9 KB, 下载次数: 25) source.zip (393.92 KB, 下载次数: 57) bin.zip (604.39 KB, 下载次数: 50)



评分

参与人数 2无忧币 +10 收起 理由
蓝星明月 + 5 赞一个!
chishingchan + 5 赞一个!

查看全部评分

17#
发表于 2024-8-24 21:30:21 来自手机 | 只看该作者
X64的启动efi出来没有?这个能启动x64的xp吗?
回复

使用道具 举报

16#
发表于 2024-7-11 19:04:21 | 只看该作者
谢谢分享
回复

使用道具 举报

15#
发表于 2024-7-11 16:53:48 来自手机 | 只看该作者
叮叮咚咚 发表于 2021-3-8 11:26
本来就是折腾用的,驱动自己折腾吧

在uefi xorboot上直接启动03PE (猜想)
回复

使用道具 举报

14#
发表于 2024-6-5 21:52:42 | 只看该作者
有没有大佬编译一个x64uefi 的EFI文件
回复

使用道具 举报

13#
发表于 2024-3-11 12:02:16 来自手机 | 只看该作者
本帖最后由 窄口牛 于 2024-3-11 13:17 编辑

我拿到的2013年的苹果是efi64的。苹果早期有过efi32的?
回复

使用道具 举报

12#
发表于 2021-11-23 09:22:42 | 只看该作者

好吧还以为你成功了想知道怎么成功的
回复

使用道具 举报

11#
 楼主| 发表于 2021-11-23 09:12:36 | 只看该作者
wuming520 发表于 2021-11-19 13:34
楼主想问一下你研究成功了吗

没时间折腾

点评

好吧还以为你成功了想知道怎么成功的  详情 回复 发表于 2021-11-23 09:22
回复

使用道具 举报

10#
发表于 2021-11-19 13:34:00 | 只看该作者
楼主想问一下你研究成功了吗

点评

没时间折腾  详情 回复 发表于 2021-11-23 09:12
回复

使用道具 举报

9#
发表于 2021-9-19 10:26:32 | 只看该作者
XP装这个的意义在哪里?
只是纯技术的折腾吧。
回复

使用道具 举报

8#
发表于 2021-9-11 22:09:23 | 只看该作者
这个方案还是十分有价值的。kvm架构下就需要mbr+模拟的efi,
如clover,oc,这二个的legacy方案(cdboot,boot),都可以用来直接chainloader 各大os(包括windows)的efi loader

搜索efildr20 chainload grub2

https://forums.macrumors.com/thr ... tion.696523/page-26

回复

使用道具 举报

7#
发表于 2021-5-20 16:40:29 | 只看该作者
厉害了,不知道还有多少软件支持xp。
回复

使用道具 举报

6#
发表于 2021-3-10 09:13:04 | 只看该作者
这东西连个菜单啥的也没有,怎么告诉它我把xp安装到了哪个硬盘的哪个分区?
回复

使用道具 举报

5#
发表于 2021-3-8 21:17:13 | 只看该作者
支持技术折腾。

当年也有人玩过,最多就是个在特定硬件+固件上能运行的玩具。XP和2003一样,只要简单修改就可以支持GPT的。但是在不支持CSM的主板上强制启动XP,即使在读条的时候不蓝屏或者卡死,也永远不会存在一个通用方案。
回复

使用道具 举报

4#
 楼主| 发表于 2021-3-8 11:27:10 | 只看该作者
wdtx 发表于 2021-3-8 11:04
xp就算能装上,好多硬件都没驱动吧

本来就是折腾用的,驱动自己折腾吧
回复

使用道具 举报

3#
 楼主| 发表于 2021-3-8 11:26:53 | 只看该作者
wjzj 发表于 2021-3-8 10:06
装上后硬件的驱动也是给问题啊

本来就是折腾用的,驱动自己折腾吧

点评

在uefi xorboot上直接启动03PE (猜想)  详情 回复 发表于 2024-7-11 16:53
回复

使用道具 举报

2#
发表于 2021-3-8 11:04:30 | 只看该作者
xp就算能装上,好多硬件都没驱动吧

点评

本来就是折腾用的,驱动自己折腾吧  详情 回复 发表于 2021-3-8 11:27
回复

使用道具 举报

1#
发表于 2021-3-8 10:06:23 | 只看该作者
装上后硬件的驱动也是给问题啊

点评

本来就是折腾用的,驱动自己折腾吧  详情 回复 发表于 2021-3-8 11:26
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 14:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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