USB硬盘Linux,在usb硬盘上装Linux

在usb硬盘上装Linux

发布时间:2007-10-25 00:49:48来源:红联作者:wmbodbc

新电脑的硬盘只有60G,所以我就不打算在上面装双系统了。正好手里还有很多以前剩下的笔记本硬盘,还有usb2的硬盘盒,用一个来专门做linux系统正好。

要在usb 盘上装操作系统,首先要确定BIOS是不是支持usb设备启动机器。最近5年内造的机器估计都可以的,不过还是要检查一下,把usb硬盘插在机器上再开机,只要在bios启动序列里可以看到,就肯定是可以的。

然后考虑要装哪个版本的linux。我这里有mandriva,fedora(redhat的后代)和ubuntu。试了一下,前两个的安装程序有点缺陷,找不到输入启动选项的地方。所以目前只有ubuntu在我手里能装。

从光盘安装和往内置硬盘安装时差不多,当然usb硬盘是要插上的。

光盘启动,提示输入启动选项时,输入 linux expert,这样安装程序会主动搜索usb设备,然后列出内置硬盘和usb硬盘。一般来说内置的应该是/dev/sda,usb硬盘应该是/dev/sdb。

然后分区,选择把系统安装在sdb下面的分区里。bootloader最好安在sdb的主引导记录(MBR)里,在列表里就是/dev/sdb本身。其他的可选位置里,/dev/sdb1是第一个主分区,如果想让bios直接引导该硬盘,就不要往这个里面安。安在sda(内置硬盘的MBR)也可以工作,不过多此一举,而且实际上是取代了windows的主引导记录,不算是种干净的设计,设置不对的话windows就启动不了了。所以还是装sdb最好。

安装程序自动运行完毕之后,重启机器,在BIOS里把启动序列改成1. CDROM 2. USB HDD 3. internal HDD。这样在不插usb 盘的时候就像正常状态一样启动windows,在插了usb盘的时候,BIOS就直接从引导usb盘进linux,不用装任何特殊的软件,系统很简洁。

但这时候通常还是不能直接从usb硬盘引导的,系统可能提示can‘t mount partition 之类的错误信息。原因是在linux的启动镜像里并没有对USB设备的支持模块,所以虽然BIOS可以引导系统进入USB存储设备读取启动信息,但是操作系统本身并不能识别USB硬盘,导致启动中止。所以要重新制作启动镜像。

做启动镜像也就是做/boot/initrd 文件。有两个程序可以干这个,一个是mkinitrd,另一个是mkinitramfs。前者据说麻烦些,后者很好用。而且在我的ubuntu里,好像已经找不到mkinitrd了。所以就说mkinitramfs的用法:

首先还是用linux的安装盘启动系统,选择rescue system,因为这种启动下有我们需要的工具。如果是mandriva或者fedora的安装盘,需要自己把sdb1 加载(mount)到/mnt下面去,然后再用chroot把这个目录仿真成/。比如下面这个例子里,我把sdb1,就是usb盘里新装的linux的/ 分区,加载到/mnt/system,然后再chroot,这时候各个文件的路径就像在那个新linux的文件系统下工作一样:

>su

>mkdir /mnt/system

>mount /dev/sdb1 /mnt/system

>chroot /mnt/system

>cd /

在ubuntu安装盘上,有使用硬盘文件系统shell的选项,就不必做上面这步了,选那个选项,进入的shell,会直接把硬盘上的/当作根目录。

然后用mkinitramfs制作新的启动镜像文件,在这个文件里,我加载了识别usb硬盘需要的4个模块(modules):ehci-hcd, usb-storage, scsi_mod, sd_mod。

首先,用vim修改/etc/mkinitramfs/modules,把它改成如下内容:

#/etc/mkinitramfs/modules

ehci-hcd

usb-storage

scsi_mod

sd_mod

这是mkinitramfs将要加入启动镜像文件的模块列表

然后运行mkinitramfs,制作启动镜像文件:

>mkinitramfs -o /boot/initrd_usb.img /lib/modules/2.6.15-26-386

其中前面initrd_usb.img就是自己随便起的名字,其实叫别的也可以。而后面带数字的路径,是你的内核模块所在的目录,可以用ls /lib/modules/ 看看那个目录下都有什么子目录,如果不只一个,那号最大的多半是现在用的。此外/boot下的镜像文件,如果是安装系统自己生成的,也会有一样的数字。

这个程序运行完以后,在/boot下会多一个initrd_usb.img文件,这是关键的一步。下面只需要做最后一件事了:修改引导菜单。

进入/boot/grub 目录,用vim 修改menu.lst,或者先找到grub.conf,修改这个文件后再重新装grub也可以。

在menu.lst文件里记录了启动时将要使用的命令。所有#开头的语句,按linux规矩,是comment,不会被执行的。所以只看其它语句。一个启动选项看起来是这样:

tiltle Linux-xxxx #启动时显示的title

root(hd1,0) #linux系统的“/”分区。语法是,hd1是第二硬盘,hd0是第一硬盘,理论上usb应该是第二硬盘。(hd1,0)表示第二硬盘的第一主分区,具体的可以查grub的手册。

kernel /vmlinuz-xxxxxx root=/dev/sdb1 xxx xxxx xxx #内核文件, 根分区的位置,启动选项

initrd /initrd.img-xxx-xxx-xxx #启动镜像文件

boot #启动

需要做的是,把initrd语句里的initrd.img-xxx-xxx-xxx都改成initrd_usb.img。此外,注意根据不同的机器BIOS程序,在通过usb设备启动时可能会把usb硬盘报告成第一个硬盘,所以假如 root (hd1,0) 时报告can't mount的话,把这句改成root (hd0,0)试试。不过一开始不必改。在grub里,如果启动失败,你会停在grub界面上,按‘e’就可以修改启动选项,按‘c’执行。所以不用每次修改都启动机器。

改完的menu.lst里的启动项,在我的机器上是这样

tiltle Linux-xxxx

root(hd0,0) #虽然这里是第一硬盘,但是启动以后, 在/dev里,usb盘还是sdb,而内置盘是sda,所以下一句的root=/dev/sdb1并不需要改

kernel /vmlinuz-xxxxxx root=/dev/sdb1 xxx xxxx xxx

initrd /initrd_usb.img

boot

然后启动试试。正常情况下,usb硬盘就像liveCD一样,启动前只要插上就可以引导系统进linux,而不插它,系统就进windows,很方便。

简单归纳一下步骤:

1. 光盘安装时,输入linux expert来指导安装程序找到usb硬盘。bootloader装在usb硬盘的MBR上。

2. 用mkinitramfs或者mkinitrd制作启动镜像文件,使得镜像文件里有4个模块:ehci-hcd, usb-storage, scsi_mod, sd_mod

mkinitramfs比较好用,只要先/etc/mkinitramfs/modules文件改成下面这样:

#/etc/mkinitramfs/modules

ehci-hcd

usb-storage

scsi_mod

sd_mod

然后运行

>mkinitramfs -o /boot/initrd_usb.img /lib/modules/2.6.xx-xx-386

3. 修改menu.lst

把initrd一句,指向新做的镜像文件:

initrd /initrd_usb.img

把root一句,指向BIOS向启动程序报告的linux所在硬盘的设备(需要试验):

root(hd0,0)

在BIOS里把usb硬盘加进启动序列,试试成功了没有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值