嵌入式產品:編譯文件系統

文件系統:目錄+文件,再封裝成一定的文件系統格式
Busybox是一個UNIX系統工具集,它將很多普通的UNIX工具集成到一個很小的可執行文件中,爲普通用戶提供大多數常用的命令。
在生成的文件系統的/bin下的所有命令軟連接,都指向了/bin/busybox。

準備:
安裝字符終端處理庫ncurses
sudo apt-get install libncurses5-dev

編譯文件系統

1. 下載
http://busybox.net/downloads/
http://git.busybox.net/busybox/
2. 解壓
3. 配置
	a. make menuconfig
	b. 編譯busybox成一個靜態文件:
	busybox settings--->build options---> [*] Build Busybox as a static binary(no shared libs)
	c. 指定安裝目錄:
	busybox settings ---> installation options --->destination path
	d. 指定交叉編譯器路徑:Cross Compiler prefix
4. 編譯:make
5. 安裝:make install
6. 已有的目錄:bin  linuxrc  sbin  usr

添加目錄文件

1. 創建目錄:
mkdir lib etc dev sys proc tmp var opt mnt home root media
mkdir usr/bin usr/sbin usr/lib lib/modules var/log -p
2. 創建設備節點
sudo mknod -m 666 dev/console c 5 1
sudo mknod -m 666 dev/null c 1 3
3. 複製so庫:把交叉編譯器的lib下的文件全部複製當前/lib
4. 複製內核模塊:把.ko文件複製到lib/modules中
5. etc配置文件
# 複製busybox源碼的文件
cp busybox/examples/bootfloppy/etc/* ./etc/ -a
# 複製PC機文件
cp /etc/{passwd,shadow,group} ./etc/ -a

用戶

/etc/passwd存放用戶信息
用戶名:口令(真正的加密口令放在/etc/shadow):UID(用戶標識號):GID(組標識號):註釋:用戶的根目錄:登錄的shell
/etc/shadow存放用戶加密的密碼:
用戶名:密碼:最後一次修改密碼的日期(距離1970.1.1的天數):修改密碼最小相隔天數:密碼需要重新更改的天數:警告天數:密碼失效的寬限時間:失效的日期(距離1970.1.1的天數):保留
/etc/group存放用戶組信息:
用戶組名稱:用戶組密碼:GID:以此組爲附加組的用戶列表

啓動順序

kernel啓動掛載文件系統後最先執行的是linuxc,linuxc指向/bin/busybox,busybox的init完成系統的初始化工作,關機前的工作等。busybox解析/etc/inittab,在/etc/inittab中啓動/etc/init.d/rcS。在/etc/profile文件設置PATH(可執行文件路徑),LIBRARY_PATH(編譯時查找庫路徑),LD_LIBRARY_PATH(可執行程序運行時查找庫路徑),umask 0222(創建的文件的默認權限爲644)。開機啓動程序在/etc/init.d/rcS啓動。

修改初始化文件/etc/inittab(決定啓動哪些進程,以什麼級別運行)

#初始化
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init
#快捷方式ctrl+alt+del
::ctrlaltdel:/bin/umount -a -r
#關機時卸載磁盤,關閉系統交換區
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a
#登陸終端方法1(運行級別2345)
1:2345:respawn:/sbin/getty 115200 tty1
2:2345:respawn:/sbin/getty 115200 tty2
3:2345:respawn:/sbin/getty 115200 tty3
#登陸終端方法2(“-”:登陸終端時啓動/etc/profile)
tty4::askfirst:-/bin/sh
#需要登陸
#tty4::askfirst:-/bin/login
#啓動後進入命令行
id:3:initdefault:
#啓動後進入窗口
#id:5:initdefault:

getty進程來提供虛擬終端設備的服務
標籤字段的值是1,1是設備tty1的數字後綴,tty1與相應的進程相關聯,該getty進程可以啓動的runlevel是2,3,4和5,當該進程終止時init馬上就重新啓動它。啓動進程的路徑名是/sbin/getty,該進程是實現虛擬終端支持的最小版本的getty,爲tty1提供啓動虛擬設備的進程。

掛載

修改文件/etc/fstab(掛載哪些設備)
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0

查看目錄大小

du -mh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章