lzh_hjzz 发表于 2002-11-25 08:41:35

系统盘

各位请问:用 make bzdisk 做的系统盘如何装载文件系统??

netdigger 发表于 2002-11-25 15:11:54

一张盘还是两张盘?

lzh_hjzz 发表于 2002-11-25 15:57:11

就一张,可以启动,就是看不见文件,无法进入!

netdigger 发表于 2002-11-25 16:24:28

报什么样的错误?

lzh_hjzz 发表于 2002-11-26 08:06:53

我用mount 命令试过各种文件类型都不行,别的盘很多都用过,都无问题,而且我做过不止一张,都无法进入,不知什么原因?我想可能是磁盘引导扇区有内容故无法访问,你说是吗??

netdigger 发表于 2002-11-26 09:32:03

哦,我知道了。你用这个命令做的boot盘,是没有文件格式的,内核是从磁盘的第一个扇区住后写的。你当然不能mount的。

lzh_hjzz 发表于 2002-11-26 11:05:39

那这张盘就不能干别的用了吗?(除了启动功能外)

netdigger 发表于 2002-11-26 11:09:05

对,什么都不能做了,如果想用别的,最好用lilo启动

lzh_hjzz 发表于 2002-11-26 11:09:57

谢谢!

netdigger 发表于 2002-11-29 16:09:40

因该是,因为从第一个扇区开始写入数据,这个时候所有原来关于文件系统格式的资料全部被洗。所以可以认为没有格式。我是这么认为的,。

netdigger 发表于 2002-11-29 16:43:44

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

netdigger 发表于 2002-11-29 17:04:30

对,没有错,我也是先把内核文件读到内存a,然后用open打开设备fd0,并映射到内存b,然后把a的内容拷贝到b,这样内核就从软盘的第零个扇区开始往后放。
我看到过两篇文章,可惜现在找不到了,气死我了。

netdigger 发表于 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的内容。

netdigger 发表于 2002-11-29 19:31:10

如果用lilo,是用不到bootsect.s这个代码的。但内核中肯定还有botsect.s的内容。
如果用内核直接启动,那么bootsect.s肯定在硬盘的第一个扇区。
等我明天把程序写出来验证一下就清楚了。
页: [1]
查看完整版本: 系统盘