這份筆記記錄了從0開始構建乙個最小根檔案系統的流程,從而達到分析其目錄結構及檔案的目的,基於的kernel版本為2.6.35
如圖/bin:由busybox安裝,裡面是通用命令,如ls
/sbin:由busybox安裝,裡面是root許可權命令,如shutdown
/usr:由busybox安裝,裡面是共享、開放的內容(意思是任意使用者都可以使用)
bin:由busybox安裝,裡面是共享、開放的命令,如whoami
sbin:由busybox安裝,裡面是不重要的系統命令,如deluser
/etc:裡面是各個程式的配置檔案,眾多程式在執行時需要根據配置檔案來指導它們的行為
sysconfig:
/proc:系統的虛擬檔案系統的掛載點,要自己建立,裡面是虛擬的檔案,表示了系統的一部分狀態
/sys:系統的虛擬檔案系統的掛載點,要自己建立,裡面是虛擬的檔案,非常全面的表示了系統狀態
/tmp:系統的虛擬檔案系統的掛載點,要自己建立,用於存放臨時生成的檔案,一般是空的
/var:系統的虛擬檔案系統的掛載點,要自己建立,用於存放一些資料
/dev:系統的虛擬檔案系統的掛載點,要自己建立,用於存放裝置檔案
arch = arm
cross_compile = /usr/local
/arm/arm-2009q3/bin//arm-none-linux-gnueabi-
/etc目錄裡面是各個程式的配置檔案,眾多程式在執行時需要根據配置檔案來指導它們的行為
此處的/etc/inittab就是busybox的配置檔案之一,busybox執行時將根據/etc/inittab來指導自己的行為。如果我們要新增自己的自啟應用程式,並不推薦inittab,推薦rc*.d,詳見第5節。
#sjh:這是乙個典型的inittab內容
#first:run the system script file
::sysinit:/etc/init.d/rcs
::sysinit:/bin/login
::askfirst:-/bin/sh
::ctrlaltdel:-/sbin/reboot
#umount all filesystem
::shutdown:/bin/umount -a -r
#restart init process
::restart:/sbin/init
/etc/init.d/rcs是被busybox呼叫的控制台初始化程式,這個檔案是乙個shell指令碼,在開機訪問控制台前它將被busybox執行,可以認為rcs是乙個開機就執行的初始化程式
如果我們要新增自己的自啟應用程式,並不推薦rcs,推薦rc*.d,詳見第5節
#!/bin/sh
path=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=s
prevlevel=n
umask 022
export path runlevel prevlevel
mount -a
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/bin/hostname -f /etc/sysconfig/hostname
ifconfig eth0 192.168.1.3
這是一種當前非常流行的開機啟動設定方式,/etc/rc*.d中的指令碼將被開機啟動。rc*.d
中的*
代表了了啟動優先順序
該檔案指定了系統初始化時應該掛載的檔案系統,
首先手動建立/etc/fstab,並向其內部新增:
# system>
point>
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /var tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
# ash profile
# vim: syntax=sh
# no core files by default
ulimit -s -c 0 > /dev/null 2>&1
user="`id -un`"
logname=$user
ps1='[\u@\h \w]\# '
path=$path
hostname=`/bin/hostname`
export user logname ps1 path
這些目錄都將作為系統的虛擬檔案系統的掛載點,自己手動建立即可,busybox的mount -a 指令會根據/etc/fstab檔案自動掛載虛擬檔案系統到這些目錄
這兩個檔案內部配置了使用者和密碼相關的設定,一般的嵌入式系統用不到這個功能。如果需要使用可以在網上搜尋這兩個檔案的格式
在主機中交叉編譯出來的應用程式若使用了靜態鏈結庫,則可以直接在開發板上跑。而使用了動態鏈結的則不行,因為執行時在需要開發板上載入庫檔案。所以在rootfs中新增動態鏈結庫檔案是必不可少的
構建檔案系統rootfs
目錄 一 工具準備 1 工具包 2 工具mkfs.jffs2編譯 3 工具mkyaffs2image編譯 二 檔案系統目錄 三 編譯busybox 1.7.0 四 建立重要目錄 1 console 和 null 2 etc inittab 3 安裝c庫 4 製作根檔案系統 五 優化 5 支援proc...
LINUX 手動建立SWAP檔案及刪除
原文 1.確定swap檔案的大小,單位為m。將該值乘以1024得到塊大小。例如,64mb的swap檔案的塊大小是65536。2.在root提示符下,鍵入下面的命令,其中count大小等於所要求的塊大小 dd if dev zero f swapfile bs 1024 count 655363.建立...
韌體庫檔案解析及構建工程
一 組合語言編寫的啟動檔案 stm32f103rbt6使用的是128kb的內建flash,因此,應該使用的檔案是startup stm32f10x md.s 主要作用 設定堆疊指標,pc指標,初始化中斷向量表,配置系統時鐘,呼叫c語言的 main前往c語言部分執行。二 配置系統時鐘的時鐘配置檔案 使...