女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

碼農(nóng)愛(ài)學(xué)習(xí) ? 來(lái)源:碼農(nóng)愛(ài)學(xué)習(xí) ? 作者:碼農(nóng)愛(ài)學(xué)習(xí) ? 2022-03-14 08:44 ? 次閱讀

上篇文章,使用BusyBox構(gòu)建了基礎(chǔ)的嵌入式Linux系統(tǒng)的根文件系統(tǒng),基本的功能可以正常運(yùn)行,但在個(gè)基礎(chǔ)功能上,還要許多地方需要完善。

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

上篇說(shuō)道,Linux系統(tǒng)運(yùn)行起來(lái)后,可以正常的執(zhí)行"ls"等基礎(chǔ)命令,但仔細(xì)觀察系統(tǒng)運(yùn)行后的打印信息,有一條提示:

can't run '/etc/init.d/rcS': No such file pngor directory 
pYYBAGIuBM6AJJ7_AADgfz1s3aY959.png

說(shuō)是無(wú)法運(yùn)行“/etc/init.d/rcS”這個(gè)文件,因?yàn)楦募到y(tǒng)(rootfs)里沒(méi)有這個(gè)文件。這個(gè)rcS是什么呢?它其實(shí)是一個(gè)shell腳本, 在Linux內(nèi)核啟動(dòng)以后,需要啟動(dòng)一些服務(wù), 而rcS就是規(guī)定啟動(dòng)哪些文件的腳本文件。

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

在rootfs中創(chuàng)建/etc/init.d/rcS文件(前兩級(jí)目錄不存在,要先創(chuàng)建文件夾,再創(chuàng)建文件),然后在rcS中輸入如下所示內(nèi)容:

#!/bin/sh 
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib 
export PATH LD_LIBRARY_PATH  

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

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

各行含義如下:

PATH環(huán)境變量:保存著可執(zhí)行文件可能存在的目錄,這樣我們?cè)趫?zhí)行一些命令或者可執(zhí)行文件的時(shí)候就不會(huì)提示找不到文件這樣的錯(cuò)誤。

LD_LIBRARY_PATH環(huán)境變量:保存著庫(kù)文件所在的目錄

export命令:用來(lái)導(dǎo)出上面這些環(huán)境變量,相當(dāng)于聲明一些“全局變量” 。

mount命令:用來(lái)掛載所有的文件系統(tǒng),這些文件系統(tǒng)由文件/etc/fstab來(lái)指定,所以后續(xù)還要?jiǎng)?chuàng)建/etc/fstab文件。

mkdir命令創(chuàng)建目錄/dev/pts,然后將devpts掛載到/dev/pts目錄中。

最后兩行使用mdev來(lái)管理熱插拔設(shè)備,通過(guò)這兩行,Linux內(nèi)核就可以在/dev目錄下自動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)。

創(chuàng)建好/etc/init.d/rcS后還定要給其可執(zhí)行權(quán)限(chmod 777)。

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

上面說(shuō)道,rcS在掛載所用的文件系統(tǒng)時(shí),這些文件系統(tǒng)由文件/etc/fstab 來(lái)指定,所以還要?jiǎng)?chuàng)建/etc/fstab文件。

在rootfs中創(chuàng)建 /etc/fstab文件, fstab在Linux開(kāi)機(jī)以后自動(dòng)配置哪些需要自動(dòng)掛載的分區(qū),格式如下:

:要掛載的特殊設(shè)備,也可以是塊設(shè)備,比如/dev/sda等

掛載點(diǎn)

文件系統(tǒng)類型,如ext2、ext3、proc、romfs、tmpfs等

掛載選項(xiàng),一般使用默認(rèn)的defaults(包含了 rw、suid、dev、exec、auto、nouser和async)

:為1表示允許備份,為0不備份一般不備份

磁盤(pán)檢查設(shè)置,為0表示不檢查。根目錄‘/’設(shè)置為 1,其他的分區(qū)從2開(kāi)始。一般不在fstab中掛載根目錄,一般設(shè)置為0

按照上述格式,在fstab文件中輸入如下內(nèi)容(第1行是注釋):

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

fstab文件創(chuàng)建完成以后,啟動(dòng)開(kāi)發(fā)板,可以看出,啟動(dòng)成功,且沒(méi)有提示rcS

poYBAGIuBNmAWDDFAACkEnGOU-o203.png

注:以上兩個(gè)文件,可以直接在ubuntu的nfs文件中添加,也可以先通過(guò)板子的串口連接到nfs后,在串口窗口操作。我是在ubuntu中操作,然后再連接板子啟動(dòng)。

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

系統(tǒng)啟動(dòng)已經(jīng)沒(méi)有錯(cuò)誤提示了,但我們要仍要?jiǎng)?chuàng)建另一個(gè)文件/etc/inittab ,這個(gè)文件用于busyboxd的初始化,init 程序會(huì)讀取/etc/inittab這個(gè)文件。

inittab由若干條指令組成,每條指令的結(jié)構(gòu)都是以“:”分隔4個(gè)段組成,格式如下:

:::

每個(gè)指令的標(biāo)識(shí)符,不能重復(fù)。但是對(duì)于busybox的init 來(lái)說(shuō),有著特殊意義。對(duì)于busybox而言用來(lái)指定啟動(dòng)進(jìn)程的控制 tty,一般我們將串口或者 LCD 屏幕設(shè)置為控 制 tty。

:對(duì)busybox來(lái)說(shuō)此項(xiàng)完全沒(méi)用,所以空著。

:動(dòng)作,用于指定可能用到的動(dòng)作。

:具體的動(dòng)作,比如程序、腳本或命令等。

參考busyboxd的examples/inittab文件,來(lái)創(chuàng)建一個(gè)/etc/inittab,輸入如下內(nèi)容:

#etc/inittab 
::sysinit:/etc/init.d/rcS 
console::askfirst:-/bin/sh 
::restart:/sbin/init 
::ctrlaltdel:/sbin/reboot 
::shutdown:/bin/umount -a -r 
::shutdown:/sbin/swapoff -a 

第 2 行:系統(tǒng)啟動(dòng)以后運(yùn)行 /etc/init.d/rcS這個(gè)腳本文件。

第 3 行:將console作為控制臺(tái)終端,也就是ttymxc0。

第 4 行:重啟將運(yùn)行 /sbin/init

第 5 行:按下ctrl+alt+del組合鍵的將運(yùn)行 /sbin/reboot(注:windows系統(tǒng)的串口軟件連接開(kāi)發(fā)板,這個(gè)命令無(wú)效,因?yàn)樵摻M合鍵會(huì)被windows系統(tǒng)攔截而執(zhí)行windows系統(tǒng)的ctrl+alt+del組合鍵命令)。

第 6 行:關(guān)機(jī)的時(shí)候執(zhí)行 /bin/umount,也就是卸載各個(gè)文件系統(tǒng)

第 7 行:關(guān)機(jī)的時(shí)候執(zhí)行 /sbin/swapoff,也就是關(guān)閉交換分區(qū)

注:我在ubuntu上編輯測(cè)文件時(shí),console行出現(xiàn)了紅色背景塊,但似乎也沒(méi)什么影響

pYYBAGIuBOuAV4ZXAABCook51Dc438.png

/etc/inittab文件創(chuàng)建好以后就可以重啟開(kāi)發(fā)板即可, 至此,根文件系統(tǒng)要?jiǎng)?chuàng)建的文件就已經(jīng)全部完成了

總結(jié)一下剛才創(chuàng)建的目錄文件,如下圖

pYYBAGIuBPaAdNuoAAAlG0fqAqk350.png

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

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

2.1 軟件運(yùn)行測(cè)試

先來(lái)編寫(xiě)一個(gè)簡(jiǎn)單的c語(yǔ)言程序運(yùn)行一下,驗(yàn)證庫(kù)文件是否能用

先在ubuntu的rootfs中(可以先創(chuàng)建一個(gè)單獨(dú)的test文件夾用來(lái)測(cè)試)創(chuàng)建一個(gè)hello.c:

#include 

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

然后使用交叉編譯鏈來(lái)編譯程序:

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

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

pYYBAGIuBP2ARoFgAAF5JrQ8fIk289.png

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

在ubunt中編譯完后,重啟開(kāi)發(fā)板,在開(kāi)發(fā)板的串口中(串口軟件),運(yùn)行hello文件:

poYBAGIuBQOAEscYAABXTk8bUCI256.png

程序每隔2秒打印一次,運(yùn)行正常,說(shuō)明我根文件系統(tǒng)中的動(dòng)態(tài)庫(kù)沒(méi)有問(wèn)題。按下“ctrl+c”組合鍵即可中止該程序。

該程序運(yùn)行起來(lái),會(huì)占用交互窗口,可以讓hello進(jìn)入后臺(tái)運(yùn)行,方法是在運(yùn)行軟件的時(shí)候加上“&”,即:./hello &

注意:程序在后臺(tái)運(yùn)行時(shí),交互串口仍是有打印的,只是這時(shí)我們可以敲回車(chē)鍵來(lái)輸入命令了,與程序的輸出互不影響,唯一的影響是程序的輸出會(huì)打斷我們的輸入,但可以不理會(huì)打斷,繼續(xù)輸入命令仍是可以執(zhí)行命令的。

在后臺(tái)運(yùn)行的程序,可以使用ps命令來(lái)查看各個(gè)進(jìn)程的id,然后使用kill -9 pid(進(jìn)程 ID)命令來(lái)關(guān)閉掉當(dāng)前運(yùn)行的程序。

如下圖,輸入ps命令,可以看到hello程序的進(jìn)程為101,此時(shí)先敲回車(chē)鍵,彈出井號(hào)提示符,然后輸入kill -9 101,再回車(chē),就可以看到hello進(jìn)程被殺掉了。

pYYBAGIuBQmAC9sJAABZg8CuRpI882.png

2.2 開(kāi)機(jī)自啟動(dòng)測(cè)試

玩過(guò)單片機(jī)的都知道,單片機(jī)的程序燒錄進(jìn)去后,上電就自動(dòng)開(kāi)始運(yùn)行了。那linux系統(tǒng),寫(xiě)了一個(gè)程序,可以像單片機(jī)那樣開(kāi)機(jī)就運(yùn)行嗎,當(dāng)然是可以的!

實(shí)現(xiàn)開(kāi)機(jī)自啟動(dòng)的原理也很簡(jiǎn)單,linux在啟動(dòng)時(shí),有一個(gè)默認(rèn)的開(kāi)機(jī)啟動(dòng)腳本(/etc/init.d/rcS這個(gè)shell文件),因此修改這個(gè)腳本,添加自啟動(dòng)相關(guān)內(nèi)容即可:

poYBAGIuBRGABj4QAAC1LZbGuow591.png

自啟動(dòng)代碼添加完成以后,重啟開(kāi)發(fā)板,可以看到hello這個(gè)軟件已經(jīng)開(kāi)機(jī)時(shí)自動(dòng)運(yùn)行了:

pYYBAGIuBRaAVcpbAACcYb3KAio360.png

2.3 外網(wǎng)連接測(cè)試

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

/ # ping qq.com
ping: bad address 'qq.com'
/ # 

在網(wǎng)絡(luò)連接正常的情況下,無(wú)法ping通這些網(wǎng)址,是因?yàn)槿鄙?strong>域名解析服務(wù),需要配置域名解析服務(wù)器的IP地址。

一般域名可以設(shè)置為所處網(wǎng)絡(luò)的網(wǎng)關(guān)地址,比如我的局域網(wǎng)的網(wǎng)關(guān)是192.168.5.1。

也可以設(shè)置為運(yùn)營(yíng)商的域名解析服務(wù)器地址:114.114.114.114。

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

nameserver 114.114.114.114
nameserver 192.168.5.1

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

poYBAGIuBRyAeInyAACcL2BlP8Y373.png

3 結(jié)語(yǔ)

至此!根文件系統(tǒng)的完善工作也完成了。

再來(lái)看一下本篇對(duì)文件都有哪些修改:

pYYBAGIuBSSADjXuAAB_QPT-_3A361.png

linux移植三巨頭:uboot、kernel、rootfs已移植完畢,接下來(lái)可以將這三部分整體打包一下,方便系統(tǒng)的通用燒寫(xiě),下篇見(jiàn)~

審核編輯:湯梓紅

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

    關(guān)注

    87

    文章

    11456

    瀏覽量

    212726
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    578

    瀏覽量

    25190
  • 嵌入式L
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6725
收藏 人收藏

    評(píng)論

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

    飛凌嵌入式ElfBoard ELF 1板卡-Uboot

    /SourceCode下載。不過(guò)我們目前使用的uboot源碼不是在這個(gè)網(wǎng)站下載的,而是由NXP公司提供的。NXP公司在推廣i.MX6ULL芯片時(shí),會(huì)開(kāi)發(fā)出一套i.MX6ULL EVK評(píng)估板給客戶進(jìn)行評(píng)估,同時(shí)也有
    發(fā)表于 05-22 10:44

    「2025恩智浦創(chuàng)新技術(shù)峰會(huì)」飛凌嵌入式亮相上海首站

    ,展示其在低成本人工智能、工業(yè)物聯(lián)網(wǎng)等領(lǐng)域的創(chuàng)新成果。此次峰會(huì),飛凌嵌入式帶來(lái)了基于恩智浦i.MX95xx、i.MX9352、i.MX8MPlus和
    的頭像 發(fā)表于 05-15 13:38 ?396次閱讀
    「2025恩智浦創(chuàng)新技術(shù)峰會(huì)」飛凌<b class='flag-5'>嵌入式</b>亮相上海首站

    ECB20-PG6Y28C-I 單板機(jī)深度測(cè)評(píng)報(bào)告 ——工業(yè)級(jí)嵌入式開(kāi)發(fā)的強(qiáng)力助手

    ECB20-PG6Y28C-I?是成都億佰特電子科技基于 i.MX6ULL 處理器推出的工業(yè)級(jí)測(cè)試底板,搭配 ECK20-6Y28C 系列核心板,專為高性能嵌入式場(chǎng)景設(shè)計(jì)。其核心亮點(diǎn)在
    的頭像 發(fā)表于 04-22 11:49 ?163次閱讀

    如何在i.MX6ULL睡眠時(shí)停止刷新LCD?

    為了更好的 EMC,我們需要在 i.MX6ULL 進(jìn)入睡眠狀態(tài)時(shí)停止 LCD 刷新。 能否實(shí)現(xiàn) ? 平臺(tái): i.MX6ULL 系統(tǒng)Linux
    發(fā)表于 04-03 07:14

    如何維護(hù)i.MX6ULL的安全內(nèi)核?

    為 5.15.158。 因此,我們想知道:是否有可能基于這個(gè) BSP 平臺(tái)實(shí)現(xiàn)安全的 i.MX 6ULL 系統(tǒng)?您會(huì)推薦上游的 linux-fslc 還是
    發(fā)表于 04-01 08:28

    如何正確選擇嵌入式文件系統(tǒng)

    Linux嵌入式系統(tǒng)中,文件系統(tǒng)和緩存機(jī)制常導(dǎo)致數(shù)據(jù)存儲(chǔ)穩(wěn)定性問(wèn)題。本文通過(guò)案例分析原因,對(duì)比不同文件系統(tǒng)特性,為
    的頭像 發(fā)表于 03-17 11:35 ?420次閱讀
    如何正確選擇<b class='flag-5'>嵌入式</b><b class='flag-5'>文件系統(tǒng)</b>?

    GoPoint嵌入式開(kāi)發(fā)平臺(tái) 釋放i.MX潛力 簡(jiǎn)化Linux開(kāi)發(fā)

    地進(jìn)行創(chuàng)新。 在快節(jié)奏的嵌入式系統(tǒng)時(shí)代,時(shí)間是開(kāi)發(fā)人員最寶貴的資源。GoPoint (過(guò)去名為NXP Demo Experience) 重新定義了評(píng)估和探索過(guò)程,開(kāi)發(fā)人員能夠快速評(píng)估
    發(fā)表于 02-28 10:07 ?484次閱讀
    GoPoint<b class='flag-5'>嵌入式開(kāi)發(fā)</b>平臺(tái) 釋放<b class='flag-5'>i.MX</b>潛力 簡(jiǎn)化<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開(kāi)發(fā)板適配之USB_OTG

    i.MX6ULL通過(guò)檢測(cè)TYPE C類型的插頭內(nèi)的CC引腳線的高低,來(lái)判斷自己是工作在host模式還是device模式,ELF 1開(kāi)發(fā)板直接將CC(TYPE C座的CC1和CC2還有檢測(cè)插入方向的功能
    發(fā)表于 02-28 09:29

    飛凌嵌入式ElfBoard ELF 1板卡-開(kāi)發(fā)板適配之USB_OTG

    i.MX6ULL通過(guò)檢測(cè)TYPE C類型的插頭內(nèi)的CC引腳線的高低,來(lái)判斷自己是工作在host模式還是device模式,ELF 1開(kāi)發(fā)板直接將CC(TYPE C座的CC1和CC2還有檢測(cè)插入方向的功能,這里不
    發(fā)表于 02-27 09:16

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開(kāi)發(fā)板對(duì)比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開(kāi)發(fā)板對(duì)比
    的頭像 發(fā)表于 11-28 14:31 ?1182次閱讀
    【迅為電子】<b class='flag-5'>i.MX6</b>UL和<b class='flag-5'>i.MX6ULL</b>芯片區(qū)別與<b class='flag-5'>開(kāi)發(fā)</b>板對(duì)比

    【新品】i.MX6ULL工業(yè)嵌入式核心板!NXP低功耗MPU,LCD顯示

    核心板新品上市ECK20-6Y2XA系列核心板是億佰特基于NXPCortex-A7內(nèi)核i.MX6ULL處理器精心設(shè)計(jì)的,采用郵票孔連接的低成本、低功耗、高性價(jià)比、高可靠性的嵌入式核心板。可廣泛應(yīng)用于工業(yè)控制、HMI、IoT等領(lǐng)域
    的頭像 發(fā)表于 11-15 01:04 ?514次閱讀
    【新品】<b class='flag-5'>i.MX6ULL</b>工業(yè)<b class='flag-5'>嵌入式</b>核心板!NXP低功耗MPU,LCD顯示

    【北京迅為】i.mx8mm嵌入式linux開(kāi)發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開(kāi)發(fā)指南第四篇 嵌入式Linux
    的頭像 發(fā)表于 10-22 14:46 ?1067次閱讀
    【北京迅為】<b class='flag-5'>i.mx</b>8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>開(kāi)發(fā)</b>指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>移植篇第六十九章uboot移植

    Linux文件系統(tǒng)的掛載過(guò)程

    Linux文件系統(tǒng)(rootfs)是Linux系統(tǒng)中所有其他文件系統(tǒng)和目錄的起點(diǎn),它是內(nèi)核啟動(dòng)
    的頭像 發(fā)表于 10-05 16:50 ?829次閱讀

    如何構(gòu)建Linux文件系統(tǒng)

    構(gòu)建Linux文件系統(tǒng)是一個(gè)涉及多個(gè)步驟和概念的過(guò)程,它對(duì)于Linux系統(tǒng)的啟動(dòng)和運(yùn)行至關(guān)重要。
    的頭像 發(fā)表于 10-05 16:47 ?560次閱讀

    嵌入式linux開(kāi)發(fā)的基本步驟有哪些?

    嵌入式Linux開(kāi)發(fā)是一個(gè)復(fù)雜的過(guò)程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動(dòng)開(kāi)發(fā)、應(yīng)用程序開(kāi)發(fā)等多個(gè)
    的頭像 發(fā)表于 09-02 09:11 ?1038次閱讀