1 概念
顾名思义,就是将 linux 系统安装到移动硬盘,并且能在多台不同的电脑上运行 —— 移动硬盘就是要移动着用嘛。不妨称之为 portable-linux 或 mobile-linux ,或者别的什么名字?
2 用途
我想到以下几点——
救急:电脑原来的系统因病毒或其它原因不能正常启动,而又急需里面的资料,这时便可用移动硬盘启动,拷出资料;
便携:今社会电脑随处可见,随身带个移动硬盘,不管走到哪里,随便找台电脑插上就能用,再轻薄的笔记本恐怕也不如这方便,因为硬盘只是电脑的一个配件,电脑做的再小,硬盘永远更小
more..
less.. 健壮:电脑出现硬件故障时,拔下移动硬盘,插到另一台机子上便能继续工作;
安全:所有数据都保存在移动硬盘里,电脑上不会留下任何痕迹,真正实现公用电脑、私人数据;
节省:公用电脑无需再买内置硬盘,公司也可以不必为员工配笔记本,每人一块移动硬盘,就能移动办公。
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 的朋友可能会觉得这是个 bigproblem ,因为很多时候在以易用性著称的 windows 下安装驱动都不是一件简单的事情,更不要说 linux了。其实这是一个错误印象,实际情况恰恰相反,对于日常使用的大部分硬件,linux都能自动识别、自动驱动,无需用户干预。可能对于最新的、不常见的硬件,linux 支持稍微差些 ── 主要是因为一些厂商不重视 linux驱动开发。不过随着 linux 日益流行,情况在不断好转。
通常要考虑的也就是显卡。xorg 内置的开源驱动和 vesa 驱动,可以保证绝大多数电脑进入窗口界面,自动检测也很容易实现。要想获得更好的性能(如 运行3D桌面),就得用厂商提供的闭源驱动,要麻烦一些。
内核方面,性能不是最重要的,最重要的是兼容性,要保证能够在大多数电脑上启动起来。
至于接口速度,根本不用担心 —— USB2.0 移动硬盘通常都能达到 20M/S 以上,系统完全可以流畅运行。日后 e-sata 普及起来,速度更加不是问题。
5 一切才刚刚开始
我一直关注 linux 在移动硬盘上的应用,一个重要原因:这是 windows 目前无法作到的。必须承认,在桌面应用领域,windows 很多方面都胜过 linux,然而它无法用在移动硬盘上,这就有了 linux 发挥的空间。
想象一下,有一天内置硬盘不再是电脑标配,人手一块移动硬盘,不管走到哪里,都能用上自己的系统……
一个新的时代 Smile
做一个 portable-Ubuntu
本文内容适用于 ubuntu 7.04 ,部分内容适用于其它 LINUX 。
1.将 ubuntu 装进移动硬盘
方法很多,可自行选择。提供几个参考:
方法1:安装 ubuntu 到内置硬盘,然后把内置硬盘拆下来做成移动硬盘。这样可以略过后面第2、3步,直接进行第4步。但若做了2、3步,可获得更好的兼容性。
方法2:直接安装到移动硬盘。这种方法有可能遇到 GRUB 问题,不熟悉的朋友最好先学习下 GRUB 教程。
方法3:将已经安装配置好的系统拷贝到移动硬盘。最好另外启动一个 linux(如各种 LIVE CD)来拷贝目标系统,这样可以避免很多麻烦。命令示例:sudo cp -a /mnt/hda7/* /mnt/sda6/
2.将 GRUB4DOS 引导代码写入移动硬盘MBR
经验表明,GRUB4DOS 比 GNU GRUB 0.97 兼容性要好些,所以选用它作为引导器。
方法1:Windows 2k/xp/2003 下,运行附件中 grubutil-1.1-bin-w32-9 目录下的grubinst_gui.exe,在“磁盘”处选中移动硬盘,在“选项”区选中“不保存原来的mbr”、“不引导原来的mbr”、“启动时不搜索软盘”,点击“安装”即可。
方法2:LINUX 下,假设移动硬盘为 /dev/sda(注意:某些情况下,比如主机内接有 sata 硬盘,移动硬盘就不一定是 sda了),进入 bootlace.com 所在目录,运行命令 sudo ./bootlace.com /dev/sda 即可。
3.配置 GRUB4DOS
在移动硬盘上找一个或新建一个 fat16/fat32/ext2/ext3 分区,将附件中的 grldr 拷至其根目录, 并在同一目录下建立 menu.lst 文件,内容如下:
代码:
timeout 6
default 0
title Ubuntu, kernel 2.6.17-10-generic
find –set-root /boot/vmlinuz-2.6.17-10-generic
kernel /boot/vmlinuz-2.6.17-10-generic root=UUID=xxxxxxxxxxxxxxxxxxxx ro splash
initrd /boot/initrd.img-2.6.17-10-generic
boot
其中,“xxxxxxxxxxxxxxxxxxxx”需换成根分区 UUID 。查看各分区UUID的命令:ls -l /dev/disk/by-uuid
4.硬件自动检测
将附件中 S03xconfig.sh 复制到 /etc/rc2.d/ ,并修改其权限使“允许作为可执行文件执行” —— 这个用来配置 X 。至此,移动硬盘系统已经可以在不同机子上运行了。
再安装两个软件以增强硬件检测能力:启动移动硬盘系统,设置好源,连上网络,运行命令
代码:
apt-get update
apt-get install discover1 xresprobe
搞定。
怎样在不支持 usb 启动的电脑上启动本系统?
原理:只要设法将 内核 和 initrd 加载到内存,就会自动搜索根分区并启动系统。
方法1:需装有 XP/2000/2003 。将 menu.lst 和 根分区中的boot文件夹 复制到主机硬盘某 FAT32 分区。将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文件 刻进去,从光驱启动。原理类似,不再赘述。