无忧启动论坛

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

用grub直接启动xp embedded的sdi成功!

[复制链接]
31#
发表于 2006-2-18 13:48:12 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由fujianabc2006/01/28 09:48am 发表的内容:
这个问题以及system无法加载,似乎winimage有bug,用winimage挂载此ima为一个盘符,从中把所有文件复制出来。
我认为这应该不是Winimage的bug
而是因为boot.sdi里是用ntfs压缩的
文件在存储时就压缩过了
..................
回复

使用道具 举报

32#
发表于 2006-2-18 13:51:58 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由fujianabc2006/02/15 03:32pm 发表的内容:
目前grub似乎只能启动winxp embedded的sdi,winpe和cmdcons的sdi还无法启动。

应该还有一个问题
pe的sdi里blob应该是disk类型的
而xpe的sdi是part类型的
这一点有无影响?
回复

使用道具 举报

33#
 楼主| 发表于 2006-2-18 18:18:12 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由Rinrin2006/02/18 01:48pm 发表的内容:
我认为这应该不是Winimage的bug
而是因为boot.sdi里是用ntfs压缩的
文件在存储时就压缩过了
..................
ntfs普通文件可以用winimage正常读取,而压缩文件则无法正常读取,这应该可以算是一个bug了。另外,我winimage也用了几年了,发觉这个软件很好用,但是bug太多,旧的灭了,又生新的。
回复

使用道具 举报

34#
 楼主| 发表于 2006-2-18 18:22:15 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由Rinrin2006/02/18 01:51pm 发表的内容:

应该还有一个问题
pe的sdi里blob应该是disk类型的
而xpe的sdi是part类型的
...
grub不能启动pe的sdi的问题可能是那个sdi补丁本身的问题,也不知道这个补丁是谁写的。
至于blob的问题,xp embedded好像一定要disk,而pe 的sdi如果用setupldr.bin启动,则disk或者part都行,只要rdimageoffset设置正确即可。
回复

使用道具 举报

35#
发表于 2006-2-18 20:43:34 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由fujianabc2006/02/18 06:22pm 发表的内容:
grub不能启动pe的sdi的问题可能是那个sdi补丁本身的问题,也不知道这个补丁是谁写的。
至于blob的问题,xp embedded好像一定要disk,而pe 的sdi如果用setupldr.bin启动,则disk或者part都行,只要rdimageoffset ...

我想这个sdi补丁的作者参考了这篇文章
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/ram_sdi.asp
这里是作者的说明:
http://remile.free.fr/syslinux/sdi.txt

回复

使用道具 举报

36#
发表于 2006-2-18 21:53:48 | 只看该作者

用grub直接启动xp embedded的sdi成功!

EMB的RAMDISK插件驱动RAMDISK.INF和PE的RAMDISK内容不一样,替换一下应该可以和EMB一样启动。
回复

使用道具 举报

37#
 楼主| 发表于 2006-2-19 11:12:54 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由wuyouman012006/02/18 09:53pm 发表的内容:
EMB的RAMDISK插件驱动RAMDISK.INF和PE的RAMDISK内容不一样,替换一下应该可以和EMB一样启动。
和ramdisk.sys无关,用setupldr.exe刚启动时(尚未载入系统)就不行。
回复

使用道具 举报

38#
 楼主| 发表于 2006-2-19 11:14:55 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由Rinrin2006/02/18 08:43pm 发表的内容:

我想这个sdi补丁的作者参考了这篇文章
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/ram_sdi.asp
这里是作者的说明//remile.free.fr/syslinux/sdi.txt
至于补丁作者的问题,上面的是syslinux的sdi补丁,以前也猜测过grub也是这个,但是无法确认。
回复

使用道具 举报

39#
发表于 2006-2-19 12:31:39 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由fujianabc2006/02/19 11:14am 发表的内容:
至于补丁作者的问题,上面的是syslinux的sdi补丁,以前也猜测过grub也是这个,但是无法确认。

有时间的话看看代码
不过
这两天正在研究2k3sp1的ramdisk.sys
我发现它里面有两个变量
ramdisk!ExportBootdiskAscd
ramdisk!IsWinPEBoot
这说明ramdisk对于XPE和WinPE是区别对待的
如果研究清楚了这一点
对盘符不同的问题可能有帮助
回复

使用道具 举报

40#
发表于 2006-2-19 14:30:04 | 只看该作者

用grub直接启动xp embedded的sdi成功!

我说的是替换ramdisk.inf这个注册信息。
回复

使用道具 举报

41#
发表于 2006-2-19 15:48:42 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由wuyouman012006/02/19 02:30pm 发表的内容:
我说的是替换ramdisk.inf这个注册信息。
没有用的
winpe和xpe都只使用注册表里的信息
ramdisk.inf只有启用了FBA:PnP时才会用到
回复

使用道具 举报

42#
发表于 2006-2-19 20:35:00 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由Rinrin2006/02/19 12:31pm 发表的内容:

有时间的话看看代码
不过
这两天正在研究2k3sp1的ramdisk.sys
...
期待ing...
回复

使用道具 举报

43#
发表于 2006-2-19 22:26:09 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由chenall2006/02/19 08:35pm 发表的内容:
期待ing...
这个问题已经解决
我将另外发帖说明
回复

使用道具 举报

44#
发表于 2006-2-20 17:05:16 | 只看该作者

用grub直接启动xp embedded的sdi成功!

有关sdi的代码
很明显不是syslinux的
if (is_sdi)
    {
      unsigned long long bytes_needed;
      unsigned long long base;
      bytes_needed = filemax;
      base = 0;
      if (mbi.flags & MB_INFO_MEM_MAP)
        {
          struct AddrRangeDesc *map = (struct AddrRangeDesc *) mbi.mmap_addr;
          int end_addr = mbi.mmap_addr + mbi.mmap_length;
          for (; end_addr > (int) map; map = (struct AddrRangeDesc *) (((int) map) + 4 + map->size))
    {
      unsigned long long top_end;
      if (map->Type != MB_ARD_MEMORY)
  continue;
      top_end =  map->BaseAddr + map->Length;
      if (top_end > 0x100000000ULL)
  top_end = 0x100000000ULL;
/* 0x4000000ULL is 64 MB , 0x200000ULL is 2 MB */
#define MIN_EMU_BASE 0x200000ULL
      if (map->Length >= bytes_needed
&& (base = (top_end - bytes_needed) & 0xfffff000) >= MIN_EMU_BASE /* page align */
&& map->Length >= top_end - base)
break; /* success */
      base = 0;
    }
        }
      else
  grub_printf ("Address Map BIOS Interface is not activated.\n");
      if (base < MIN_EMU_BASE)
      {
  grub_close ();
  return errnum = ERR_WONT_FIT;
      }
      
&#35;undef MIN_EMU_BASE
      //filepos = 0;
      if (grub_read ((char *)((int)base), -1) != filemax)
{
grub_close ();
if (errnum == ERR_NONE)
errnum = ERR_READ;
return 1;
}
      grub_close ();
      
      if (int13_on_hook)
      {
unset_int13_handler ();
int13_on_hook = 0;
      }
      
&#35;define BootCodeOffsetLow (*(unsigned long *)((int)base + 0x10))
&#35;define BootCodeSizeLow  (*(unsigned long *)((int)base + 0x18))
      read_length = BootCodeSizeLow;
      if (read_length > 0x90000)
read_length = 0x90000;
      grub_memmove((char *)0x110000, (char *)((unsigned int)base + BootCodeOffsetLow), read_length);
&#35;undef BootCodeOffsetLow
&#35;undef BootCodeSizeLow
      if (! chainloader_edx_set)
        {
  chainloader_edx = (unsigned int)base | 0x41;
  chainloader_edx_set = 1;
}
    }
先来说一个这个补丁的bug吧
在vmware中试验
sdi文件为16M左右
在bios setup中把memory map设置为extended就会出现错误
回复

使用道具 举报

45#
发表于 2006-2-21 18:13:46 | 只看该作者

用grub直接启动xp embedded的sdi成功!

今天又看了一下
如果用osloader.ntd代替osloader.exe
就不用在sdi里加入ntdetect.com了
回复

使用道具 举报

46#
 楼主| 发表于 2006-2-22 13:55:50 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由Rinrin2006/02/21 06:13pm 发表的内容:
今天又看了一下
如果用osloader.ntd代替osloader.exe
就不用在sdi里加入ntdetect.com了
终于知道osloader.ntd是干什么用的了,真是恰如其命啊,osloader.ntd=osloader.exe+ntdetect.com
回复

使用道具 举报

47#
发表于 2006-2-22 15:59:44 | 只看该作者

用grub直接启动xp embedded的sdi成功!

这样用GRUB启动的还是用NTLDR的RAMDISK来达到目的的,能否直接启动SDI呢!
回复

使用道具 举报

48#
 楼主| 发表于 2006-2-22 16:26:13 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由hnlyzhd2006/02/22 03:59pm 发表的内容:
这样用GRUB启动的还是用NTLDR的RAMDISK来达到目的的,能否直接启动SDI呢!
grub能够启动直接启动xp embedded的sdi(按顶楼的方法,不需要ntldr这个文件了),但是不能启动winpe的sdi。
如果用osloader.ntd代替osloader.exe,则sdi中无需再包含ntdetect.com。
回复

使用道具 举报

49#
发表于 2006-2-22 17:17:04 | 只看该作者

用grub直接启动xp embedded的sdi成功!

根据现在的研究
认为问题出在setupldr.exe上
它不认识startrom.com初始化的ram盘
由于setupldr.exe没有符号文件
反汇编也很困难~
回复

使用道具 举报

50#
 楼主| 发表于 2006-2-23 13:05:42 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由Rinrin2006/02/22 05:17pm 发表的内容:
根据现在的研究
认为问题出在setupldr.exe上
它不认识startrom.com初始化的ram盘
由于setupldr.exe没有符号文件
...
我觉得,这个问题能研究到此已经差不多了,再继续下去将涉及到crack微软的文件,难度太大,但实际用途却不是很大。
回复

使用道具 举报

51#
发表于 2006-2-24 19:17:25 | 只看该作者

用grub直接启动xp embedded的sdi成功!

有一个新的想法
grub支持gz压缩
那么sdi文件是否可以用gzip格式来压缩?
对于xpe来说应该可以使镜像文件更小
回复

使用道具 举报

52#
 楼主| 发表于 2006-2-25 10:58:26 | 只看该作者

用grub直接启动xp embedded的sdi成功!

[这个贴子最后由fujianabc在 2006/02/25 01:28pm 第 1 次编辑]
下面引用由Rinrin2006/02/24 07:17pm 发表的内容:
有一个新的想法
grub支持gz压缩
那么sdi文件是否可以用gzip格式来压缩?
对于xpe来说应该可以使镜像文件更小
我试过了,没问题,可以启动。
回复

使用道具 举报

53#
发表于 2006-2-25 23:17:16 | 只看该作者

用grub直接启动xp embedded的sdi成功!

至于把SDI中的文件提取出来,不太认同FUJIANABC的写成IMG的方法,大家可以直接用SDI文件虚拟分区,然后用
SDIMGR BOOT.SDI /WRITEPART:X:
把BOOT.SDI中的内容解压到X盘
回复

使用道具 举报

54#
发表于 2006-2-25 23:25:42 | 只看该作者

用grub直接启动xp embedded的sdi成功!

太好了
如果grub能支持7zip格式
压缩率就更高了
==================================
Winimage有些bug
用天风的方法应该就没有问题了
不过readpart一般是整个虚拟磁盘
所以不属于文件的垃圾数据也会复制进去
如果用ghost32应该可以解决这个问题
回复

使用道具 举报

55#
发表于 2006-2-26 00:26:32 | 只看该作者

用grub直接启动xp embedded的sdi成功!

做好的模板,用GRUB启动光盘上的SDI文件!
http://www.exun8.com/wuyou/hnlyzhd/BCDW/BOOT-SDI.rar
回复

使用道具 举报

56#
发表于 2006-2-26 11:23:53 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由fujianabc2006/02/25 10:58am 发表的内容:
---------------------------------
Rinrin在 2006/02/24 07:17pm 发表的内容:
有一个新的想法
grub支持gz压缩
那么sdi文件是否可以用gzip格式来压缩?
对于xpe来说应该可以使镜像文件更小
----------------------------------
我试过了,没问题,可以启动。
请明示如何来加载压缩的SDI呢?
回复

使用道具 举报

57#
 楼主| 发表于 2006-2-26 16:07:44 | 只看该作者

用grub直接启动xp embedded的sdi成功!

[这个贴子最后由fujianabc在 2006/02/26 04:11pm 第 1 次编辑]
下面引用由hnlyzhd2006/02/25 11:17pm 发表的内容:
至于把SDI中的文件提取出来,不太认同FUJIANABC的写成IMG的方法,大家可以直接用SDI文件虚拟分区,然后用
SDIMGR BOOT.SDI /WRITEPART
把BOOT.SDI中的内容解压到X盘
其实你的方法和我说的基本上一样,你是先创建sdi再解原sdi,我的是先解原sdi后创建新sdi。不过正如rinrin所讲你的方法可能是一些垃圾数据也包含进去,比如原sdi中所包含的已删除的文件。
回复

使用道具 举报

58#
 楼主| 发表于 2006-2-26 16:13:27 | 只看该作者

用grub直接启动xp embedded的sdi成功!

下面引用由hnlyzhd2006/02/26 11:23am 发表的内容:
请明示如何来加载压缩的SDI呢?
于一般的sdi方法完全一样:
chainloader --sdi (path)/xpe.sdi.gz
boot
回复

使用道具 举报

59#
发表于 2006-2-26 16:29:03 | 只看该作者

用grub直接启动xp embedded的sdi成功!

我用RAR的标准ZIP格式压缩的不能启动!
回复

使用道具 举报

60#
 楼主| 发表于 2006-2-26 17:01:43 | 只看该作者

用grub直接启动xp embedded的sdi成功!

[这个贴子最后由fujianabc在 2006/02/26 05:07pm 第 2 次编辑]
下面引用由hnlyzhd2006/02/26 04:29pm 发表的内容:
我用RAR的标准ZIP格式压缩的不能启动!
grub本身只支持gzip格式,不支持zip格式,memdisk同时支持zip/gzip格式。
windows下很多软件可以压gzip的,推荐使用7-zip。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 17:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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