天天看點

arm linux 啟動檔案/etc/init.d/rcs,linux下檔案系統的移植

首先檔案系統的構造如圖

arm linux 啟動檔案/etc/init.d/rcs,linux下檔案系統的移植

是以 我們如果要移植檔案系統的話 也就是在根目錄上去建立(挂載)這些系統啟動所必須的目錄

/bin 存放linux系統下常用的指令 cat,chmod,等

/sbin 存放需要管理者權限才能使用的指令 比如 shutdown reboot等 挂接其他檔案前都可以使用,是以

放在和根檔案相同的分區中。不緊迫的指令可以放在 、/usr/sbin下

/dev 存放裝置檔案比如序列槽啊存儲啊 手動建立 + uedv 自動建立

/etc 用來存放各種配置檔案export passwd 等

/lib 存放共享庫 和 可加載檔案運作根檔案系統中的可執行程式 libc.so*

/home 、 /root 、/usr 、 跟使用者相關的一些東西

/proc 存儲一下臨時生成的檔案 用來表示系統的運作狀态

/mnt 用于臨時挂接某個檔案系統的挂接點 通常是空的 也可以在裡面建立目錄挂接 一些硬碟裝置等

/tmp 通常是空的 一些需要臨時生成的檔案用到 必須要有

2、移植BusyBox

從官網下載下傳最新版本的busyBox壓縮包 然後解壓 修改其中的Makefile

CROSS_COMPILE = arm-linux-

ARCH = arm

Busybox Settings --->

Build Options --->

[ ] Build BusyBox

as a static binary (no shared libs) (NEW)

這個意思是運作busybox才動态連結庫,busybox需要的庫要我們提供Busybox

Settings --->

Installation Options

("make install" behavior) --->

What kind of

applet links to install (as soft-links) --->

設定busybox生成後各種指令均為指向busybox主程式的軟連結Busybox

Settings --->

Busybox Library

Tuning --->

(255) History

size

[*] History

saving (NEW) // 支援曆史記錄

[*] Tab completion

(NEW) // 支援Tab補全操作選項Applets就是将busybox支援的幾百個指令分門别類,我們可以在各個門類下選擇想要的指令。

儲存 然後make menuconfig 配置這些選項

關于需要注意的一些選項說明如下:

最後出現下面的資訊,make成功

CC util-linux/volume_id/xfs.o

AR util-linux/volume_id/lib.a

LINK busybox_unstripped

Trying libraries: crypt m

Library crypt is not needed, excluding it

Library m is needed, can't exclude it (yet)

Final link with: m

libbusybox: 0_lib/libbusybox.so.1.23.1

DOC busybox.pod

DOC BusyBox.txt

DOC busybox.1

DOC BusyBox.html

然後 make

生成以後 make install 到目标闆的目錄

出現下面的資訊安裝成功

--------------------------------------------------

You will probably need to make your busybox binary

setuid root to ensure all configured applets will

work properly.

2,建構檔案系統的目錄

建構檔案系統需要三個步驟

1、建立所需要的檔案夾

mkdirdev etc home lib media mnt opt proc sys tmp var root

2、添加檔案系統所需要的庫

mkdir lib

cp home/wjl/work/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib 下的庫到剛建的目錄下

3、建立所需要的檔案

mkdir etc 目錄

需要再etc 目錄下建立三個檔案

1>initab /ect/initab

initab 主要是任務是建立其他程序,比如調用腳本檔案配置IP位址,挂接其他檔案系統。啟動shell等

2> rcS etc/init.d/rcS

rcS 裡面可以添加你真正想執行的程式 配置的資訊 在這裡面可以用 mount -a

3> fatab etc/fstab

fstab檔案被用來控制 mount 的行為

fstab的表示形式如下

#device mount-point type options dump fsck order

proce /proce proc defaults 0 0

建構dev 目錄

1、 靜态建立設定檔案 在dev 目錄下手動建立 一些裝置節點

mkdir /dev

sudo mknod console c 5 1

sudo mknod null c 1 3

sudo mknod ttySAC0 c 204 64

2、使用mdev動态的去建立裝置檔案

要使用 mdev 需要核心支援sysfs檔案系統 為了減少flash的讀寫還需要支援tempfs 檔案系統

是以要配置核心設定 CONFIG_SYSFS CONFIG_TEPFS 配置項

mount -t tmpfs mdev /dev

mkdir /dev/pts

mount -t dev

mount -t devpts devpts /dev/pts

mount -t sysfs sysfs /sys

echo /bin/mdev > /proc/sys/kernel/hotplug

mdev -s

還需要修改 rcS fstsb 檔案

4 制作 YAFFS 檔案系統映像檔案

所謂制作檔案系統映像檔案 就是将一個目錄下的所有内容按照一定的格式存放到一個檔案中 這個檔案可以直接燒寫到

存儲設定上去,當系統啟動狗挂接這個裝置 就可以看到與原來目錄一樣的内容

mkyaffsimage fs_mini fs_mini.yaffs

j将fs_mini.yaffs 放入tftp 目錄或者nfs目錄後 在U-BOOT階段 燒入指定的記憶體即可