Linux U盤分區與格式化和制作Linux文件系統
特別值得一提的是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
【編輯推薦】