无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011yaya2007777
打印 上一主题 下一主题

支持含有碎片的文件仿真

    [复制链接]
1051#
 楼主| 发表于 2015-6-18 13:33:42 | 只看该作者
0.4.6a不能在windows下编译(使用msys或mingw),会报错.这个有解码?

在 windows 下,建立了一个 msys。
经测试,在 ENTRY(USB2DRI) 下,增加一行:
USB2DRI:
就了解决。

不过,新问题出来了,编译程序不认识注解 /* ....... */.
回复

使用道具 举报

1052#
发表于 2015-6-18 22:03:22 | 只看该作者
2011yaya2007777 发表于 2015-6-18 13:33
在 windows 下,建立了一个 msys。
经测试,在 ENTRY(USB2DRI) 下,增加一行:
USB2DRI:

我这里倒是正常

不过改了还是有问题

  1.   CCLD     pre_stage2.exec.exe
  2. pre_stage2_exec-asm.o:R:\Temp\grub4dos-temp\stage2/asm.S:3168: undefined referen
  3. ce to `hooked_fragment_map'
  4. pre_stage2_exec-asm.o:R:\Temp\grub4dos-temp\stage2/asm.S:3168:(.text+0x14e7): re
  5. location truncated to fit: DISP16 against undefined symbol `hooked_fragment_map'
复制代码
回复

使用道具 举报

1053#
 楼主| 发表于 2015-6-19 09:42:48 | 只看该作者
movw        $(hooked_fragment_map - int13_handler), %bp
修改为
movw        $(EXT_C(hooked_fragment_map) - int13_handler), %bp

我这里编译程序不认识 UTF-8 格式 ,而不是不认识注解 /* ....... */。
回复

使用道具 举报

1054#
发表于 2015-6-19 10:24:44 | 只看该作者
修改了现在可以正常编译.

我测试使用的是msyscn很早下载的,平常主要还是使用linux环境来编译.
回复

使用道具 举报

1055#
发表于 2015-7-5 19:16:05 | 只看该作者
是由于主板 BIOS 不能访问较大的扇区号造成的。 不可能解决这个问题。

建议你养成习惯,总是把 grldr、menu.lst,以及 IMG 和 ISO 映像文件都放在靠近磁盘开头的分区里面。

回复

使用道具 举报

1056#
发表于 2015-7-6 17:19:25 | 只看该作者
haobinnan 发表于 2015-7-6 16:57
不一定,在此主板,运行dos程序是可以显示所有扇区的;

DOS 程序可以显示所有扇区,不等于 BIOS 可以访问到所有扇区。

DOS 程序可以不使用 BIOS,比如 diskgen,GHOST 等。
回复

使用道具 举报

1057#
发表于 2015-7-6 20:58:38 | 只看该作者
haobinnan 发表于 2015-7-6 19:10
DiskGenius是通过Bios中断读写硬盘;

你是怎么知道的?能否透露一下。
回复

使用道具 举报

1058#
 楼主| 发表于 2015-7-9 21:25:10 | 只看该作者
总是把 grldr、menu.lst,以及 IMG 和 ISO 映像文件都放在靠近磁盘开头的分区里面

不点说得非常正确
回复

使用道具 举报

1059#
 楼主| 发表于 2015-7-10 08:03:54 | 只看该作者
本帖最后由 2011yaya2007777 于 2015-7-10 09:59 编辑

分区表比较奇特。

硬盘分区清单
硬盘名:HD0:ATAHGSTHTS545050A7(466GB)  容量:465.8GB  型号:ATAHGSTHTS545050A7  序列号:MT5AD1FTN1D3P9
参数:  60801 柱面   255 磁头   63 扇区.   扇区总数:976773168
分区表类型:MBR
分区信息:
序号   名称               文件系统   引导  标识   起始柱面   磁头   扇区   终止柱面   磁头   扇区     容量        起始扇区      终止扇区    扇区长度
   0   系统(C:)             NTFS        80    07           0          32      33      13054      107     45     100.0GB        801                 c801000      c800800  
   1   扩展分区             EXTEND   00    0F       13054      107     46      60801       80      15     365.8GB

   4   软件(D:)             NTFS       00    07       13054       140     15      39163       3        8      200.0GB        c801801     25802000    19000800
   5   文档(E:)             NTFS        00    07       39163       35      41      60801       80     15     165.8GB       25802801   3a386000    14b83800


partition.ptf:
位置        分区起始扇区    分区总扇区数    表类型          说明
200-3ff     800                 0c800800          MBR             主分区
               0c801000        2db85000          MBR             扩展分区
400-5ff     0c801000        190007ff           分区表           以前遗留的主分区?
600-7ff     800                14b83800          扩展分区表    扩展分区5的扩展分区表?
800-9ff     800                0c8007ff            分区表          主分区0?    c:\
a00-bff     800                190007ff            分区表          扩展分区4?  d:\
c00-dff     800                14b837ff            分区表          扩展分区5?  e:\


扩展分区4的扩展分区表在哪里?什么内容?
估计是 grub4dos 不适应此分区表。

点评

从提供的数据文件,看不出分区表的结构。可以在 grub4dos 下用 find 或 geometry 命令查看有多少个分区。这只能让报告者自己测试了。 还可以 cat --hex (hd0,4)+1 和 cat --hex (hd0,5)+1 如果都能成功 cat 出  详情 回复 发表于 2015-7-27 10:08
回复

使用道具 举报

1060#
发表于 2015-7-27 10:08:25 | 只看该作者
本帖最后由 不点 于 2015-7-27 10:12 编辑
2011yaya2007777 发表于 2015-7-10 08:03
分区表比较奇特。

硬盘分区清单


从提供的数据文件,看不出分区表的结构。可以在 grub4dos 下用 find 或 geometry 命令查看有多少个分区。这只能让报告者自己测试了。

还可以 cat --hex (hd0,4)+1 和 cat --hex (hd0,5)+1

如果都能成功 cat 出来,那就说明 BIOS 确实支持访问超过 128G 的扇区号。

如果不能 cat 出来,那就是 BIOS 不支持。

主分区已经是 100G (接近 128G)了,所以,位于扩展分区(的逻辑驱动器)上的文件,就有可能无法访问。

在 100G 之后,只有 28G 的空间是在 128G 以内的。如果 grldr 位于这 28G 以内,倒是也能访问得到它。但是如果 grldr 位于这 28G 之后,那就可能无法访问了。

GRLDR 位于主分区是没问题的,因为总是在 100G 以内。但位于 D:盘就要看是靠前还是靠后了。如果靠前(在 D: 盘的前 28G 以内),那就没问题,否则,就不行。如果 grldr 在 E:盘上,则肯定不行,因为肯定超过了 128G 的 BIOS 访问能力了。

这个问题很普通,也很常见。这并非很奇怪的问题。用我们现有的知识可以解释这个现象。只是问题出现了以后,报告者感到很惊异。报告者可能觉得 grub4dos 不该犯错误。其实这不是 grub4dos 的错,而是受到 BIOS 的制约所必然犯下的错,其根本原因是 BIOS 的错。

另外,报告者用某个 DOS 下的程序可以访问全部扇区,来说明 BIOS 支持访问全部扇区,这个逻辑是不成立的。DOS 下的软件可以用自己自带的驱动来访问硬盘,而不是使用 BIOS。

判断 BIOS 是否支持访问大扇区号的最简单的方法就是在 grub4dos 下用 cat 命令来测试(如上所述)。这个测试很简单,在菜单界面,按 c 键进入命令行,就可以测试了。一点也不麻烦。建议大家掌握这个方法。

回复

使用道具 举报

1061#
发表于 2015-7-27 10:27:07 | 只看该作者
不知 yaya 有没有计划编写出硬盘驱动?只需要把第一硬盘驱动起来就行。

grub2 里面有硬盘驱动的代码,可以看看能否借鉴。

我需要这个硬盘驱动来解决 kexec -l grub.exe 产生死机的问题。我已经解决了导致死机的两大关键障碍,还剩下最后一个问题没有解决,那就是当用 int13 访问硬盘时死机。如果不使用 int13 而使用自己的驱动来访问硬盘,则可以正常操作,不再死机了。

所以我希望有一个硬盘驱动,替换掉 ROM BIOS 的硬盘驱动。

回复

使用道具 举报

1062#
发表于 2015-7-27 10:59:25 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

1063#
 楼主| 发表于 2015-7-30 18:00:27 | 只看该作者
grub4dos 增加硬盘驱动是相当有意义的事情。不过依我的能力,现在还做不来。
我以前看过 grub2 的 usb 驱动代码,相当分散,看的一头雾水,最后只好放弃。
主要还是对 grub2 的程序结构不了解。

点评

我今天下载了 GRUB2 的最新源代码,竟然有 89M 之大(是用 git 下载的源代码),有发展到 100M 的趋势! 我也觉得,要看懂它,是一件不容易的事。不过如果有时间的话,我会尝试研究一下。 我粗略看了它的 disk  详情 回复 发表于 2015-7-30 20:10
回复

使用道具 举报

1064#
发表于 2015-7-30 20:10:44 | 只看该作者
2011yaya2007777 发表于 2015-7-30 18:00
grub4dos 增加硬盘驱动是相当有意义的事情。不过依我的能力,现在还做不来。
我以前看过 grub2 的 usb 驱 ...

我今天下载了 GRUB2 的最新源代码,竟然有 89M 之大(是用 git 下载的源代码),有发展到 100M 的趋势!

我也觉得,要看懂它,是一件不容易的事。不过如果有时间的话,我会尝试研究一下。

我粗略看了它的 disk driver,都是 C 语言写的,如果能够移植过来,也会十分庞大,不适合放在常规内存顶部,而必须放在扩展内存里面。

这样的话,就需要首先更改 grub4dos 的内存布局,把 grub4dos 自身隐藏在扩展内存顶部(以前曾讨论过)。

这会很累人的。所以这个工作暂且搁置起来。

还有一条路线就是设法移植一个精简的硬盘驱动。BareMetalOS 里面的硬盘驱动就只有若干个字节,当然它可能只能应付少部分硬盘。

第三条路线就是不再移植了,而着重解决 Linux 硬盘驱动与 BIOS 硬盘驱动冲突的问题。

如果这个问题彻底解决了,那么 Linux 就可以扮演一个引导器的角色了。

我就先沿着第三条路走,准备挖掘 Linux 的硬盘驱动造成 BIOS 硬盘访问失败的技术根源。

回复

使用道具 举报

1065#
 楼主| 发表于 2015-7-30 20:33:35 | 只看该作者
看来沿着第三条路走,实际一些。期盼早日成功。
回复

使用道具 举报

1066#
发表于 2015-8-11 20:02:07 | 只看该作者
本帖最后由 fukystone 于 2015-8-11 20:10 编辑

咨询一下:
0.4.6a在PXE启动方面有什么改变吗?
下了0.4.6a的2015-08-07版本,发现用pxe启动的时候,找不到我的pe目录了,但是根目录下有dir.txt文件。
同样条件下替换为0.4.5c的2015-05-18版本就可以找到目录。
另外:0.4.6a的2014-07-09版本也是好用的
回复

使用道具 举报

1067#
发表于 2015-11-15 09:49:11 | 只看该作者
请问 360救急盘的这个 syslinux.cfg 怎么转为 grub4dos菜单?
文件位置:(hd0,0)/360Disk/syslinux.cfg

  1. default puppy
  2. prompt 0
  3. timeout 1

  4. label puppy
  5. kernel vmlinuz
  6. append initrd=initrd.gz pmedia=usbflash vga=0x317 anim=1
复制代码


改成:
  1. title puppy
  2. root (hd0,0)
  3. kernel /360Disk/vmlinuz pmedia=usbflash vga=0x317 anim=1
  4. initrd /360Disk/initrd.gz
复制代码

他直接重启了


改成:
  1. title puppy
  2. root (hd0,0)/360Disk
  3. kernel /vmlinuz pmedia=usbflash vga=0x317 anim=1
  4. initrd  /initrd.gz
复制代码

他还是直接重启了


点评

1、能不能一步一步显示屏幕信息,而不是只有 “重启” 两个字? 2、试过 0.4.5c 和 0.4.6a 吗? 3、试过早期的 grub4dos 版本吗?没准早期的可以成功,而后来的版本可能引入新的 bug。 4、你用的是原版未改  详情 回复 发表于 2015-11-16 09:11
回复

使用道具 举报

1068#
发表于 2015-11-15 09:57:00 | 只看该作者
我看 说明 新版 支持大于4G的UD文件, 请问,对应地, 用什么软件生成和维护大于4G的文件?
回复

使用道具 举报

1069#
 楼主| 发表于 2015-11-15 18:11:07 | 只看该作者
使用新版  fbinstTool 。似乎作者还没有更新。

点评

如果 PECMD/MBROSTool支持的话, 不知道怎么做?不知道什么规范。  详情 回复 发表于 2015-11-16 10:00
回复

使用道具 举报

1070#
发表于 2015-11-16 09:11:30 | 只看该作者
mdyblog 发表于 2015-11-15 09:49
请问 360救急盘的这个 syslinux.cfg 怎么转为 grub4dos菜单?
文件位置:(hd0,0)/360Disk/syslinux.cfg
...

1、能不能一步一步显示屏幕信息,而不是只有 “重启” 两个字?

2、试过 0.4.5c 和 0.4.6a 吗?

3、试过早期的 grub4dos 版本吗?没准早期的可以成功,而后来的版本可能引入新的 bug。

4、你用的是原版未改动的 grub4dos 呢,还是经过你改造之后的 grub4dos?(开源软件,任何人都有可能改造它)。

以上是处理问题的一般步骤,目的是尽量缩小范围,快速确定问题的根源。

点评

谢谢!!! 不知道什么原因。 后来重新格式化后,什么都没改(还是原来的菜单),又都好了。  详情 回复 发表于 2015-11-16 09:59
回复

使用道具 举报

1071#
发表于 2015-11-16 09:59:38 | 只看该作者
不点 发表于 2015-11-16 09:11
1、能不能一步一步显示屏幕信息,而不是只有 “重启” 两个字?

2、试过 0.4.5c 和 0.4.6a 吗?

谢谢!!!
不知道什么原因。
后来重新格式化后,什么都没改(还是原来的菜单),又都好了。
回复

使用道具 举报

1072#
发表于 2015-11-16 10:00:37 | 只看该作者
2011yaya2007777 发表于 2015-11-15 18:11
使用新版  fbinstTool 。似乎作者还没有更新。

如果 PECMD/MBROSTool支持的话, 不知道怎么做?不知道什么规范。
回复

使用道具 举报

1073#
 楼主| 发表于 2015-11-17 12:44:34 | 只看该作者
// version 1.6
struct fbm_file
{
  uchar size;
  uchar flag;
  uchar4 data_start;
  uchar4 data_size;
  uchar4 data_time;
  char name[0];
} __attribute__((packed));

/*
* version 1.7
* struct fbm_file
* {
*   uchar size;
*   uchar flag;
*   uchar4 data_start;
*   unsigned long long data_size;
*   uchar4 data_time;
*   char name[0];
* } __attribute__((packed));
*/
按照版本判断。
注意 char name[0] 位置变化。
回复

使用道具 举报

1074#
发表于 2015-11-17 17:07:04 | 只看该作者
老机器 ide硬盘
从0.44升级到    grub4dos-0.4.6a-2015-11-10  最新版了
最新版map vhd 效果比较好 0.44 和 grub4dos-0.4.5c-2015-05-18 都不能启动 显示  错误 e60
最新版map iso 如何 还 没试 ,以前0.44比较好 ,不知道 是不是  ide硬盘的 缘故

点评

ee1 兄,你报告的 error 60 似乎是说你的映像文件不连续啊。这可是个常见的问题,教程应该讲得很详细。你把你的映像文件进行磁盘碎片整理,整理成一大块连续的文件,就可以了。好好看看教程,希望今后不要有人再提出  详情 回复 发表于 2015-11-18 08:48
回复

使用道具 举报

1075#
发表于 2015-11-18 08:48:06 | 只看该作者
ee1 发表于 2015-11-17 17:07
老机器 ide硬盘
从0.44升级到    grub4dos-0.4.6a-2015-11-10  最新版了
最新版map vhd 效果比 ...

ee1 兄,你报告的 error 60 似乎是说你的映像文件不连续啊。这可是个常见的问题,教程应该讲得很详细。你把你的映像文件进行磁盘碎片整理,整理成一大块连续的文件,就可以了。好好看看教程,希望今后不要有人再提出这类初级问题了。

点评

ee1
收到。 最新版支持不连续的文件,以前的0.46a 也是不能启动的?我只是想问下和ide 硬盘有无关联?  详情 回复 发表于 2015-11-18 09:00
回复

使用道具 举报

1076#
发表于 2015-11-18 09:00:06 | 只看该作者
不点 发表于 2015-11-18 08:48
ee1 兄,你报告的 error 60 似乎是说你的映像文件不连续啊。这可是个常见的问题,教程应该讲得很详细。你 ...

收到。
最新版支持不连续的文件,以前的0.46a 也是不能启动的,我只是想问下和ide 硬盘有无关联?

点评

GRUB4DOS 没有硬盘驱动,全都是使用 BIOS 来访问硬盘。 而 BIOS 根本不知道硬盘是什么类型:不知道究竟是 USB 设备还是 别的设备,不知道究竟是 IDE 还是 SCSI,不知道究竟是 SATA 还是 PATA。 因此 grub4dos  详情 回复 发表于 2015-11-18 11:41
回复

使用道具 举报

1077#
发表于 2015-11-18 11:41:47 | 只看该作者
ee1 发表于 2015-11-18 09:00
收到。
最新版支持不连续的文件,以前的0.46a 也是不能启动的,我只是想问下和ide 硬盘有无关联?


GRUB4DOS 没有硬盘驱动,全都是使用 BIOS 来访问硬盘。

而 BIOS 根本不知道硬盘是什么类型:不知道究竟是 USB 设备还是 别的设备,不知道究竟是 IDE 还是 SCSI,不知道究竟是 SATA 还是 PATA。

因此 grub4dos 从来不涉及硬盘类型的问题。它只根据硬盘的 BIOS 号码 (0x80 之类的)来访问硬盘。

点评

这段话不太严谨。 BIOS当然知道硬盘是什么类型,知道是 USB 设备还是 别的什么设备。 BIOS的USB设备驱动、USB-HDD的确定,其源代码用A4纸打印,有几十页之多。 我想,不点的原意,应是 BIOS (提供给G4D等软  详情 回复 发表于 2015-12-30 11:46
ee1
感谢大师!  明白了和BIOS 有关系。  详情 回复 发表于 2015-11-18 11:55
回复

使用道具 举报

1078#
发表于 2015-11-18 11:55:10 | 只看该作者
不点 发表于 2015-11-18 11:41
GRUB4DOS 没有硬盘驱动,全都是使用 BIOS 来访问硬盘。

而 BIOS 根本不知道硬盘是什么类型:不知道 ...

感谢大师! 
明白了和BIOS 有关系。
回复

使用道具 举报

1079#
发表于 2015-12-21 11:37:33 | 只看该作者
Grub4dos出新版了。用最新(20151216)试了一下,发现5大的几个模块(SISO,NTBOOT,SRSF6增强版)均出错无法运行,大意是无法识别的设备字符之类。请问CHENALL本次更新对模块有什么限制?

点评

新的版本对外部命令的执行有一些改变. 需要更新外部命令,没什么问题的话暂时可以用旧版本的  详情 回复 发表于 2015-12-21 15:38
回复

使用道具 举报

1080#
发表于 2015-12-21 15:38:56 | 只看该作者
2012kwy 发表于 2015-12-21 11:37
Grub4dos出新版了。用最新(20151216)试了一下,发现5大的几个模块(SISO,NTBOOT,SRSF6增强版)均出错无 ...

新的版本对外部命令的执行有一些改变.

需要更新外部命令,没什么问题的话暂时可以用旧版本的

点评

原来如此,多谢C大回复。就不知P大将如何处理这个问题,好像0PE里也集成了5大的模块。  详情 回复 发表于 2015-12-22 08:51
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-16 03:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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