在U盘上安装Linux
上回受Shell.E.Xu同学的盅惑,决定往U盘上装个Linux,以便不时之需。考虑到维护的方便性,还是使用Debian的好。于是就去debian.org搞了个base system的iso
最初猜想着也就直接复制debian / 到U盘就行了,但是看到xiooli同学的joolix os是用slax的那套脚本搞的,于是又去看slax。
最后决定直接请教Shell.E.Xu同学。
Shell.E.Xu的说话风格颇像北斗星君同学…之间还被他训斥了几句,被鄙视了,5555
好了,下面是无废话安装Linux到U盘的过程,你需要根据自己的情况修改:
- 安装VirtualBox,挂载debian iso,安装debian (理论上可以直接安装到Udisk,因为我之前有debian在Box里面,所以就使用现成的debian了)
- 把debian折腾好。
- 将你的U-disk格式化成ext2。
- 将U-disk挂载到VirtualBox中的Debian,比如我挂载到/media/sneak
- 除了/sys, /media, /proc, /tmp, /dev,将debian的其他目录复制/media/sneak下,使用cp -a
- mkdir /media/sneak/[proc, sys, media, tmp, dev],建立没复制的目录。
- chmod +t /media/sneak/tmp
由于我的debian下缺几个程序,又懒得装,所以我下面的操作是在我的gentoo Host下完成的:
- 为了方便,使用e2label /dev/sdb1 sneak,把我的U盘加个Label,叫sneak
- 挂载到/media/sneak
- 修改文件 vim /media/sneak/boot/grub/device.map,
(hd0) /dev/sdb
其中sdb就是在我的系统中,U盘的设备名字 - 执行:
# mount -t proc none /media/sneak/proc/ # mount -o bind /dev /media/sneak/dev/ # chroot /media/sneak/
注意:下面的操作都在chroot里!平时需要维护U-disk的Linux时我也在chroot下进行de 。
- 安装grub到Udisk,执行:
# /usr/sbin/grub-install /dev/sdb
根据提示判断是否将grub安装成功,如果不成功,根据提示解决 - 修改/etc/fstab,比如我的:
LABEL=sneak / ext2 defaults 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 proc /proc proc defaults 0 0
可以看到第一步中设置Label的作用在此,否则回头插到别的机器鬼才知道会变成第几个sd/hd呢,当然了,也可以使用blkid -s UUID,随便你
- 修改/boot/grub/menu.lst,下面是我的部分内容:
title Debian GNU/Linux, kernel 2.6.26-1-686 root (hd0,0) kernel /boot/vmlinuz-2.6.26-1-686 root=LABEL=sneak initrd /boot/initrd.img-2.6.26-1-686
- 好了,现在umount,然后可以在真机上测试一下了(不知道怎么在VBox里面测试)
如果不出意外的话,就进入U盘中的debian了。
如果出意外的话—比如我—就遇到了两种意外:
- 进入了grub,但是无法加载内核:检测你的grub menu.list,root那儿有没有错
- 进入了grub,加载了内核,但是最后到了busybox:检查你的grub menu.list,kernel的root属性有没有错,再检查你的/etc/fstab有没有错。
如果连grub都没进去,检查BIOS设置有没有错。
感想:用惯了gentoo,现在Udisk里的debian安装软件怎一个简单了得,apt真是新手福音啊~~
不过,我还是喜欢gentoo,真是变态。
———[Update 12th April 2009]——————————————————-
可以用VirtualBox测试。只要使用建立一个到USB设备的raw disk,然后当成硬盘间接启动即可(推荐使用):
# VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/VDI/UsbDisk.vmdk -rawdisk /dev/sdb -register
然后选择UsbDisk.vmdk作为第一磁盘控制器即可。
