QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1956|回复: 13

系统盘

[复制链接]
发表于 2002-11-25 08:41:35 | 显示全部楼层 |阅读模式
各位请问:用 make bzdisk 做的系统盘如何装载文件系统??
发表于 2002-11-25 15:11:54 | 显示全部楼层
一张盘还是两张盘?
回复

使用道具 举报

 楼主| 发表于 2002-11-25 15:57:11 | 显示全部楼层
就一张,可以启动,就是看不见文件,无法进入!
回复

使用道具 举报

发表于 2002-11-25 16:24:28 | 显示全部楼层
报什么样的错误?
回复

使用道具 举报

 楼主| 发表于 2002-11-26 08:06:53 | 显示全部楼层
我用mount 命令试过各种文件类型都不行,别的盘很多都用过,都无问题,而且我做过不止一张,都无法进入,不知什么原因?我想可能是磁盘引导扇区有内容故无法访问,你说是吗??
回复

使用道具 举报

发表于 2002-11-26 09:32:03 | 显示全部楼层
哦,我知道了。你用这个命令做的boot盘,是没有文件格式的,内核是从磁盘的第一个扇区住后写的。你当然不能mount的。
回复

使用道具 举报

 楼主| 发表于 2002-11-26 11:05:39 | 显示全部楼层
那这张盘就不能干别的用了吗?(除了启动功能外)
回复

使用道具 举报

发表于 2002-11-26 11:09:05 | 显示全部楼层
对,什么都不能做了,如果想用别的,最好用lilo启动
回复

使用道具 举报

 楼主| 发表于 2002-11-26 11:09:57 | 显示全部楼层
谢谢!
回复

使用道具 举报

发表于 2002-11-29 16:09:40 | 显示全部楼层
因该是,因为从第一个扇区开始写入数据,这个时候所有原来关于文件系统格式的资料全部被洗。所以可以认为没有格式。我是这么认为的,。
回复

使用道具 举报

发表于 2002-11-29 16:43:44 | 显示全部楼层
其实我也没有做过,但我想了一个办法去测试:
fd = open("/dev/fd0",O_RDWR);
pfd = mmap(...)(忘了参数表了)
然后在打开bzImage,把文件内容全部放入*pfd开始的内存中。
如果这样做了以后,盘仍旧能够启动,那就说明没有文件分配表和目录表。因为dd命令我了解一点点。好像也是这个原理
回复

使用道具 举报

发表于 2002-11-29 17:04:30 | 显示全部楼层
对,没有错,我也是先把内核文件读到内存a,然后用open打开设备fd0,并映射到内存b,然后把a的内容拷贝到b,这样内核就从软盘的第零个扇区开始往后放。
我看到过两篇文章,可惜现在找不到了,气死我了。
回复

使用道具 举报

发表于 2002-11-29 17:29:06 | 显示全部楼层
你看了内核的结构了吧?
内核不一定要用lilo或grub引导,它自己也可引导的。!
/usr/src/linux-2.4.19/arch/i386/boot下面的bootsect.s就是起和lilo一样的功能,bootsect.s运行完了以后,再把控制权交张setup.s。如果用lilo引导,那么就直接交给setup.s,而不经过bootsect.s。
内核编译以后,最前面就是bootsect.s的内容。或者用dd命令时,会把bootsect.s编译出来的内容拷贝到第一个扇区(这个我不是很清楚,因为我没有验证过)。但想来dd不是专门用来拷贝内核的。所以我想内核编译以后,最前面就是bootsect.s的内容。
回复

使用道具 举报

发表于 2002-11-29 19:31:10 | 显示全部楼层
如果用lilo,是用不到bootsect.s这个代码的。但内核中肯定还有botsect.s的内容。
如果用内核直接启动,那么bootsect.s肯定在硬盘的第一个扇区。
等我明天把程序写出来验证一下就清楚了。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 00:21 , Processed in 0.074777 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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