|
|
由于我没有单独使用的计算机,而且一般使用的计算机上安装的都是windows系统。为了便于学习和工作,前几天买了个移动硬盘,是用硬盘盒加上笔记本电脑硬盘组装的。希望在上面安装一个Linux系统,这样走到什么地方都能使用Linux了。但安装过程之艰难,远远超过我最初的预料。几经磨难,几乎都要放弃了,最后终于试验成功了!
下面说一下我的硬件:
移动硬盘:SAMSUNG生产的MP0402H,40G,5400转/分
硬盘盒:硬盘盒上标有FOR IBM TRAVELSTAR,支持USB2.0。这个硬盘盒是假货,我上网查过了,IBM不生产这种产品。但是价格便宜。
先安装gentoo linux,过程按照安装手册进行即可,具体的我就不多说了。
选择linux2.6.4的内核编译,linux2.4的我试过了,不能成功。
在编译内核时,分别选中下列选项,其它的根据需要自行选取:
- File systems --->
- Pseudo filesystems --->
- /proc file system support
- /dev file system support (OBSOLETE)
- Virtual memory file system support (former shm fs)
- Automatically mount at boot
- Device Drivers --->
- Block devices --->
- Loopback device support
- RAM disk support
- Initial RAM disk (initrd) support
- ATA/ATAPI/MFM/RLL support --->
- SCSI emulation support
- SCSI device support --->
- SCSI disk support
- SCSI generic support
- USB support --->
- Support for USB
- USB device filesystem
- EHCI HCD (USB 2.0) support
- OHCI HCD support
- UHCI HCD (most Intel and VIA) support
- USB Mass Storage support
复制代码
编译后,将内核复制到/boot目录下。接着,用genkernel制作一个initrd文件,执行:
genkernel initrd
生成的initrd-2.6.4放在/boot目录下。此时,要对initrd-2.6.4中的linuxrc脚本作一些修改。执行:
cp /boot/initrd-2.6.4 /tmp/initrd-2.6.4.gz
cd /tmp
gunzip initrd-2.6.4.gz
mkdir -p /mnt/initrd
mount -o loop initrd-2.6.4 /mnt/initrd
vim /mnt/initrd/linuxrc
在开始处加上,
echo 'wait 3 seconds...'
sleep 3
然后保存。重新制作initrd文件:
umount /mnt/initrd
gzip initrd-2.6.4
cp initrd-2.6.4.gz /boot/initrd-2.6.4
接下来,安装grub到移动硬盘上。编辑/boot/grub/grub.conf文件,内容如下:
title Gentoo Linux 2.6.4
root (hd0,2)
kernel /boot/vmlinuz-2.6.4 root=/dev/ram0 init=/linuxrc real_root=/dev/sda3
initrd /boot/initrd-2.6.4
保存后,在CMOS中设置为USB-HDD启动,结果启动时找不到有效的根设备,启动失败。
这个问题困扰了我好几天,一直无法解决,直到今天,在对启动信息仔细观察后,发现启动后,系统已经能正确识别出移动硬盘的型号和分区,但就是不能把分区映射成/dev/sda,/dev/sda1,/dev/sda2,...等形式,因此,启动时,以root=/dev/sda3指定根设备,内核自然是找不到的。经过查看/dev/scsi目录,发现移动硬盘上的分区可以用/dev/scsi/host0/bus0/target0/lun0/part1,/dev/scsi/host0/bus0/target0/lun0/part2,/dev/scsi/host0/bus0/target0/lun0/part3。。。等形式引用。修改/boot/grub/grub.conf,将
kernel /boot/vmlinuz-2.6.4 root=/dev/ram0 init=/linuxrc real_root=/dev/sda3
改成:
kernel /boot/vmlinuz-2.6.4 root=/dev/ram0 init=/linuxrc real_root=/dev/scsi/host0/bus0/target0/lun0/part3
重新启动,一切OK!
需要指出的是,在启动后,登录进入linux,/dev/sda3又能正常引用。只是在启动时有点不正常。具体原因,我也不明白。可能和启动时设备初始化的顺序有关吧。
由于我买的硬盘盒是假货,估计问题有可能是这个造成的。最简单的硬盘盒只能起到一个IDE接口转USB接口的作用。为了省点钱,以后会对硬盘造成什么影响还不知道呢。但这次折腾的经验教训,或许能对有相似经历的弟兄们有点帮助。 |
|