操作系统: 10 2009存档

xfs mount error

| | Comments (2) | TrackBacks (0)
在rhel4上装了kmod-xfs和xfsprogs来试验xfs的性能,在格真实硬盘之前,先试试虚拟的能不能走通:
dd if=/dev/zero of=vp bs=65536 size=1024 (造出一个64MB大的vp文件)
mkfs.xfs vp -b log=16 (在vp文件上面创建xfs,块大小为64K)
mount -o loop vp /mnt/
最 后一句命令,mount报错:“mount: Function not implemented”。在网上一查,收到此错误的原因都不一样,最后我查源码,才发现是xfs的实现有个xfs_mountfs(fs/xfs /xfs_mount.c),里面会检查xfs的块大小,如果大于PAGE_SIZE(通常是4K),就报错退出。想用大点的块儿都不行。
GFS说它的trunk是64MB一个,不知道怎么做的。
1. virtualbox上编译内核
用virtualbox装了一个debian,开始试着自己编译linux内核,把ext2、ext3都编译进去,配置好grub,重启,结果终端报:
unbale to mount root fs . tried ext2, ext3, ...(后面还有一些我编进去的文件格式)
几年前我编译内核没起来就是这个错误,现在依旧,真是路窄。我试着加了一些设备驱动进去,加了一些文件格式进去,报错依然,我的虚拟硬盘就两个分区,一个是ext2,另一个是swap,这内核启动也不认得?最后才发现:必须把cramfs格式编进去,位置在内核配置界面:
File systems
    ==>
Miscellaneous filesystems
       ==>
Compressed ROM file system support (cramfs)
打开之,内核终于正常启动了。后来才想明白,linux2.6以上内核开始使用ramfs做为初始化时的根文件系统,故必须标此编译选项。
系统是进去了,但上不了网,网卡是PCI网卡,于是再编内核,把设备驱动里与PCI相关的标上,还在
Device Drivers
    ==> Network device support
        ==> Ethernet (100 or 1000 Mbit)
中把Intel Pro网卡的驱动选上(我在virtualbox里的网络选的是Intel Pro/1000 MT Desktop网卡),最后启动,一切正常了。


2. 我的真实老机器上编译内核
有了virtualbox上的教训,配置和编译内核快了很多,但郁闷的是终端挂起,和virtualbox上不同:
Waiting for mount root fs......
仔细想想,我的硬盘是ATA接口的,与ATA相关的驱动我都选了啊,最后才发现位置:
Device Drivers
    ==> ATA/ATAPI/MFM/RLL support
        ==>
ELSA,VLB,PCI and onboard controllers(先选上这个,才能看到下面的选项)
选中后多出来很多驱动供选择,我是VIA硬盘接口芯片(不了解的人可以都选上,反正慢不了多少),选了其中的
            VIA82xx...
再编译、启动,ok了。
但网又上不去,最后发现我的只是老的百兆网卡,在
Device Drivers
    ==> Network device support
        ==> Ethernet (10 or 100 Mbit)
里选定所有关于Reltek的驱动,这下网络也能用了。