LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 20966|回复: 41

在移动硬盘上安装GentooLinux

[复制链接]
发表于 2004-11-10 16:19:17 | 显示全部楼层 |阅读模式
由于我没有单独使用的计算机,而且一般使用的计算机上安装的都是windows系统。为了便于学习和工作,前几天买了个移动硬盘,是用硬盘盒加上笔记本电脑硬盘组装的。希望在上面安装一个Linux系统,这样走到什么地方都能使用Linux了。但安装过程之艰难,远远超过我最初的预料。几经磨难,几乎都要放弃了,最后终于试验成功了!
下面说一下我的硬件:

移动硬盘:SAMSUNG生产的MP0402H,40G,5400转/分

硬盘盒:硬盘盒上标有FOR IBM TRAVELSTAR,支持USB2.0。这个硬盘盒是假货,我上网查过了,IBM不生产这种产品。但是价格便宜。

先安装gentoo linux,过程按照安装手册进行即可,具体的我就不多说了。
选择linux2.6.4的内核编译,linux2.4的我试过了,不能成功。
在编译内核时,分别选中下列选项,其它的根据需要自行选取:

  1. File systems  --->  
  2.         Pseudo filesystems  --->
  3.                 /proc file system support
  4.                 /dev file system support (OBSOLETE)
  5.                 Virtual memory file system support (former shm fs)
  6.                 Automatically mount at boot

  7. Device Drivers  --->  
  8.         Block devices  --->
  9.                 Loopback device support
  10.                 RAM disk support
  11.                 Initial RAM disk (initrd) support

  12.         ATA/ATAPI/MFM/RLL support  --->
  13.                 SCSI emulation support

  14.         SCSI device support  --->
  15.                 SCSI disk support
  16.                 SCSI generic support

  17.         USB support  --->
  18.                 Support for USB
  19.                 USB device filesystem
  20.                 EHCI HCD (USB 2.0) support
  21.                 OHCI HCD support
  22.                 UHCI HCD (most Intel and VIA) support
  23.                 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接口的作用。为了省点钱,以后会对硬盘造成什么影响还不知道呢。但这次折腾的经验教训,或许能对有相似经历的弟兄们有点帮助。
发表于 2004-11-10 18:09:03 | 显示全部楼层
sda1什么的,是启动后脚本建立的吧,MAKEDEV?
发表于 2004-11-10 18:31:17 | 显示全部楼层
恭喜。
ps:老虎兄可以参考一下kj501兄的做法。呵呵。
发表于 2004-11-11 08:40:59 | 显示全部楼层
最初由 home_king 发表
恭喜。
ps:老虎兄可以参考一下kj501兄的做法。呵呵。



我还是等待教主的吧。

因为,我的想法和楼主兄弟的不太一样。
楼主的想法,是在自己的电脑上运行linux。
而我的想法是,在任何支持usb硬盘启动intel架构的电脑上运行linux。也就是可以带着这个移动硬盘,可以到处跑的那种感觉。

因此,在解决了移动硬盘启动的之后,剩下的问题就是考虑在启动的时候,按照livecd的方式进行检测硬件,而不是按照单机的那种方式启动。
此外,用移动硬盘与livecd相比,好处就是容量大,而且可以记住一些软件的配置。

所以,教主在考虑硬盘安装的脚本的时候,在能够从usb硬盘启动的同时。

我认为下面的,也是至关重要的
1 使安装之后的硬盘ibox仍然能够保持livecd的硬件检测,硬件自动配置的功能
2 使安装之后的硬盘ibox编译出来的软件,仍然符合通用架构的特性
3 使安装之后的硬盘ibox,能够自动搜集、刻录出更新软件之后的新的livecd。使得livecd和移动硬盘能够起到相辅相成的作用


暂时能想到的就是这么多,当然如果有人想把ibox当成安装gentoo的一种捷径的话,教主也可以给出不同的make.conf供大家选择。

PS:这应该不时一时半会儿可以完成的,教主努力。我等只能翘首企盼,做做测试了。

:p :p
发表于 2004-11-11 10:29:18 | 显示全部楼层
可以作为一个项目来研究一下了,如果实现的确实非常方便。
发表于 2004-11-11 10:47:44 | 显示全部楼层
我认为ibox还是要保持livecd的特性就好了
至于安装gentoo的捷径自有官方的install脚本啊
 楼主| 发表于 2004-11-11 12:13:02 | 显示全部楼层
最初由 hutigers 发表

我还是等待教主的吧。

因为,我的想法和楼主兄弟的不太一样。
楼主的想法,是在自己的电脑上运行linux。
而我的想法是,在任何支持usb硬盘启动intel架构的电脑上运行linux。也就是可以带着这个移动硬盘,可以到处跑的那种感觉。
:p :p

这正是我要达到 的目的。因为我周围的计算机几乎都是用windows,要用linux非常的不方便。把linux安装在移动硬盘上,想要达到的目的就是在需要使用linux时,只要找一台支持USB-HDD启动的计算机,就可以使用linux。如果是在自己的电脑上运行 linux,何苦费这么大劲去在移动硬盘上安装linux呢?从开始到结束,差不多连续折腾了一个星期,编译了几十次内核,为了节约时间,我连中午都不休息了。吃饱也是乘着编译内核时跑出去的,一吃完就马上回来看结果。因为我每一次都以为这次的方案一定可行,但每次都是以失败而告终!
这次的经历也让学到不少东西,特别是initrd在启动过程中的作用。也曾经迫使我去看了一下内核启动部分的源代码。试验过程中我写了十几页笔记,我写在贴子中的只是最后成功的结论而已,还有一些的细节限于篇幅,没有写出来。但我希望有兴趣的弟兄最好是自己动手实践,这样才能有最真实的体会。毕竟,实践是最好的老师!
btw:gnetoo中用genkernel就可以编译出与liveCD类似的内核。考虑到要带着移动硬盘到处跑,可以多编译一些驱动程序。由于移动硬盘空间大,内核大一些没有关系。
 楼主| 发表于 2004-11-11 12:15:22 | 显示全部楼层
我认为任何版本的linux只要能按照我提供的方法去做,都是可以安装上USB移动硬盘的。希望大家能多多实践。
发表于 2004-11-11 12:16:27 | 显示全部楼层
好贴!有机会我也试试。
发表于 2004-11-11 14:31:38 | 显示全部楼层
偶目前也是在initrd出问题了,回去参考楼主的办法试验一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表