特别值得一提的是Linux U盘有很多值得学习的地方,这里我们主要介绍Linux U分区盘,包括介绍Linux U格式化盘等方面。一直都很想用闲置下来的256MB Linux U盘制作一个微型的Linux系统,可是,多次尝试也没做出来,今天终于做出了一个165.7MB的Linux系统。其中,遇到了不少问题,现在总结一下,以方便进一步的优化。
步骤
一、Linux U盘分区
由于我的Linux U盘只有256MB,如果再分开两个区,可能容量就不够了,所以,我的做法是Linux U盘只分一个区。使用fdisk /dev/sdb指令,将u盘分成两个分区,一个Linux Ext3分区,一个FAT16分区,并将Linux分区标记为可引导的分区。
- Disk /dev/sdb: 262 MB, 262012928 bytes
- 1 heads, 56 sectors/track, 9138 cylinders
- Units = cylinders of 56 * 512 = 28672 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/sdb1 2 200 5572 6 FAT16
- /dev/sdb2 * 201 9138 250264 83 Linux
注:经测试Linux U盘单独分一个ext3分区似乎不太稳定?经常无缘无故的变回FAT16,怪了。
二、Linux U盘格式化
值得注意的是在格式化前得先把Linux U盘卸载掉。
sudo mkfs.vfat /dev/sdb1
sudo mke2fs -j -m0 -L SAN /dev/sdb2
sudo tune2fs -c -0 -i 0 /dev/sdb2
三、制作initRD
在制作时,提示“--preload=ehci-hcd ”找不到,我还没确定该写法是否有问题,或者应该是“--preload=ehci_hcd ”?sudo mkinitrd --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod --preload=sd_mod /boot/usbinitrd.img `uname -r`
四、制作Linux文件系统
将Linux U盘mount起来,修改usb目录的权限,然后在Linux U盘目录下创建如下文件夹chmod 777 -R /mnt/usb mkdir bin sbin etc dev lib sys proc usr var root home tmp mnt selinux
然后,将已有的Fedora10的文件系统中的boot bin sbin etc lib 目录及其下面的所有文件复制到Linux U盘中(我的做法是手动拷贝,这样可一将其中的链接也保留下来,当然,也可以cp -arp ),我的Linux U盘比较烂,经常出现Read-Only System的问题,不过重新mount一下就OK了!
补充说明:
1、后来尝试还是使用文字终端手动Mount比较稳头些!
2、还有一个关于磁盘检查的问题,在制作的过程中Linux U盘有可能出现错误,这时可以用e2fsck命令对相应分区作检查,如e2fsck /dev/sdb2等。
3、制作文件系统时一定要用UUID防止mount错位,造成Linux U盘文件系统破坏!
4、系统启动时显示一行Log“loading /lib/keymaps/i386/qwerty/us.map”,这说明lib下的系统动态链接库文件相当关键!
以下为文件系统的2层目录结构,其中有些文件夹是空的,但是,系统启动起来后会在该目录下创建相应的文件,如/proc等。值得一提的是,我的Fedora10是只有文字界面,而没有图形化界面的,所以,文件系统会小一些。建议大家如果想自己制作Linux U盘启动盘,最好也是利用没有图形化界面的文件系统,这样可以省不少空间。
在制作文件系统时,尤其要注意/etc/fstab这个文件的配置,如下:
注意:文中有关UUID的使用问题,请参考UUID一文。
- #/dev/sdb1 / ext3 defaults 1 1
- UUID=bbcbb70a-3da2-47cc-becd-5f3e3a162803 / ext3 defaults 1 1
- tmpfs /dev/shm tmpfs defaults 0 0
- devpts /dev/pts devpts gid=5,mode=620 0 0
- none /proc proc defaults 0 0
- [san@localhost san_fs]$ tree -d -L 2
- |-- bin
- |-- boot
- | |-- efi
- | |-- grub
- | `-- upgrade
- |-- dev
- |-- etc
- | |-- NetworkManager
- | |-- X11
- | |-- alternatives
- | |-- avahi
- | |-- blkid
- | |-- chkconfig.d
- | |-- cron.daily
- | |-- dbus-1
- | |-- default
- | |-- depmod.d
- | |-- dirmngr
- | |-- event.d
- | |-- fonts
- | |-- gcrypt
- | |-- gnupg
- | |-- init.d -> rc.d/init.d
- | |-- iproute2
- | |-- kernel
- | |-- ld.so.conf.d
- | |-- logrotate.d
- | |-- lvm
- | |-- makedev.d
- | |-- modprobe.d
- | |-- netplug
- | |-- netplug.d
- | |-- openldap
- | |-- opt
- | |-- pam.d
- | |-- pki
- | |-- popt.d
- | |-- ppp
- | |-- prelink.conf.d
- | |-- profile.d
- | |-- rc.d
- | |-- rc0.d -> rc.d/rc0.d
- | |-- rc1.d -> rc.d/rc1.d
- | |-- rc2.d -> rc.d/rc2.d
- | |-- rc3.d -> rc.d/rc3.d
- | |-- rc4.d -> rc.d/rc4.d
- | |-- rc5.d -> rc.d/rc5.d
- | |-- rc6.d -> rc.d/rc6.d
- | |-- rpm
- | |-- rwtab.d
- | |-- sasl2
- | |-- security
- | |-- selinux
- | |-- skel
- | |-- statetab.d
- | |-- sysconfig
- | |-- terminfo
- | |-- udev
- | |-- xdg
- | |-- xinetd.d
- | |-- yum
- | `-- yum.repos.d
- |-- home
- |-- lib
- | |-- bdevid
- | |-- dbus-1
- | |-- firmware
- | |-- i686
- | |-- kbd
- | |-- modules
- | |-- rtkaio
- | |-- security
- | |-- terminfo
- | |-- tls
- | |-- udev
- | `-- xtables
- |-- mnt
- |-- proc
- |-- root
- |-- sbin
- |-- selinux
- |-- sys
- |-- tmp
- |-- usr
- `-- var
(该目录下还需创建lib lock run log等目录,这可以根据系统起来后的提示确定 )85 directories
【编辑推荐】