分页: 1 / 59

【2008.09.30更新2楼】把 ubuntu linux 装入移动硬盘,并在不同电脑上运行

发表于 : 2006-11-01 19:30
ptptptptptpt
移动硬盘安装 linux 的可行性及应用前景分析

1 概念

顾名思义,就是将 linux 系统安装到移动硬盘,并且能在多台不同的电脑上运行 —— 移动硬盘就是要移动着用嘛。不妨称之为 portable-linux 或 mobile-linux ,或者别的什么名字?

2 用途

我想到以下几点——
救急:电脑原来的系统因病毒或其它原因不能正常启动,而又急需里面的资料,这时便可用移动硬盘启动,拷出资料;
便携:今社会电脑随处可见,随身带个移动硬盘,不管走到哪里,随便找台电脑插上就能用,再轻薄的笔记本恐怕也不如这方便,因为硬盘只是电脑的一个配件,电脑做的再小,硬盘永远更小
健壮:电脑出现硬件故障时,拔下移动硬盘,插到另一台机子上便能继续工作;
安全:所有数据都保存在移动硬盘里,电脑上不会留下任何痕迹,真正实现公用电脑、私人数据;
节省:公用电脑无需再买内置硬盘,公司也可以不必为员工配笔记本,每人一块移动硬盘,就能移动办公。

3 为什么不是 portable-windows ?

首先是版权问题。微软规定,用户购买一份 windows ,就只能装在一台电脑上,在第二台电脑上用就算盗版了。
其次是技术问题。我曾尝试把 winXP 装到移动硬盘,到“选择安装分区”时,若选了移动硬盘,就会报错,无法继续。24楼 kumat 网友提供了一个链接: http://www.ngine.de/index.jsp?pageid=4176 ,文中给出一种方法——通过修改安装文件把 XP 强行装进移动硬盘,或许可行。但即使安装成功,也只能在一台机子上使用,因为:1.不同的机子需要不同的驱动,2. windows 系统记录有硬件信息,一旦发现换了机器,就会蓝屏。
毫无疑问,微软有能力作出可移动的 windows —— 技术不是问题,问题在于观念,而观念又取决于利益。说不定哪一天真的会出现 portable-windows —— 只要符合微软的利益。甚至说不定哪一天微软也开源了,谁知道呢 ^_^

4 portable-linux 的可行性

既然目前 windows 很难移动起来,那么 linux 又如何呢?
作为自由软件,linux自然不存在版权问题,我们只需要考虑技术。很幸运,得益于世界各地伟大的热心的程序员们的无私奉献,portable-linux 这一设想是完全可以实现的!

其实早在2004年8月,法国计算机外设厂商 LaCie 公司就推出了装有 Mandrake Linux 操作系统的移动硬盘,但似乎没能流行;2005年北京博威特公司推出的“一盘通”产品,则是在移动硬盘上安装了 UBUNTU LINUX ;2006年中,华旗资讯(爱国者aigo)也推出了装有 rays linux(华镭)的移动硬盘;今年初,Mandriva 又发布了预装 Linux 软件包“U盘”产品,大受欢迎。

那么,其它 linux 发行版是不是也能移动起来呢??我想可以。
所有 linux 启动过程都是类似的:开机后运行一个引导器(grub、lilo、syslinux 等),将 内核 和 initrd(如果有的话)载入内存;内核取得控制后,设法找到 根文件系统,运行其中的 init ,系统就启动起来了。
同样,移动硬盘中的 linux 只要实现了上述过程,也能启动。事实上不难做到:只要主板支持 USB-HDD 启动,就能从移动硬盘运行引导器,进而加载 内核 和 initrd ;根分区则可通过 UUID 来指定,而无需挂念移动硬盘到底是 sda 还是 sdb 。

另外,为了适应不同机器,需要有自动检测、配置硬件的功能。用惯 windows 的朋友可能会觉得这是个 big problem ,因为很多时候在以易用性著称的 windows 下安装驱动都不是一件简单的事情,更不要说 linux 了。其实这是一个错误印象,实际情况恰恰相反,对于日常使用的大部分硬件,linux 都能自动识别、自动驱动,无需用户干预。可能对于最新的、不常见的硬件,linux 支持稍微差些 ── 主要是因为一些厂商不重视 linux 驱动开发。不过随着 linux 日益流行,情况在不断好转。
通常要考虑的也就是显卡。xorg 内置的开源驱动和 vesa 驱动,可以保证绝大多数电脑进入窗口界面,自动检测也很容易实现。要想获得更好的性能(如 运行3D桌面),就得用厂商提供的闭源驱动,要麻烦一些。

内核方面,性能不是最重要的,最重要的是兼容性,要保证能够在大多数电脑上启动起来。
至于接口速度,根本不用担心 —— USB2.0 移动硬盘通常都能达到 20M/S 以上,系统完全可以流畅运行。日后 e-sata 普及起来,速度更加不是问题。

5 一切才刚刚开始

我一直关注 linux 在移动硬盘上的应用,一个重要原因:这是 windows 目前无法作到的。必须承认,在桌面应用领域,windows 很多方面都胜过 linux,然而它无法用在移动硬盘上,这就有了 linux 发挥的空间。
想象一下,有一天内置硬盘不再是电脑标配,人手一块移动硬盘,不管走到哪里,都能用上自己的系统……

一个新的时代 :-)

发表于 : 2006-11-01 19:31
ptptptptptpt
做一个 portable-ubuntu

注1:本文内容适用于 ubuntu 8.04.1 ,部分内容适用于其它版本 ubuntu 和其它 linux 发行版 。
注2:另一种移动 ubuntu 方案见这里: viewtopic.php?t=113953&highlight=
注3:本文面向新手,力求稳妥、易操作。若明白原理,则不必拘泥。

准备:一台装有 winxp 的、支持 usb 启动的电脑。

一、将 ubuntu 装进移动硬盘

下载 ubuntu-8.04.1-desktop-i386.iso 。我是从这里下的: http://tw.releases.ubuntu.com/8.04/ubun ... p-i386.iso

将 ubuntu-8.04.1-desktop-i386.iso 解压至某 fat32 分区根目录(在我的电脑上,ntfs 分区也能成功,但毕竟 ntfs 是微软私有的文件系统,所以不推荐)。
确保 各分区 根目录下没有 menu.lst 文件(有的话请改名或删除),否则有可能影响 ubuntu 启动 —— 这是 wubi 有待改进的一处小 bug 。
双击运行 umenu.exe ,选择 演示和完全安装,选中 帮我从 CD 启动 ,点击 完成,出现 设置 CD 启动器,点击 下一步 ,将自动配置启动文件,按提示重启,当出现系统选择菜单时选择 ubuntu ,即可进入 live cd 系统。
若不能正常启动,则在屏幕左上角出现“ Press `ESC' to enter the menu ”时,按 esc 键,进入启动菜单(此时可能乱码,是个小 bug ,不必担心),选择 第二项 或 第三项 或 第四项 试试。

进入 live cd 系统后,接上移动硬盘,双击桌面上的 安装 ,按提示进行(可参考这个帖子 viewtopic.php?t=115542 )。分区时选择移动硬盘。
注意!
1.不要给 /boot 单独分区。
2.据 liangqian 同学的经验,“宜将 UBUNTU 安装于移动硬盘的最前边,这样兼容性好些,能让那些有引导长度限制的机器仍然能够顺利启动。” 详见 778 ~ 782 楼。
3.到最后一步“准备安装”界面时,点右下方的“高级”按钮,出现“高级选项”对话框,把“安装启动加载器”前的勾去掉。这样做是考虑到很多人不熟悉 grub ,万一操作失误,没准连 windows 都进不了,对幼小的心灵造成莫大伤害,可就罪过了。


安装完成后会问 是否重启 ,这时先不要重启,打开刚安装的系统的根分区,打开 /etc/fstab ,内容类似下面

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sdc5
UUID=30b754f9-4be7-4e13-9776-8177b71bdfaa / reiserfs notail,relatime 0 1

# /dev/sdc6
UUID=ca7e22d7-c8b7-4ca4-8e4f-a7c038917e0e none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

注意红色部分, 30b754f9-4be7-4e13-9776-8177b71bdfaa 即根分区的 UUID ,sdc5 说明根分区是第 5 分区,记下这些信息,后面会用到。


其它安装方法(供参考):
★ 借用虚拟机装在物理硬盘上: viewtopic.php?t=121329
★ 安装 ubuntu 到内置硬盘(可以把移动硬盘芯拆出来,通过转接口挂到台式机上作为内置硬盘),注意要装上 grub ,然后把内置硬盘拆下来做成移动硬盘。这样可以略过后面第2步,直接进行第3步。
★ 刻盘,拆掉内置硬盘,只接移动硬盘和光驱,用光盘直接把系统安装到移动硬盘,注意要装上 grub 。这样可以略过后面第二步,直接进行第三步。
★ 将已经安装配置好的系统拷贝到移动硬盘。最好另外启动一个 linux(如各种 LIVE CD)来拷贝目标系统,这样可以避免很多麻烦。命令示例:sudo cp -a /mnt/hda7/* /mnt/sda6/


二、设置启动

也就是把移动硬盘做成启动盘,而且是 USB-HDD 模式的、可以启动到 GRUB 环境的启动盘。这其中方法很多,问题也很多,不同电脑 USB 启动成功率各异,您可以去“无忧启动论坛 >> 启动盘制作技术区 >> USB启动区”看一看。本文仅给出一种方法,成与不成看人品。

下载本楼附件,解压。在 Windows xp 下,运行附件中 grubinst-1.1-bin-w32-2008-01-01 目录下的 grubinst_gui.exe ,在“磁盘”处选中移动硬盘,点击“安装”即可。

用记事本打开 menu.lst ,将所有“xxxxxxxxxxxxxxxxxxxx”换成前面记下的根分区的 UUID ;把每一行 root (hd0,x) 中的 x 换成 根分区序号减1(比如,我的根分区是第 5 分区,则 x 应该换成 4 );如果您装的是 8.04.1,需将所有 2.6.24-16 改成 2.6.24-19 ,8.04 则不必改 。

将 grldr 和 menu.lst 复制到移动硬盘某分区根目录(保险起见可以往每个分区都复制一份),分区格式可以是 fat16 或 fat12 或 fat32 或 ntfs 或 ext2 或 ext3 。

OK,重启计算机,从移动硬盘启动,可以看到 ubuntu 启动菜单,其各项含义如下:

1 标准模式启动
2 用 ACPI 临时解决方案启动(仅当您出现 ACPI 问题时)
3 用安全图形模式启动(仅当您出现显示问题时)
4 单用户启动(修复某些系统故障时)
5 内存测试

默认启动第一项,若不能正常启动,试试其它的。

启动后,进行第三步。


三、为移动使用做准备

注:8.04以来,很多朋友反映,这一步不做似乎也可以。这得益于 linux 越来越强的硬件适应能力。然而,我还是坚持做这一步,因为它在官方 live cd 中仍旧存在,我相信 ubuntu 开发组保留它肯定是有理由的。

1. 安装两个软件以增强硬件检测能力。设置好源,连上网络,运行命令:

代码: 全选

sudo apt-get update 
sudo apt-get install discover1 xresprobe 
2. 将附件中 S03xconfig.sh 复制到 /etc/rc2.d/ 并修改其权限使“可执行” (假设 S03xconfig.sh 存放在 /xxx/ 目录下):

代码: 全选

sudo cp /xxx/S03xconfig.sh /etc/rc2.d/ 
sudo chmod +x /etc/rc2.d/S03xconfig.sh 
这是一个自动配置 X 的脚本,功能比较简陋,只是尽量保证能启动到图形界面。ubuntu 系统中有个“硬件驱动”程序,可以从源中检索、安装硬件驱动,将它加以改进,再配合预先下载的驱动程序包,应该能实现开机自动检测、安装闭源显卡驱动,获得更好的显示性能。这个工作目前没时间做,有兴趣的朋友可以试试。


OK,移动ubuntu 就做好了,到处去试试吧 :)


最后提醒一下:升级内核后须手动修改 menu.lst 中的 kernel 、initrd 项,新内核方可生效。

发表于 : 2006-11-01 19:33
ptptptptptpt
怎样在不支持 usb 启动的电脑上启动本系统?

原理:只要设法将 内核 和 initrd 加载到内存,就会自动搜索根分区并启动系统。

方法1:需装有 XP/2000/2003 。
将 menu.lst 中所有“xxxxxxxxxxxxxxxxxxxx”换成前面记下的根分区的 UUID ,将所有 (hd0,x) 行删除。
将 menu.lst 和 根分区中的boot文件夹 复制到主机硬盘某 fat32 或 ntfs 分区。
将 grldr 复制到 C 盘;调整“文件夹选项”使显示 系统文件 和 隐藏文件,应看到 C 盘有个 boot.ini 文件,修改其属性,去掉“只读”;打开它,添一句 c:\grldr = GRUB4DOS ,可酌情修改 timeout ,示例如下:

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
c:\grldr = GRUB4DOS

保存后重启,选择 GRUB4DOS 即可。

方法2:做一张启动光盘,把 内核 和 initrd文件 刻进去,从光驱启动。原理类似,不再赘述。

发表于 : 2006-11-03 18:33
ptptptptptpt
相关链接

最初的做法: viewtopic.php?t=25089&highlight=
移动硬盘启动 ubuntu live cd: viewtopic.php?t=41781&highlight=
GRUB4DOS 的 WIKI: http://grub4dos.sourceforge.net/wiki/in ... /Main_Page
GRUB4DOS 相关讨论: http://bbs.znpc.net/forumdisplay.php?fid=4

发表于 : 2006-11-03 21:13
ericzhuo
楼主的想法很妙。这确实是Linux比Windows强的地方。有无限的可定制性。建议楼主再接再厉,研究一下如何用ntfs-3g模块,让系统可以跑在ntfs分区上。

发表于 : 2006-11-03 21:46
arbor
楼主的想法很好,我喜欢

请问这样需要移动硬盘多大空间?U盘应该也可以了?只要容量够?

是否带图形界面?

如果带的话,能否去掉,只用字符界面?但是一定要网卡驱动特别是8139的。

最小能多到多大?

非常感谢!

发表于 : 2006-11-03 23:05
gnix_oag
用我的方法,完全可以从usb硬盘启动,
只要安装一个grub ,再设置一下menu.lst 文件就行了,
viewtopic.php?t=26167&highlight=
这样移动硬盘就只要2G就行了,
一个光盘+交换分区文件共1G,
其余1G用来保存数据,

楼主没有必要制作两个initrd文件,可用一个文件测试是不是第一次启动

把run_scripts /scripts/casper-premount 改为

代码: 全选

if [ ! -e $rootmnt/etc/fist ]; then 
   touch  $rootmnt/etc/fist
   run_scripts /scripts/casper-premount
fi

if [ -e $rootmnt/etc/fist ]; then 
   run_scripts /scripts/poasfpoa
fi

发表于 : 2006-11-05 15:16
ptptptptptpt
to ericzhuo:不大乐观在NTFS上运行,ntfs-3g是挺不错,而且HIWEED1.0里已经加上了,用上面的方法启动起来就能读写NTFS分区。只是毕竟不是“官方”支持,而且LINUX自己的分区格式也挺好嘛。要是为了和WINDOWS交换数据的话,可以用FAT32,大家都支持 :)

TO arbor:带图形界面。第一种方案用1G即可,750M存CASPER文件夹,250M的交换分区。如果机子内存大,250M的交换分区也可以省了。第二种大约2G,根分区1.8G差不多。用U盘做的话是有点辛苦。要想小的话,可以试试DSL,一个美国人基于KNOPPIX做的,只有几十兆。

TO gnix_oag:“没有必要制作两个initrd文件,可用一个文件测试是不是第一次启动 ”GOOD IDEA !

发表于 : 2006-11-11 13:50
superiori
顶一下,我觉得这个方法挺不错。用edgy模仿着做了一下 :D 不过没有找到相应弹出光盘的代码

发表于 : 2006-11-12 1:47
superiori
上传一个适用于ubuntu-6.10-desktop-i386.iso的initrd文件,完全仿照楼主做的。没有去掉弹出光驱的代码,不过影响不大。第4步的记号文件名是ubuntu6.10。

发表于 : 2006-11-13 7:50
xly1121
真是高手,现在还没有这个能力弄,等炼熟了一定试一试。

发表于 : 2006-11-13 17:19
ptptptptptpt
多谢superiori支持 :wink:

发表于 : 2006-11-15 20:50
ttrrff
您所说的附件在哪儿啊?我怎么找不到!

发表于 : 2006-11-15 21:11
ttrrff
原来回复了就看到了,哈哈!谢谢

发表于 : 2006-11-16 8:30
wucongkun
这个。。。我试过了
6.10的有点问题
解开initrd
居然没有发现lib/casper/shutdown脚本!!
6.06官方的版本里面有这个么?
或者这个脚本仅仅是dubuntu的独创?
希望楼主指导
我想让6.10移动起来
该怎么做?
和你的一样做,仅仅是忽略不管这个shutdown脚本的问题?
手头没有移动硬盘 没有测试过。
对了 wiki里面的东西还适用么?
5.10到6.10 很多目录都变了吧。。
6.10的启动过程都改了。。
疑问中。