编译内核后没有加入umass模块的后果
昨晚编译完内核后着实开心了一把,岂料今天就杯具鸟……系统挂不上移动硬盘,用ls查看/dev/下的设备压根就没有da0s1之类的东东,ttvy1控制台下倒是有消息提示发现了usb设备,刚开始以为是自己的移动硬盘供电不足的原因,找了个U盘试了一下,还是不行,看来是昨晚编译内核少了什么东西了,因为之前是可以的
很快就在万能的网上找到了答案,就是第一次编译出错后被我注释掉的umass模块,没办法,看来只能重新编译了,首先修改配置文件
#cd /usr/src/sys/amd64/conf
#vi MY_KERNEL_CONF
找到以下三行(不在一块)
device scbus
device da
device umass
去除前面的注释
然后备份原有的系统内核,正如手册上说的,时刻保证系统有一个可用内核是一个好习惯:
mv /boot/kernel.old /boot/kernel.generic
如果不这样做的话,再一次编译内核时会将现有的内核(也就是昨天晚上产生的版本)放入/boot/kernel.old而最初的内核(也就是现在的/boot/kernel.old)就会被冲掉
重新编译并安装新内核:
#cd /usr/src
#make buildkernel KERNCONF=MY_KERNEL_CONF
#make installkernel KERNCONF=MY_KERNEL_CONF
#reboot
然后插上U盘,咦,系统不响应输入了,看起来向是假死了的样子,等了一会没反应,进控制台也进不了,一狠心直接按电源键重启,发现走的是正常的关机程序(以前一直都不知道)
重新启动进入系统以后,先用ls /dev/看了一下设备,然后再一次插入U盘,又不响应了,直接将U盘拔之(反正我还没mount上),系统很快恢复了,恩,用ls /dev查看,发现多了什么东西,仔细对比,多了一个msdosfs文件夹,但是里面什么都没有,莫非刚才的假死是在加载相应的驱动模块?重新插上U盘,ls /dev/ 哈哈,终于有了我想要的da0s1设备,mount之
#mount -t msdosfs /dev/da0s1 /mnt/
一切OK,可以读也可写
然后把移动硬盘拿来,插上之后除了遇到没插好线的小插曲之外,也一切OK
挂载fat格式分区:
#mount -t msdosfd -o large /dev/da0s2/ /mnt/
#umount /mnt
挂载ext2格式分区
#mount -t ext2fs /dev/da0s1/ /mnt/
#umount /mnt
本以为到此结束了,但是折腾了一阵之后出现一个莫名的问题:
#mount -t ext2fs /dev/da0s1/ /mnt/
上述命令刚开始的时候还好好的,到后来就不行了,老是提示什么operate not permitted的问题,我用的root阿,郁闷了,而挂载同为ext2格式的/dev/da0s4就没任何问题
切换到控制台下发现有一条信息一直不停的刷新,说是让我在内核中加入device pass,打开我的内核配置文件一看,这一条果然被我注释掉了,去之,重新编译内核
完事后,重新挂载ext2分区
还是提示operate not permitted,控制台下有另一条信息:
filesystem is not clean, run fsck
不相信,我的这两个ext2分区在ubuntu下还能读呢
修改内核配置文件,将device ses模块前面的注释去除
重新编译~~
没有什么惊喜
最后,尝试只读式挂载:
# mount -t ext2fs -r /dev/da0s1 /mnt/compass/
这样倒是可以,后来在
http://wiki.freebsdchina.org/faq/filesystem/e/mount_ext2fs
看到说是FreeBSD不适合以读写的方式挂载ext格式的分区,难道我就此放弃?在移动硬盘上专门搞一个NFS分区?
后来尝试将内核换回最初的版本(幸亏我有备份)
#mv /boot/kernel /boot/kernel.bak
#mv /boot/kernel.generic /boot/kernel
#reboot
竟然还是一样,而且/dev里压根就没有我代表移动硬盘的设备
于是乎换成最新的自编译版本,重启之后发现一个更诡异的现象:
$
Filesystem Size Used Avail CapacityMounted on
/dev/ad6s1a 4.8G 672M 3.8G 15% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad6s1h 97G 2.0G 87G 2% /home
/dev/ad6s1e 6.8G 48K 6.2G 0% /tmp
/dev/ad6s1g 9.7G 1.9G 7.0G 22% /usr
/dev/ad6s1f 15G 2.9G 11G 21% /usr/local
/dev/ad6s1d 9.7G 32M 8.9G 0% /var
我机器里头的固定硬盘编号怎么成6了?以前倒是没注意过这个事情,另外,移动硬盘这头,只有系统开机检测才能是/dev/里头出现相应的设备文件,其他任何情况下都没有
dmesg可以看到如下信息:
ugen1.2:at usbus1
umass0:on usbus1
umass0:SCSI over Bulk-Only; quirks = 0x0000
Root mount waiting for: usbus1
umass0:0:0:-1: Attached to scbus0
Trying to mount root from ufs:/dev/ad6s1a
da0 at umass-sim0 bus 0 target 0 lun 0
da0:Fixed Direct Access SCSI-4 device
da0: 40.000MB/s transfers
da0: 305245MB (625142448 512 byte sectors: 255H 63S/T 38913C)
rl0: link state changed to UP
logo_saver: the console does not support M_VGA_CG320
module_register_init: MOD_LOAD (logo_saver, 0xffffffff80a22010, 0) error 19
ugen1.2:at usbus1 (disconnected)
umass0: at uhub1, port 2, addr 2 (disconnected)
(da0:umass-sim0:0:0:0): lost device
(da0:umass-sim0:0:0:0): removing device entry
ugen0.2:at usbus0 (disconnected)
ukbd0: at uhub0, port 1, addr 2 (disconnected)
ums0: at uhub0, port 1, addr 2 (disconnected)
ugen0.2:at usbus0
ukbd0:on usbus0
kbd2 at ukbd0
ums0:on usbus0
ums0: 5 buttons and coordinates ID=1
ugen1.2:at usbus1
umass0:on usbus1
umass0:SCSI over Bulk-Only; quirks = 0x0000
umass0:0:0:-1: Attached to scbus0
xptioctl: pass driver is not in the kernel
xptioctl: put "device pass" in your kernel config file
郁闷了~~
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/105027/showart_2138260.html
页:
[1]