簡單的來說,我認爲根文件系統就是一種目錄結構,那麼根文件系統和普通的文件系統有什麼區別呢?我認爲根文件系統就是要包括Linux啓動時所 必須的目錄和關鍵性的文件,例如Linux啓動時都需要有init目錄下的相關文件,在Linux掛載分區時Linux一定會找/etc/fstab這個 掛載文件等,根文件系統中還包括了許多的應用程序bin目錄等,任何包括這些Linux系統啓動所必須的文件都可以成爲根文件系統。
Linux支持多種文件系統類型,在嵌入式上常用的有:ROMFS,JFFS2,NFS,CRAMFS,YAFFS等等。在Linux系統中是通過mount命令來掛載不同的文件系統。
在ARM Linux中常用的文件系統的配置:
- RAM Disk Driver + EXT2;
- MTD Driver + JFFS2/YAFFS;
- NFS;
uclinux中常見的文件系統配置爲:
- Blkmem Driver + ROMFS(支持 Nor Flash);
- RAM Disk Driver + ROMFS(不支持FLASH);
- MTD Driver + JFFS2/YAFFS(支持多種flash);
建立根文件系統的步驟:
1.創建根文件系統目錄。
2.創建各種必要的系統文件目錄。
3.創建設備文件。
4.建立啓動相關的配置文件。
5.編譯安裝庫文件glibc/uclibc。
6.編譯busybox,安裝系統軟件和應用。
這裏重點要建立啓動相關的配置文件(Linux-2.6):
創建/etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty 115200 s3c2410_serial0
::restart:/sbin/init
::shutdown:/bin/umount -a -r
創建/etc/init.d文件
#!/bin/sh
mount -a
/etc/init.d/udev start
mkdir /dev/pts
mount -t devpts devpts /dev/pts
hwclock --hctosys
ifup eth0
ifup lo
/etc/init.d/sshd start
thttpd -C /etc/thttpd.conf
建立開發板上的文件系統配置文件/etc/fstab
proc /proc proc defaults 0 0
sys /sys sysfs defaults 0 0