手動構建rootfs及檔案功能分析

2021-08-11 12:28:34 字數 2807 閱讀 6569

這份筆記記錄了從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語言部分執行。二 配置系統時鐘的時鐘配置檔案 使...