色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何完善根文件系統

CHANBAEK ? 來源:嵌入式攻城獅 ? 作者:安迪西 ? 2023-04-18 15:26 ? 次閱讀

1. 完善根文件系統

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

1.1 創建 /etc/init.d/rcS 文件

rcS 是個 shell腳本,Linux內核啟動后需要啟動一些服務,rcS就是規定啟動哪些文件的腳本文件。 在 rootfs中創建 /etc/init.d/rcS文件,命令如下:

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

然后在rcS文件中輸入如下內容:

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 環境變量保存著可執行文件可能存在的目錄
  • 第 4 行,LD_LIBRARY_PATH 環境變量保存著庫文件所在的目錄
  • 第 5 行,使用 export 來導出上面這些環境變量,相當于聲明“全局變量”
  • 第 7 行,使用 mount 命令來掛載所有的文件系統,這些文件系統由文件 /etc/fstab來指定,所以后續還要創建 /etc/fstab文件
  • 第 8 和 9 行,創建目錄/dev/pts,然后將 devpts掛載到 /dev/pts目錄中
  • 第 11 和 12 行,使用 mdev 來管理熱插拔設備,通過這兩行,內核就可以在 /dev 目錄下自動創建設備節點

創建好rcS文件后,賦予其可執行權限:

chmod 777 rcS

1.2 創建 /etc/fstab 文件

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

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

在 rootfs根文件系統中創建 /etc/fstab文件:

cd etc/
touch fstab

fstab文件內容如下:

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

1.3 創建/etc/inittab文件

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

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

參考 busybox的 examples/inittab文件,在 rootfs根文件系統中創建 /etc/inittab文件:

cd etc
touch inittab

inittab文件內容如下:

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 行,系統啟動以后運行/etc/init.d/rcS 這個腳本文件
  • 第 3 行,將 console 作為控制臺終端,也就是 ttymxc0
  • 第 4 行,重啟的話運行/sbin/init
  • 第 5 行,按下 ctrl+alt+del 組合鍵就運行/sbin/reboot,用于重啟系統
  • 第 6 行,關機的時候執行/bin/umount,也就是卸載各個文件系統
  • 第 7 行,關機的時候執行/sbin/swapoff,也就是關閉交換分區

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

2. 根文件系統其他功能測試

根文件系統已經完善了,接下來繼續測試根文件系統是否好用

2.1 軟件運行測試

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

在ubuntu的 rootfs中創建一個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的可執行文件,可以使用“file”命令查看文件類型以及編碼格式,見下圖

圖片

可見 hello是個32位的 LSB可執行文件,ARM架構的,并且是動態鏈接的

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

圖片

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

圖片

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

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

圖片

2.2 中文字符測試

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

圖片

2.3 開機自啟動測試

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

########## /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所在文件夾再執行
cd /drivers 
./hello &
cd /

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

圖片

2.4 外網連接測試

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

圖片

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

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

nameserver 114.114.114.114
nameserver 192.168.10.1

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

圖片

至此! 根文件系統就徹底的制作完成。 uboot、kernel、rootfs這三個共同構成了一個完整的 Linux系統,這個系統是一個可以正常運行的系統,可以在這個系統上進行 Linux驅動開發。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1372

    瀏覽量

    40278
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209328
  • busybox
    +關注

    關注

    0

    文章

    21

    瀏覽量

    11294
  • 根文件系統
    +關注

    關注

    0

    文章

    25

    瀏覽量

    11979
  • rootfs
    +關注

    關注

    0

    文章

    19

    瀏覽量

    4665
收藏 人收藏

    評論

    相關推薦

    使用i.MX6ULL開發板進行Linux根文件系統完善

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

    談談什么是文件系統 文件系統的功能與特點

    文件系統的應用非常廣泛,同時種類也是特別的多,并且不同平臺也會使用不同性能和特點的文件系統,比如查找效率、數據安全等級等等,如下面windows使用的NTFS:
    發表于 08-30 09:50 ?2883次閱讀
    談談什么是<b class='flag-5'>文件系統</b> <b class='flag-5'>文件系統</b>的功能與特點

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

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

    [原創]【UT4418試用體驗】busybox制作跟文件系統

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

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

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

    Linux文件系統課程

    本章學習目標理解什么是文件系統了解文件系統工作原理理解Fedora Core Linux文件系統的結構掌握Fedora Core Linux文件系統的類型、權限和修改方法掌握如何安裝、
    發表于 04-10 17:07 ?0次下載

    NTFS文件系統,NTFS文件系統是什么意思

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

    XfS文件系統,XfS文件系統是什么意思

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

    FatFs文件系統使用

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

    《Linux設備驅動開發詳解》第5章、Linux文件系統與設備文件系統

    《Linux設備驅動開發詳解》第5章、Linux文件系統與設備文件系統
    發表于 10-27 14:13 ?0次下載
    《Linux設備驅動開發詳解》第5章、Linux<b class='flag-5'>文件系統</b>與設備<b class='flag-5'>文件系統</b>

    文件系統是什么?淺談EXT文件系統歷史

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

    Linux 內核/sys 文件系統介紹

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

    FATFS文件系統詳解

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

    FATFS文件系統原版文件下載

    FATFS文件系統原版文件下載
    發表于 06-25 09:02 ?0次下載

    Linux的文件系統特點

    Linux的文件系統特點 文件系統要有嚴格的組織形式,使得文件能夠以塊為單位進行存儲。 文件系統中也要有索引區,用來方便查找一個文件分成的多
    的頭像 發表于 11-09 14:48 ?1170次閱讀
    Linux的<b class='flag-5'>文件系統</b>特點
    主站蜘蛛池模板: 亚洲国产在线视频精品| 日本国产成人精品无码区在线网站| 色丁香婷婷综合缴情综| 顶级欧美不卡一区二区三区| 日韩人妻少妇一区二区三区| 叮当成人社区| 亚洲 日本 天堂 国产 在线| 黑色丝袜美腿美女被躁翻了| 孕妇bbwbbwbbwbbw超清| 麻豆国产99在线中文| a免费视频| 亚洲 日韩 欧美 国产专区| 久久国产热视频99rev6| jaPanesmature儿母| 乡村教师电影版| 嫩草伊人久久精品少妇AV网站| 成人毛片免费在线观看| 亚洲人视频在线观看| 免费在线视频a| 红番阁免费观看| gay吊粗大双龙| 一边亲着一面膜下的免费过程| 曼谷av女郎| 黄子佼81岁父亲现状曝光| 1234成人网| 亚洲色欲国产免费视频| 色女孩综合| 日本高清二区| 久草在线福利视频在线播放| 持田香织abc| aa级毛片毛片免费观看久| 中文字幕无线观看不卡网站 | 99久久久精品| 亚洲精品乱码久久久久久v| 日本一卡精品视频免费 | 欧美一级做a爰片免费| 精品无码一区二区三区不卡| 国产精品久久久久久人妻香蕉| 99国产这里只有精品视频| 真实的强视频免费网站| 亚洲综合色婷婷在线影院|