红联Linux门户
Linux帮助

把ubuntu安装至移动硬盘、并可在不同电脑上启动、运行的方法

发布时间:2006-11-15 15:46:50来源:红联作者:sindex
本文将描述两种方案:

一、使移动硬盘具有和live cd一样的功能,可通过usb接口启动,运行,安装至主机内置硬盘,当然前提是电脑支持usb启动。

二、使移动硬盘具有类似live cd的功能,可通过usb接口启动、运行;与live cd不同的是,对此系统所作的修改将会保存下来,而不会像live cd那样一重启就恢复原状。

两种方案对各种不同版本的ubuntu live cd应该都适用。我是用hiweed 1.0做的试验,所以就以它为例来描述了。向hiweed致敬。


第一种方案实现起来比较简单:

首先,将live cd中的casper文件夹拷至移动硬盘某fat32分区(ext2或ext3或reiserfs分区亦可)。

然后,将grub安装至移动硬盘。启动一个linux系统,接上移动硬盘,一般会自动识别出来。假设其中某分区(除了ntfs任一分区均可)的路径为/media/usbdisk,假设移动硬盘为/dev/sda(注意如果主机中有sata硬盘,可能会变成/dev/sdb),运行以下命令:

引用:
sudo grub-install --root-directory=/media/usbdisk /dev/sda


在/media/usbdisk/boot/grub/目录下建立grub配置文件menu.lst,添加如下内容(其中的*号请根据自己的情况换成合适的数字):

引用:
timeout 6
default 0
fallback 1

title live cd
root (hd0,*)
kernel /casper/vmlinuz boot=casper ramdisk_size=1048576 root=/dev/ram rw splash
initrd /casper/initrd.gz

title live cd xforcevesa
root (hd0,*)
kernel /casper/vmlinuz boot=casper xforcevesa ramdisk_size=1048576 root=/dev/ram rw splash
initrd /casper/initrd.gz


这样就好了。
文章评论

共有 3 条评论

  1. liuqun67 于 2007-09-08 23:35:30发表:

    :0L

  2. sindex 于 2006-11-15 15:48:18发表:

    涉及到的几个问题:

    1、与上一帖的区别

    前面我曾发过类似的一帖,说的也是制作移动硬盘系统,但方法略有不同。那次是先把系统安装好,配置好,装好需要的软件,然后拷到移动硬盘上,并对initrd加以改造,以实现检测硬件的功能。这就涉及到一个问题:在一台计算机上安装好的linux,要移到另外一台不同配置的机子上运行,到底有哪些东西需要重新配置?解决好这个问题需要对linux系统有深入的了解,我功力不济,还请各位高手指导。

    而这次是直接取用了live cd中的系统,因为live cd设计的初衷就是要在不同的机子上都能运行,所以上面的问题已经由live cd的设计者解决了。但又面临另一个问题:限于live cd的光盘发行形式,live cd中的系统在功能上,比起正常安装的系统,可能会有缺陷。因为它毕竟不是为日常使用而设计的。比如说,live cd无法添加删除软件,自然用不到apt,那它里面的apt功能会不会没有配置好呢??……

    当然也说不定两种方法压根就没什么本质区别,只是我想的太多 实际中我都试了,都能用。但一方面用的时间还不长,另一方面试验过机子也不多,所以不能完全说明问题,所以还得靠大家多多实践,共同研究。

    2、usb接口速度问题

    主要表现在启动初期,GRUB把内核和initrd文件往内存里拷贝时,在某些机子上速度奇慢,多见于VIA芯片组平台。这个问题倒可以通过缩减intird文件的体积来缓解,ubuntu的initrd文件有6、7M,而knoppix的只有不到1M。但也只是缓解,不能根治,因为还有内核呢,1M多,很难再小了。
    启动之后用起来,只要是USB 2.0的接口,速度都可以接受。当然usb 1.1就很成问题了。

    3、不支持usb启动的电脑怎么办?

    有一个办法,就是麻烦点。不支持usb启动的机子肯定比较老,usb接口多是1.1版的,所以建议先添加一块usb 2.0扩展卡。然后把内核和initrd文件刻到一张启动盘上,通过光驱来启动移动硬盘上的系统。这个办法也可用来解决第2个问题。

    4、ati显卡驱动问题

    这也是传统问题了。ati显卡运行X时总是问题多多。不行的话可以试试VESA模式。再不行就试试把用户目录里记录屏幕分辨率的那个文件删掉。

    5、windows可以这样搞吗?

    一如既往:sorry,you can't 。众所周知,微软的理念是,用户购买一份windows,默认的,就只能在固定的一台计算机上使用,在第二台上用就算盗版了。摆明了逼着你再买一套。所以它不会愿意用户把系统装在移动硬盘上到处使,并且技术上也有限制:1,windows不能装在移动硬盘上,安装时你可以看见移动硬盘的盘符,但如果选了在上面安装就会出错,无法进行下去;2,win系统与硬件紧密结合,这台机子上装的winxp,拿到另一台去用,多半要蓝屏。

    而我们可爱的linux自然没有这些限制,我觉得做这样的移动系统天生就是linux的活。想象一下,我们可以在移动硬盘里装上自己喜欢的系统,随身携带,走到哪里就用到哪里,比笔记本可轻多了 :) 当然免不了得用别人的电脑 甚至手头紧的朋友可以先不买电脑了,买块移动硬盘,装上系统,用别人的机子,哈哈──我无耻我HAPPY……至于以后e-sata接口的移动硬盘普及起来,速度会更快,用起来会更稳定!无限憧憬中……

  3. sindex 于 2006-11-15 15:47:39发表:

    第二种方案:

    大致过程是,将live cd上的系统复制到移动硬盘,并修改相关脚本,使之适应移动硬盘环境。具体操作分4步:


    第1步:复制live cd系统。

    按您的需要给移动硬盘分区,其中预备一个根分区,2G左右,若还想添加软件就分大点;一个swap区,256M以上。根分区文件系统可以是ext2或ext3或reiserfs。

    运行hiweed 1.0 live cd,此时系统/rofs目录下挂载的就是live cd中内置的ubuntu系统,将其复制到移动硬盘上预备的根分区中(假设其路径为/media/usbdisk/):

    引用:
    sudo cp -a /rofs/* /media/usbdisk/


    第2步:定制initrd文件

    附件里有一个做好的,针对hiweed1.0,大家可以直接拿来用 :)

    这一步比较长,为了整个帖子看起来简洁一些,这步的详细描述也放在附件里了。

    从附件里解出 initrd.hiweed1.0-m 文件,拷到移动硬盘系统的 /boot 目录下。


    第3步:为移动硬盘安装GRUB。

    仍然假设此时 移动硬盘系统的根分区 的路径为/media/usbdisk,并假设移动硬盘为/dev/sda(注意如果主机中有sata硬盘,可能会变成/dev/sdb),运行以下命令将grub安装到移动硬盘上:

    引用:
    sudo grub-install --root-directory=/media/usbdisk /dev/sda


    然后在/media/usbdisk/boot/grub/目录下建立grub配置文件menu.lst,添加如下内容(其中的*号请根据自己的情况换成合适的数字):

    引用:
    timeout 6
    default 0
    fallback 1

    title mobile ubuntu
    kernel (hd0,*)/boot/vmlinuz-2.6.15-23-386 boot=casper ramdisk_size=1048576 root=/dev/ram rw splash debian-installer/locale=zh_CN
    initrd (hd0,*)/boot/initrd.hiweed1.0-m

    title mobile ubuntu xforcevesa
    kernel (hd0,*)/boot/vmlinuz-2.6.15-23-386 boot=casper xforcevesa ramdisk_size=1048576 root=/dev/ram rw splash debian-installer/locale=zh_CN
    initrd (hd0,*)/boot/initrd.hiweed1.0-m


    第二个是强制VESA模式,如果前一个不能正常启动,可以试试它。


    第4步:创建记号文件

    在移动硬盘系统的根分区下创建一个文件,命名为hiweed1.0,用来标记系统分区。

    这一步万不可少,否则就不灵了呵呵

    OK,现在算是正式完工了!重启电脑进入BIOS设成从移动硬盘启动,试试能行不?