99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何完善根文件系統(tǒng)

CHANBAEK ? 來源:嵌入式攻城獅 ? 作者:安迪西 ? 2023-04-18 15:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 完善根文件系統(tǒng)

在用 BusyBox 構(gòu)建根文件系統(tǒng)一文中介紹了根文件系統(tǒng)的制作,rootfs制作完成后測試時,提示無法運行“/etc/init.d/rcS”這個文件,說明rootfs仍然不夠完善,下面將介紹如何完善根文件系統(tǒng)。

1.1 創(chuàng)建 /etc/init.d/rcS 文件

rcS 是個 shell腳本,Linux內(nèi)核啟動后需要啟動一些服務(wù),rcS就是規(guī)定啟動哪些文件的腳本文件。 在 rootfs中創(chuàng)建 /etc/init.d/rcS文件,命令如下:

mkdir -p etc/init.d/
cd etc/init.d/
touch rcS

然后在rcS文件中輸入如下內(nèi)容:

1 #!/bin/sh 
2 
3 PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH 
4 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib 
5 export PATH LD_LIBRARY_PATH 
6 
7 mount -a 
8 mkdir /dev/pts 
9 mount -t devpts devpts /dev/pts 
10 
11 echo /sbin/mdev > /proc/sys/kernel/hotplug 
12 mdev -s
  • 第 1 行,表示這是一個 shell 腳本
  • 第 3 行,PATH 環(huán)境變量保存著可執(zhí)行文件可能存在的目錄
  • 第 4 行,LD_LIBRARY_PATH 環(huán)境變量保存著庫文件所在的目錄
  • 第 5 行,使用 export 來導(dǎo)出上面這些環(huán)境變量,相當于聲明“全局變量”
  • 第 7 行,使用 mount 命令來掛載所有的文件系統(tǒng),這些文件系統(tǒng)由文件 /etc/fstab來指定,所以后續(xù)還要創(chuàng)建 /etc/fstab文件
  • 第 8 和 9 行,創(chuàng)建目錄/dev/pts,然后將 devpts掛載到 /dev/pts目錄中
  • 第 11 和 12 行,使用 mdev 來管理熱插拔設(shè)備,通過這兩行,內(nèi)核就可以在 /dev 目錄下自動創(chuàng)建設(shè)備節(jié)點

創(chuàng)建好rcS文件后,賦予其可執(zhí)行權(quán)限:

chmod 777 rcS

1.2 創(chuàng)建 /etc/fstab 文件

fstab文件是在 Linux開機以后自動配置哪些需要自動掛載的分區(qū),格式如下:

<file system> <mount point> <type> <options> <dump> <pass>
  • file system:要掛載的特殊的設(shè)備,也可以是塊設(shè)備,比如/dev/sda 等
  • mount point:掛載點必須為已經(jīng)存在的目錄
  • type:文件系統(tǒng)類型,比如 ext2、ext3、proc、romfs、tmpfs 等
  • options:掛載選項,用于設(shè)置掛載參數(shù),一般使用 defaults默認選項
    – defaults:rw, suid, dev, exec, auto, nouser, and async
    – auto:系統(tǒng)自動掛載,fstab默認就是這個選項
    – noauto :開機不自動掛載
    – nouser:只有超級用戶可以掛載
    – ro:按只讀權(quán)限掛載
    – rw:按可讀可寫權(quán)限掛載
    – user:任何用戶都可以掛載
  • dump:為 1 表示允許備份,為 0 不備份,一般設(shè)置為 0
  • pass:磁盤檢查設(shè)置,為 0 表示不檢查。 根目錄‘/’設(shè)置為 1,其他的都不能設(shè)置為 1,其他的分區(qū)從 2 開始。 一般不在 fstab 中掛載根目錄,因此這里一般設(shè)置為 0

在 rootfs根文件系統(tǒng)中創(chuàng)建 /etc/fstab文件:

cd etc/
touch fstab

fstab文件內(nèi)容如下:

#
proc 		 /proc 	 proc 	 defaults  0 	    0
sysfs 		 /sys 		 sysfs  defaults  0 	    0
tmpfs 		 /tmp 		 tmpfs  defaults  0 	    0

1.3 創(chuàng)建/etc/inittab文件

inittab 的詳細內(nèi)容可以參考 busybox 下的文件 examples/inittab。 init 程序會讀取/etc/inittab這個文件,inittab 由若干條指令組成。 每條指令的結(jié)構(gòu)都是一樣的,由以“ : ”分隔的 4 個段組成,格式如下:

:::
  • id:每個指令的標識符,不能重復(fù)。 對于 busybox的 init而言是用來指定啟動進程的控制 tty,一般將串口或者 LCD屏幕設(shè)置為控制 tty
  • runlevels:對 busybox 來說此項完全沒用,所以空著
  • action:動作關(guān)鍵字,用于指定 process 可能用到的動作
  • process:具體的動作,比如程序、腳本或命令等

參考 busybox的 examples/inittab文件,在 rootfs根文件系統(tǒng)中創(chuàng)建 /etc/inittab文件:

cd etc
touch inittab

inittab文件內(nèi)容如下:

1 #etc/inittab
2 ::sysinit:/etc/init.d/rcS
3 console::askfirst:-/bin/sh
4 ::restart:/sbin/init
5 ::ctrlaltdel:/sbin/reboot
6 ::shutdown:/bin/umount -a -r 
7 ::shutdown:/sbin/swapoff -a
  • 第 2 行,系統(tǒng)啟動以后運行/etc/init.d/rcS 這個腳本文件
  • 第 3 行,將 console 作為控制臺終端,也就是 ttymxc0
  • 第 4 行,重啟的話運行/sbin/init
  • 第 5 行,按下 ctrl+alt+del 組合鍵就運行/sbin/reboot,用于重啟系統(tǒng)
  • 第 6 行,關(guān)機的時候執(zhí)行/bin/umount,也就是卸載各個文件系統(tǒng)
  • 第 7 行,關(guān)機的時候執(zhí)行/sbin/swapoff,也就是關(guān)閉交換分區(qū)

/etc/inittab 文件創(chuàng)建好以后重啟開發(fā)板即可,至此! 根文件系統(tǒng)要創(chuàng)建的文件就已經(jīng)全部完成了。 接下來就要對根文件系統(tǒng)進行其他的測試,比如我們自己編寫的軟件運行是否正常、是否支持軟件開機自啟動、中文支持是否正常以及能不能鏈接等

2. 根文件系統(tǒng)其他功能測試

根文件系統(tǒng)已經(jīng)完善了,接下來繼續(xù)測試根文件系統(tǒng)是否好用

2.1 軟件運行測試

編寫一個簡單的c語言程序運行一下,驗證庫文件是否能用

在ubuntu的 rootfs中創(chuàng)建一個hello.c

#include 

int main(void){
  while(1){
    printf("hello world!\\r\\n"); //打印
    sleep(2); //休眠2秒
  }
}

使用交叉編譯鏈來編譯程序

arm-linux-gnueabihf-gcc hello.c -o hello

編譯后會生成名為hello的可執(zhí)行文件,可以使用“file”命令查看文件類型以及編碼格式,見下圖

圖片

可見 hello是個32位的 LSB可執(zhí)行文件,ARM架構(gòu)的,并且是動態(tài)鏈接的

重啟開發(fā)板,在開發(fā)板上運行hello文件,程序每隔2秒打印一次,運行正常,說明根文件系統(tǒng)中的動態(tài)庫沒有問題,“ctrl+c”可中止程序

圖片

程序運行起來后,會占用交互窗口,可在運行時加上“&”,即:./hello&,讓其進入后臺運行

圖片

程序在后臺運行時,交互串口仍是有打印的,只是這時可以敲回車鍵來輸入命令了,與程序的輸出互不影響,唯一的影響是程序的輸出會打斷我們的輸入,但可以不理會打斷,繼續(xù)輸入仍可執(zhí)行命令的

后臺運行的程序,可通過 ps命令查看進程id,然后使用 kill -9 pid(進程ID)命令來關(guān)閉后臺運行的程序。 如下圖,輸入ps命令,可見 hello程序的進程ID為92,輸入kill -9 92(不用理會被打斷)后回車,就可看到hello進程被關(guān)閉了

圖片

2.2 中文字符測試

在Ubuntu中的 rootfs目錄下新建一個“中文測試”文件夾,并新建一個“測試文檔.txt”,里面輸入任意中文,下載到開發(fā)板后,在開發(fā)板命令行模式中,使用cat命令查看中文是否顯示正確

圖片

2.3 開機自啟動測試

一般做好產(chǎn)品以后都是需要開機自動啟動相應(yīng)的軟件,實現(xiàn)開機自啟動的原理也很簡單,linux在啟動時,有一個默認的開機啟動腳本(/etc/init.d/rcS這個shell文件),修改這個腳本,添加自啟動相關(guān)內(nèi)容即可

########## /etc/init.d/rcS 文件代碼 ##########
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
runlevel=S
umask 022
export PATH LD_LIBRARY_PATH runlevel

mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts

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

#開機自啟動,先進入hello所在文件夾再執(zhí)行
cd /drivers 
./hello &
cd /

自啟動代碼添加完成以后,重啟開發(fā)板,可以看到hello這個軟件已經(jīng)開機時自動運行了:

圖片

2.4 外網(wǎng)連接測試

這里的外網(wǎng)是相對于局域網(wǎng)這個內(nèi)外而言的,即測試板子是否能訪問百度、QQ這樣的網(wǎng)站,先使用ping指令來測試一下:

圖片

在網(wǎng)絡(luò)連接正常的情況下,無法ping通這些網(wǎng)址,是因為缺少域名解析服務(wù),需要配置域名解析服務(wù)器的IP地址。 一般域名可以設(shè)置為所處網(wǎng)絡(luò)的網(wǎng)關(guān)地址,比如我的局域網(wǎng)的網(wǎng)關(guān)是192.168.10.1,也可以設(shè)置為運營商的域名解析服務(wù)器地址:114.114.114.114

在rootfs中新建文件/etc/resolv.conf,然后在里面輸入如下內(nèi)容:

nameserver 114.114.114.114
nameserver 192.168.10.1

修改保存退出,再次ping一下百度網(wǎng)站,可以看出 ping成功了!

圖片

至此! 根文件系統(tǒng)就徹底的制作完成。 uboot、kernel、rootfs這三個共同構(gòu)成了一個完整的 Linux系統(tǒng),這個系統(tǒng)是一個可以正常運行的系統(tǒng),可以在這個系統(tǒng)上進行 Linux驅(qū)動開發(fā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1416

    瀏覽量

    41445
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213849
  • busybox
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    11504
  • 根文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    12284
  • rootfs
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    4812
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用i.MX6ULL開發(fā)板進行Linux根文件系統(tǒng)完善

    上一篇推文講了怎么移植根文件系統(tǒng),并在i.MX6ULL開發(fā)板中運行起來,但是會出現(xiàn)一些提示,現(xiàn)在來進行根文件完善
    發(fā)表于 10-17 11:13 ?993次閱讀

    談?wù)勈裁词?b class='flag-5'>文件系統(tǒng) 文件系統(tǒng)的功能與特點

    文件系統(tǒng)的應(yīng)用非常廣泛,同時種類也是特別的多,并且不同平臺也會使用不同性能和特點的文件系統(tǒng),比如查找效率、數(shù)據(jù)安全等級等等,如下面windows使用的NTFS:
    發(fā)表于 08-30 09:50 ?3914次閱讀
    談?wù)勈裁词?b class='flag-5'>文件系統(tǒng)</b> <b class='flag-5'>文件系統(tǒng)</b>的功能與特點

    申精:郭天祥ARM9視頻教程TX2440、S3C2440+光盤原理圖 全!!!6G...

    目錄結(jié)構(gòu)詳解3. 配置,編譯busybox4. 完善根文件系統(tǒng)5. 制作yaffs鏡像第十八講應(yīng)用程序的移植1. NFS文件系統(tǒng)的掛載2. 移植嵌入式web服務(wù)器Boa3. 移植madplay音樂播放器
    發(fā)表于 09-27 12:22

    [原創(chuàng)]【UT4418試用體驗】busybox制作跟文件系統(tǒng)

    在當前目錄下的 _install 目錄下。步驟4: 完善根文件系統(tǒng)與庫文件。# arm-none-linux-gnueabi-readelf -d命令查看需要依賴的庫文件。在
    發(fā)表于 10-20 22:04

    郭天祥ARM9視頻教程TX2440、S3C2440+光盤原理圖資料下載

    第十七講 用busybox制作根文件系統(tǒng) 1. 嵌入式文件系統(tǒng)介紹 2. Linux目錄結(jié)構(gòu)詳解 3. 配置,編譯busybox 4. 完善根文件系統(tǒng) 5. 制作yaffs鏡像 第十
    發(fā)表于 07-06 07:09

    Linux文件系統(tǒng)課程

    本章學(xué)習(xí)目標理解什么是文件系統(tǒng)了解文件系統(tǒng)工作原理理解Fedora Core Linux文件系統(tǒng)的結(jié)構(gòu)掌握Fedora Core Linux文件系統(tǒng)的類型、權(quán)限和修改方法掌握如何安裝、
    發(fā)表于 04-10 17:07 ?0次下載

    NTFS文件系統(tǒng),NTFS文件系統(tǒng)是什么意思

    NTFS文件系統(tǒng),NTFS文件系統(tǒng)是什么意思 NTFS是Windows NT以及之后的Windows 2000、Windows XP、Windows Server 2003、Windows Server 2008
    發(fā)表于 03-29 10:38 ?6216次閱讀

    XfS文件系統(tǒng),XfS文件系統(tǒng)是什么意思

    XfS文件系統(tǒng),XfS文件系統(tǒng)是什么意思 XfS文件系統(tǒng)是SGI開發(fā)的高級日志文件系統(tǒng),XFS極具伸縮性,非常健壯。所幸的是SGI將其移植到了Lin
    發(fā)表于 03-29 10:39 ?4392次閱讀

    FatFs文件系統(tǒng)使用

    STM系列FatFs文件系統(tǒng)使用文件,希望對大家有幫助。
    發(fā)表于 11-06 18:10 ?8次下載

    文件系統(tǒng)是什么?淺談EXT文件系統(tǒng)歷史

    在先前關(guān)于Linux文件系統(tǒng)的文章中,我很想去深入地討論更多EXT文件系統(tǒng)的特性的信息。所以,首先讓我們來回答這個問題:什么是文件系統(tǒng)?一個文件系統(tǒng)應(yīng)該遵循以下特點。
    發(fā)表于 06-28 09:03 ?5973次閱讀
    <b class='flag-5'>文件系統(tǒng)</b>是什么?淺談EXT<b class='flag-5'>文件系統(tǒng)</b>歷史

    Linux 內(nèi)核/sys 文件系統(tǒng)介紹

    linux2.6內(nèi)核引入sysfs文件系統(tǒng),sysfs可以看成與proc,devfs和devpty同類別的文件系統(tǒng),該文件系統(tǒng)是虛擬的文件系統(tǒng),可以更方便對
    發(fā)表于 04-25 16:20 ?4511次閱讀
    Linux 內(nèi)核/sys <b class='flag-5'>文件系統(tǒng)</b>介紹

    FATFS文件系統(tǒng)詳解

    一、文件系統(tǒng)負責(zé)管理和存儲文件信息的軟件機構(gòu)稱為文件管理系統(tǒng),簡稱文件系統(tǒng)。即在磁盤上組織文件
    發(fā)表于 11-29 09:51 ?30次下載
    FATFS<b class='flag-5'>文件系統(tǒng)</b>詳解

    FATFS文件系統(tǒng)原版文件下載

    FATFS文件系統(tǒng)原版文件下載
    發(fā)表于 06-25 09:02 ?0次下載

    i.MX6ULL嵌入式Linux開發(fā)5-根文件系統(tǒng)完善

    上篇文章,使用BusyBox構(gòu)建了基礎(chǔ)的嵌入式Linux系統(tǒng)的根文件系統(tǒng),基本的功能可以正常運行,但在個基礎(chǔ)功能上,還要許多地方需要完善
    的頭像 發(fā)表于 03-14 08:44 ?1714次閱讀
    i.MX6ULL嵌入式Linux開發(fā)5-根<b class='flag-5'>文件系統(tǒng)</b><b class='flag-5'>完善</b>

    Linux的文件系統(tǒng)特點

    Linux的文件系統(tǒng)特點 文件系統(tǒng)要有嚴格的組織形式,使得文件能夠以塊為單位進行存儲。 文件系統(tǒng)中也要有索引區(qū),用來方便查找一個文件分成的多
    的頭像 發(fā)表于 11-09 14:48 ?1681次閱讀
    Linux的<b class='flag-5'>文件系統(tǒng)</b>特點