问题:我也有意想看MINIX的源代码,但看东西不结合实际使用,会流于肤浅并容易忘掉。所以我安装了Minix 2.0,想边用边看边试验。令我烦恼的是,不知道Minix 2.0使用的文件系统有什么变化,蓝点Linux 2.0竟然不认。搞得Linux无法mount Minix的分区,Minix也无法mount Windows的FAT分区,而Minix下的工具不足,必须和其它系统交换数据,十分难受。
Minix最有名的newsgroup是comp.os.minix,可到www.deja.com去看它已post的内容,发现已经有人问了这个问题"mount minixfs from Linux",而且有人回答了,而回答者之一是Albert S. Woodhull,经典教科书"Operating System: Design and Implementation 2nd Edition"的作者之一。于是又找到了Albert Woodhull的主页:
http://minix1.hampshire.edu
这个主页的内容十分实用。
其FAQ, Hints页在:
http://minix1.hampshire.edu/hints.html
有很多有用的东西在内。
Minix和其它OS之间的数据交换在:
http://minix1.hampshire.edu/faq/datxchng.html
介绍
我最关注的就是如何在Linux下mount一个Minix的文件系统,参考文件是:
http://minix1.hampshire.edu/faq/mxfromlx.html
原来出错的原因是:
Minix安装到hd3主分区时,第一扇区512字节放的是引导代码,作引导扇区;后面的空间分成两块,第一块紧接在引导扇区后面,共1440K,称作hd3a subpartition,作Minix的/;剩下的是第二块,称作hd3c subpartition,作Minix的/usr。即Minix把主分区划分为subpartition,问题就出在这里,Linux不认识Minix的subpartition!
解决办法是:
借助Linux的loop设备。Albert Woodhull语:"The Linux loop device can be used to handle this - it makes a file look like a filesystem, and the file can be defined as a byte offset from the beginning of a primary partition"。由此,(以下操作在Linux下进行)
losetup /dev/loop0 /dev/hda3 -o 512
表示hda3从512字节偏移开始处(前512字节是引导扇区),定义为loop0,亦即
Minix的hd3a --> Linux的loop0。
losetup /dev/loop1 /dev/hda3 -o 1475072
表示hda3从1475072字节偏移开始处(512+1440x1024 = 1475072),定义为loop1,亦即
Minix的hd3c --> Linux的loop1。
然后把loop0, loop1当作普通Minix文件系统mount上去即可,
mount -t minix /dev/loop0 /minix
mount -t minix /dev/loop1 /minix/usr
现在,在Linux下终于能够看到Minix的文件系统了。
参考资料:
Mounting Minix Partitions from Linux,http://minix1.hampshire.edu/faq/mxfromlx.html
Exchanging Data between Minix and Other OS File Systems,http://minix1.hampshire.edu/faq/datxchng.html
The MINIX Hints Page,http://minix1.hampshire.edu/hints.html
http://zzh-cn.com/
本文作者: 张中华(mike_z@21cn.com)
--
原文链接: http://www.lslnet.com/linux/docs/linux-3376.htm
|