硬件要求:8G或以上的u盘,服务器支持从u盘启动。
原理及难点:
centos6.2的dvd文件非常大,超过4G,fat32文件系统不支持4G以上文件;而用于引导linux的文件系统恰恰就是fat32格式。
将u盘分成两个区,一个用于启动linux,为fat32文件系统;一个用于存放安装文件,为ext2文件系统。
这一制作过程需要在linux环境下制作。没有linux环境的朋友只有先用虚拟机安装一个linux系统。这一过程会碰到的问题主要有:guest上网、安装vmware tool、host和guest文件共享、guest访问host中的u盘。还有在制作过程中可能会碰到某些命令找不到,这需要用yum安装一些包。如:mkfs.vfat目录需要yum install dosfstools,还有syslinux等。
过程:
1、检查当前磁盘情况(在虚拟中需先挂载U盘,点击虚拟机右下角u盘图标,connect)
fdisk -l
u盘通常为/dev/sdb
2、分区
fdisk /dev/sdb
d # delete existing partition - repeat as necessary
n # new partition
p # primary
1 # partition number
<enter> # take the default
+100m # add 100 MB
t # change the type
1 # partition number
b # VFAT
n # new partition
p # primary
2 # partition number
<enter> # take the default
<enter> # take the default
a # toggle bootable flag
1 # partition number
w # write to disk
3、格式化
mkfs.vfat -n BOOT /dev/sdb1
mkfs.ext2 -m 0 -b 4096 -L DATA /dev/sdb2
4、重新拔插u盘
5、挂载u盘
mkdir /media/BOOT
mount /dev/sdb1 /media/BOOT
mkdir /media/DATA
mount /dev/sdb2 /media/DATA
6、将iso文件拷贝到u盘的/dev/sdb2分区。拷贝的时间比较长,需要半个小时,也可能要一个小时。be patient。拷贝之后可以做sha1sum校验,不过一般没有问题,这里就省了。除了拷贝iso文件外,还要拷贝dvd1.iso的image文件夹,这一点官网的文档没有提到,也许centos5.x的不用吧。
cd /dir/of/iso/images #进入iso所在文件夹
for i in 1 2; do cp -v CentOS-6.2-x86_64-bin-DVD${i}.iso /media/DATA/; sync; done
mkdir /tmp/cdimage
mount -ro loop CentOS-6.2-x86_64-bin-DVD1.iso /tmp/cdimage
cp -rv /tmp/cdimage/images /media/DATA
umount /media/DATA
7、用syslinux在u盘的/dev/sdb1分区制作linux启动盘。如果没有安装syslinux,那么yum install syslinux。
syslinux --stupid /dev/sdb1
dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
cd /media/BOOT
cp -rv /tmp/cdimage/isolinux syslinux
mv syslinux/isolinux.cfg syslinux/syslinux.cfg
rm -f syslinux/isolinux.bin
umount /tmp/cdimage
8、修改syslinux.cfg,在append语句后面加上 method=hd:sda2:/
vi syslinux/syslinux.cfg
#内容片段start
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append method=hd:sda2:/ initrd=initrd.img
#内容片段end
umount /media/BOOT
9、终于制作完成了,去试试吧。从此不用光驱安装linux,舒服!
另:买了一个16G的u盘,被这么折腾一下,只能用来装linux了,可是还将近10G的空间浪费掉了,这不是大材小用嘛。想了一下,由于windows只认第一个分区,于是u盘分成三个区,sdb1, 8G 自由分区; sdb2, 100M, 启动分区; sdb3, 8G, iso数据分区,这样就物尽其用了。