建立最小根檔案系統

2021-06-21 00:06:30 字數 2687 閱讀 1246

建立最小根檔案系統:

(1)/dev/console  /dev/null

(2)/init=>busybox (/sbin/init 是到busybox的鏈結)

(3)/etc/inittab  配置檔案

(4)配置檔案指定的應用程式

(5)c庫

編譯busybox(命令工具集ls、cp……):

make menuconfig

配置完後 make

mkdir /work/nfs_root/second_fs

make config_prefix=/work/nfs_root/second_fs install

/work/nfs_root/second_fs資料夾裡將生成:bin sbin linuxrc usr 目錄,bin linuxrc 都是指向busybox的鏈結

(直接make install 會安裝到宿主機上,把原來的覆蓋掉)

建立裝置檔案 :

先檢視pc(sever)機上這兩個裝置檔案 ls /dev/console /dev/null -l

mkdir dev

cd dev/

sudo mknod console c(字元裝置) 5(主裝置號) 1(次裝置號)

sudo mknod null  c(字元裝置) 1(主裝置號) 3(次裝置號)

設定配置項檔案etc/inittab:

建立etc/inittab

mkdir etc

vi  etc/inittab

新增 :console::askfirst:-/bin/sh

inittab格式:

:::=> /dev/id(加乙個/dev字首),用作終端:stdin,stdout,stderr

可以完全忽略

指示何時執行

應用程式或指令碼

建立c庫:

mkdir lib

cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

cp *.so* /work/nfs_root/second_fs/lib -d(如果原來是鏈結檔案,則還保持鏈結檔案)

完善:(當執行根檔案系統時,執行ps 顯示:ps:can't open 'proc':no such file or directory)

cd /work/nfs_root

mkdir proc

核心提供乙個虛擬檔案系統/proc

手工掛載:mount -t proc none /proc 即可執行ps 命令

不想手工掛載,則需要增加乙個配置項::sysinit:/etc/init.d/rcs(配置項檔案etc/inittab)

建立指令碼程式:(etc/init.d/rcs是乙個指令碼程式,可以在裡面新增想自動執行的命令)

mkdir etc/init.d

vi etc/init.d/rcs 新增掛載命令mount -t proc none /proc

然後增加可執行屬性:chmod +x etc/init.d/rcs

另一種方法:

etc/init.d/rcs裡新增mount -a

使用mount -a (也就是讀/etc/fstab 配置檔案,建立該檔案,根據裡面的內容來掛載跟檔案系統)

device mount-point type   operation   dump  fask  oder

proc    /proc      proc   defaults     0      0

sysfs  /sys     sysfs defaults    0   0

tmpfs   /dev       tmpfs  defaults     0      0

重新製作檔案系統映像:mkyaffs2image filesystem filesystem.yaffs2

udev機制=> 自動建立/dev/目錄下的裝置節點

mdev 是udev的簡化版本

使用mdev的命令如下:(在etc/init.d/rcs裡加入這幾行)

mount -a

mkdir /dev/pts

mount -t devpts devpts /dev/pts

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

mdev -s(將現有的裝置驅動都建立出來)

nfs掛接nfs:(1)伺服器「允許」那個目錄可被掛接,nfs服務,它的配置檔案/etc/exports,在這個配置檔案裡面定義這個目錄就可以了

(2)單板去掛接

sudo vi /etc/exports 新增

/work/nfs_root/filesystem  *(rw,sync,no_root_squash)

然後重啟nfs服務:sudo /etc/init.d/nfs-kernel-server restart

試驗掛載,sudo mount -t nfs serverip:/work/nfs_root/first_fs(檔案系統所在目錄) /mnt

單板掛載:

mkdir /mnt

sudo mount -t nfs -o nolock serverip:/work/nfs_root/first_fs /mnt

直接從nfs啟動:set bootargs root=dev/nfs nfsroot=serverip:/...(檔案系統所在目錄)/ init=/linuxrc console=ttysac0

建立最小根檔案系統

最小的根檔案系統至少得包括以下內容 a dev console b dev null c init 由busybox編譯安裝產生 d etc inittab e 配置檔案制定的應用程式 f libc庫檔案 1 busybox配置安裝配置安裝之後,得到如下目錄 bin linuxrc sbin usr...

製作最小根檔案系統

1.dev console dev null 2.init程序 一般 於busybox 3.etc inittab 4.配置檔案指定的程式 5.c庫 1.解壓busybox tar xjf busybox 1.20.0.tar.bz2 2.配置 make menuconfig 設定交叉編譯選項cro...

根檔案系統(一)最小根檔案系統的構成

應用程式位於根檔案系統,核心為了使用應用程式,需要掛接根檔案系統,本節分析乙個最小根檔案系統的組成,在下節講解如果建立乙個最小根檔案系統 核心分析時,有如下呼叫過程 rest init kernel init 通過建立執行緒呼叫 prepare namespace mount root 掛接根檔案系...