国产精品久久久久永久免费看,大地资源网更新免费播放视频,国产成人久久av免费,成人欧美一区二区三区黑人免费,丁香五月天综合缴情网

  • 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-busybox構(gòu)建根文件系統(tǒng)之添加必要目錄和庫(kù)

06/23 17:47
423
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一、添加目錄

使用mkdir分別建立lib、dev、proc、mnt、sys、tmp、root、usr/lib文件夾:

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir lib

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir dev

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir proc

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir mnt

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir sys

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir tmp

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir root

elf@ubuntu:~/nfs_rootfs/rootfs$ mkdir usr/lib

elf@ubuntu:~/nfs_rootfs/rootfs$ ls

bin ?dev ?lib ?linuxrc ?mnt ?proc ?root ?sbin ?sys ?tmp ?usr

二、添加lib庫(kù)內(nèi)容

在rootfs目錄中,使用如下命令,將交叉編譯工具中的lib庫(kù)復(fù)制到lib下:

elf@ubuntu:~/nfs_rootfs/rootfs$ cp -d /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/lib/*so* ./lib

然后繼續(xù)以下操作,將lib中的ld-linux-armhf.so.3軟連接,更改為實(shí)體。

刪除軟連接:

elf@ubuntu:~/nfs_rootfs/rootfs$ rm lib/ld-linux-armhf.so.3

復(fù)制實(shí)體:

elf@ubuntu:~/nfs_rootfs/rootfs$ cp /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/lib/ld-linux-armhf.so.3 ./lib

三、添加usr/lib庫(kù)內(nèi)容

在rootfs目錄中,使用如下命令,將交叉編譯工具中的/usr/lib庫(kù)復(fù)制到/usr/lib下:

elf@ubuntu:~/nfs_rootfs/rootfs$ cp -rd /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/*so* ./usr/lib

四、添加啟動(dòng)文件

在/busybox/examples/etc文件夾中存在有啟動(dòng)相關(guān)的文件,我們將該etc文件夾復(fù)制到我們創(chuàng)建的文件系統(tǒng)中:

elf@ubuntu:~/nfs_rootfs/rootfs$ cp -rf /home/elf/work/busybox-1.32.1/examples/bootfloppy/etc/ .

復(fù)制完成之后,我們打開(kāi)etc目錄:

elf@ubuntu:~/nfs_rootfs/rootfs$ ls etc/

fstab ?init.d ?inittab ?profile

其中:

inittab是一個(gè)存儲(chǔ)有初始化配置的文本文件,它有若干行指令所組成,這些指令都按照一定的格式進(jìn)行書(shū)寫(xiě)。內(nèi)核在經(jīng)過(guò)一系列初始化工作之后,執(zhí)行的第一個(gè)用戶進(jìn)程是init進(jìn)程,該進(jìn)程執(zhí)行程序是sbin/目錄下的init程序。init程序會(huì)解析inittab文件,獲取其中的配置信息,并按照其中配置創(chuàng)建各種子進(jìn)程。

inittab文件中每個(gè)條目用來(lái)定義一個(gè)子進(jìn)程,并確定它的啟動(dòng)方法,格式如下 :

Identifier:run_level:action:process

(一)Identifier:對(duì)于busybox來(lái)說(shuō),表示這個(gè)進(jìn)程要使用的控制臺(tái)(即標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤設(shè)備)。如省略,則使用與init進(jìn)程一樣的控制臺(tái)。

(二)run_level:系統(tǒng)運(yùn)行級(jí)別,對(duì)于Busybox init程序,這個(gè)字段無(wú)意義,可以省略。

(三)action:表示init程序如何控制這個(gè)子進(jìn)程。

action字段一般有如下定義:

action定義 執(zhí)行說(shuō)明
sysinit 系統(tǒng)啟動(dòng)后最先執(zhí)行的進(jìn)程,init程序會(huì)等待它執(zhí)行完成之后,才能執(zhí)行下一進(jìn)程
wait Sysinit進(jìn)程執(zhí)行結(jié)束后執(zhí)行的第二個(gè)進(jìn)程,init程序會(huì)等待它執(zhí)行完成之后,才能執(zhí)行下一進(jìn)程
once Wait進(jìn)程執(zhí)行結(jié)束后,執(zhí)行的進(jìn)程,init程序會(huì)等待它執(zhí)行完成之后,才能執(zhí)行下一進(jìn)程
respawn Once進(jìn)程結(jié)束之后,init進(jìn)程監(jiān)測(cè)發(fā)現(xiàn)子進(jìn)程退出時(shí),重新啟動(dòng)子程序
askfirst 與respawn類似,也是在Once進(jìn)程結(jié)束之后,init進(jìn)程監(jiān)測(cè)發(fā)現(xiàn)子進(jìn)程退出時(shí),重新啟動(dòng)子程序,不過(guò)init進(jìn)程先輸出“Please press Enter to actvie this console”,等用戶輸入回車鍵之后才啟動(dòng)子進(jìn)程
shutdown 重啟關(guān)閉系統(tǒng)命令時(shí)halt/reboot/poweroff/SIGQUIT啟動(dòng)子進(jìn)程
restart 重啟時(shí)執(zhí)行子進(jìn)程
ctrlatldel 按下Ctr+Alt+del組合鍵時(shí)執(zhí)行子進(jìn)程

(四)<process>:要執(zhí)行的程序,它可以是可執(zhí)行程序,也可以是腳本

五、修改inittab文件

我們可以打開(kāi)etc/inittab文件,詳細(xì)看一下:

::sysinit:/etc/init.d/rcs

::respawn:-/bin/sh

tty2::askfirst:-/bin/sh

::ctrlaltdel:/bin/umount -a -r

::sysinit:/etc/init.d/rcS表示系統(tǒng)啟動(dòng)后會(huì)首先運(yùn)行etc/init.d/rcS文件,該文件是一個(gè)腳本文件,在此腳本文件中,我們可以執(zhí)行一系列初始化操作,比如設(shè)置環(huán)境變量路徑,開(kāi)啟程序,掛載文件系統(tǒng)、配置網(wǎng)絡(luò)等等。

::respawn:-/bin/sh表示當(dāng)子進(jìn)程-/bin/sh退出之后,重新開(kāi)啟。

tty2::askfirst:-/bin/sh表示-/bin/sh交互使用的控制臺(tái)是tty2,子進(jìn)程有"-"字符,表示這個(gè)程序是可交互的。

::ctrlaltdel:/sbin/unmount -a –r按下組合鍵后卸載文件系統(tǒng)。

我們將inittab文件進(jìn)行按照我們想要的功能進(jìn)行簡(jiǎn)單修改:

ttymxc0::sysinit:/etc/init.d/rcS

ttymxc0::askfirst:-/bin/sh

::restart:/sbin/init

::crtlaltdel:/sbin/reboot

::shutdown:/sbin/unmount -a -r

::shutdown:/sbin/swaoff -a

然后我們打開(kāi)init.d/rcS文件:

#! /bin/sh

/bin/mount -a

該腳本文件只有一行命令,我們進(jìn)行簡(jiǎn)單修改,增加mdev系統(tǒng)功能,mdev系統(tǒng)啟動(dòng)和熱插拔或動(dòng)態(tài)加載驅(qū)動(dòng)程序時(shí),自動(dòng)產(chǎn)生驅(qū)動(dòng)程序所需的節(jié)點(diǎn)文件:

#! /bin/sh

mount -a

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

mdev -s

#./usr/my_app

mount –a命令用于掛載文件系統(tǒng),掛載所有的應(yīng)該被掛載的文件系統(tǒng),在busybox中mount -a時(shí)busybox會(huì)去查找etc/fstab文件系統(tǒng)列表文件,這個(gè)文件按照一定的格式列出來(lái)所有應(yīng)該被掛載的文件系統(tǒng)。

接下來(lái)的兩行命令,是mdev系統(tǒng)功能,mdev系統(tǒng)啟動(dòng)和熱插拔 或動(dòng)態(tài)加載驅(qū)動(dòng)程序時(shí),自動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)。

最后的./usr/my_app是我添加的一個(gè)測(cè)試程序,系統(tǒng)啟動(dòng)之后,會(huì)自動(dòng)執(zhí)行該程序,這里先注釋掉。

剛才說(shuō)執(zhí)行mount –a命令時(shí),busybox會(huì)去查找etc/fstab文件系統(tǒng)列表文件,我們打開(kāi)etc/fstab文件:

proc ??/proc ???proc ???defaults ???0 ???0

可以看到這里只列出一個(gè)proc文件系統(tǒng),我們繼續(xù)在此文件中添加:

proc ??/proc ???proc ???defaults ???0 ???0

sysfs ??????????/sys ???sysfs ??defaults ???0 ??0

tmpfs ??????????/tmp ???tmpfs ??defaults ???0 ??0

tmpfs ??????????/dev ???tmpfs ??defaults ???0 ??0

最后,在etc目錄下還有一個(gè)profile文件,增加關(guān)于應(yīng)用程序、庫(kù)文件的路徑環(huán)境變量配置:

PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib

export PATH LD_LIBRARY_PATH

相關(guān)推薦