You are on page 1of 4

制作从 U 盘引导的 Fedora 系统

Posted by robin guo on 四月 6th, 2007

1. 准备工作
安装两个 Fedora 6 系统
第一个是开发环境(engineering),可以是任何 Linux 系统,选择常用的包组、
缺省安装就可以了。
第二个是目标环境(deployment),目标环境的内容复制到 USB 盘上。
安装目标系统时有几点要注意:
目标环境的内容复制到 USB 盘上。安装目标系统时有几点要注意:,可以是任何
Linux 系统,选择常用的包组、缺省安装就可以了。第二个是目标环境(),目标
环境的内容复制到 USB 盘上。安装目标系统时有几点要注意:

• 建议分 3G 空间

• 目标环境安装时后要求尽量的小,去掉不必要的文档和 office 套件,服


务器套件等(<1.6G 最好,建议用 BLAG,包含基本组件、Xwindow 、GNOME
和常用的流媒体软件,安装后大约 1.5G)
• 安装 GRUB 到 MBR(需要用到/boot/grub)

硬盘分区可能如下:

Device Boot Start End Blocks Id System


/dev/hda1 * 1 1275 10241406 c W95 FAT32 (LBA)
/dev/hda2 1276 2805 12289725 83 Linux
/dev/hda3 2806 4335 12289725 83 Linux

其中 hda2 为开发环境 engineering,hda3 为目标环境 deployment


安装完成后,用目标环境 deployment 引导,看能否正常进入系统。如果正常,
则可以用这个作为“原始版”。

2. USB 盘制作
2.1 分区
fdisk /dev/sde(USB 设备在大多数机器上是/dev/sda,我的机器上有 CF/MMC
等读卡器,所以是 sde。如果你的 USB 盘被识别成 sda,请将下面所有 sde 换成
sda。)
分区后如下:
Device Boot Start End Blocks Id System
/dev/sde1 * 1 3 24066 83 Linux
/dev/sde2 4 35 257040 82 Linux swap / Solaris
/dev/sde3 36 259 1799280 83 Linux

2.2 设置 LABEL 卷标(便于在/etc/fstab 中用卷标访问分区)


e2label /dev/sde1 usbboot
e2label /dev/sde3 usbroot

2.3 创建文件系统
mkfs.ext3 /dev/sde1
mkswap -L usbswap /dev/sde2
mkfs.ext3 /dev/sde3

3. 复制文件系统
用 engineering 引导(也可以用 fedora 引导盘,linux rescue 进入救援模式。
主要是得到一个非引导状态的 Fedora 系统)

3.1 挂载分区、检查空间
mkdir /mnt/mfedora
mount /dev/hda3 /mnt/mfedora
mkdir /mnt/usbroot
mount /dev/sde3 /mnt/usbroot
mkdir /mnt/usbroot/boot
mount /dev/sde1 /mnt/usbroot/boot

用 df 命令看下空闲容量是否足够,如果容量足够(hda3 的已用空间要小于
sde3 的可用空间),可以直接进下一步。
注:如果用 BLAG 安装的系统,则可能只用了 1.5G,可节省裁减的时间。

/dev/hda3 11904620 1776252 9513884 16% /mnt/mfedora


/dev/sde3 1770952 35452 1645536 3% /mnt/usbroot
/dev/sde1 23300 1230 20867 6% /mnt/usbroot/boot

hda3 上的已用空间超过了 sde3 的可用空间,所以先得删除一些内容,如下:

/mnt/mfedora/usr/share/doc
/mnt/mfedora/usr/share/gtk-doc
/mnt/mfedora/usr/share/man
/mnt/mfedora/usr/kerberos/man
/mnt/mfedora/usr/share/info
/mnt/mfedora/usr/share/vim/vim70/doc
/mnt/mfedora/usr/share/dict/linux.words
/mnt/mfedora/usr/bin/smb*
/mnt/mfedora/usr/share/locale/(保留 en* zh*)

再看空间情况:

/dev/hda3 11904620 1429572 9860564 13% /mnt/mfedora


/dev/sde3 1770952 35452 1645536 3% /mnt/usbroot
/dev/sde1 23300 1230 20867 6% /mnt/usbroot/boot

3.2 复制文件系统到 USB 盘


rsync -av /mnt/mfedora/ /mnt/usbroot/

4. 安装引导软件

4.1 安装 GRUB 到 USB 盘的 MBR


grub
grub> root (hd1,0)
grub> setup (hd1)
grub> exit4.2 生成引导映象
chroot /mnt/usbroot/
cd /boot
mkinitrd –preload=ehci-hcd –preload=usb-storage –preload=scsi_mod
–preload=sd_mod usb_initrd-2.6.18-1.2798.fc6.img 2.6.18-1.2798.fc6

4.3 编辑 GRUB 菜单,/boot/grub/gurb.conf 内容如下:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18-1.2798.fc6)
kernel (hd0,0)/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=usbroot rhgb
quiet
initrd (hd0,0)/usb_initrd-2.6.18-1.2798.fc6.img

4.4 修改/etc/fstab,内容如下:

LABEL=usbroot / ext3 defaults 1 1


LABEL=usbboot /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=usbswap swap swap defaults 0 0
4.5 结束
退出 chroot
exit
umount /dev/sde1
umount /dev/sde3
将这个 USB 盘拿到支持 USB HDD 引导的机器上,重新引导就可以了。

5. 制作过程中可能的出现的问题

5.1 引导时不能加载 root 分区


原因是在/目录下有一个隐藏文件.autorelabel,这个文件可能是在我在调试
grub 时产生的,删除这个文件并重新打上 LABEL
rm /mnt/usbroot/.autorelabel
e2label /dev/sde1 usbboot
e2label /dev/sde3 usbroot
mkswap -L usbswap /dev/sde2

You might also like