日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

碼農(nóng)愛學(xué)習(xí) ? 來源:碼農(nóng)愛學(xué)習(xí) ? 作者:碼農(nóng)愛學(xué)習(xí) ? 2022-03-14 08:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

說是無法運行“/etc/init.d/rcS”這個文件,因為根文件系統(tǒng)(rootfs)里沒有這個文件。這個rcS是什么呢?它其實是一個shell腳本, 在Linux內(nèi)核啟動以后,需要啟動一些服務(wù), 而rcS就是規(guī)定啟動哪些文件的腳本文件。

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

在rootfs中創(chuàng)建/etc/init.d/rcS文件(前兩級目錄不存在,要先創(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í)行文件可能存在的目錄,這樣我們在執(zhí)行一些命令或者可執(zhí)行文件的時候就不會提示找不到文件這樣的錯誤。

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

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

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

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

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

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

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

上面說道,rcS在掛載所用的文件系統(tǒng)時,這些文件系統(tǒng)由文件/etc/fstab 來指定,所以還要創(chuàng)建/etc/fstab文件。

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

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

掛載點

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

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

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

磁盤檢查設(shè)置,為0表示不檢查。根目錄‘/’設(shè)置為 1,其他的分區(qū)從2開始。一般不在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)建完成以后,啟動開發(fā)板,可以看出,啟動成功,且沒有提示rcS

poYBAGIuBNmAWDDFAACkEnGOU-o203.png

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

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

系統(tǒng)啟動已經(jīng)沒有錯誤提示了,但我們要仍要創(chuàng)建另一個文件/etc/inittab ,這個文件用于busyboxd的初始化,init 程序會讀取/etc/inittab這個文件。

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

:::

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

:對busybox來說此項完全沒用,所以空著。

:動作,用于指定可能用到的動作。

:具體的動作,比如程序、腳本或命令等。

參考busyboxd的examples/inittab文件,來創(chuàng)建一個/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)啟動以后運行 /etc/init.d/rcS這個腳本文件。

第 3 行:將console作為控制臺終端,也就是ttymxc0。

第 4 行:重啟將運行 /sbin/init

第 5 行:按下ctrl+alt+del組合鍵的將運行 /sbin/reboot(注:windows系統(tǒng)的串口軟件連接開發(fā)板,這個命令無效,因為該組合鍵會被windows系統(tǒng)攔截而執(zhí)行windows系統(tǒng)的ctrl+alt+del組合鍵命令)。

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

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

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

pYYBAGIuBOuAV4ZXAABCook51Dc438.png

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

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

pYYBAGIuBPaAdNuoAAAlG0fqAqk350.png

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

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

2.1 軟件運行測試

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

先在ubuntu的rootfs中(可以先創(chuàng)建一個單獨的test文件夾用來測試)創(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”命令查看文件類型以及編碼格式:

pYYBAGIuBP2ARoFgAAF5JrQ8fIk289.png

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

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

poYBAGIuBQOAEscYAABXTk8bUCI256.png

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

該程序運行起來,會占用交互窗口,可以讓hello進入后臺運行,方法是在運行軟件的時候加上“&”,即:./hello &。

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

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

如下圖,輸入ps命令,可以看到hello程序的進程為101,此時先敲回車鍵,彈出井號提示符,然后輸入kill -9 101,再回車,就可以看到hello進程被殺掉了。

pYYBAGIuBQmAC9sJAABZg8CuRpI882.png

2.2 開機自啟動測試

玩過單片機的都知道,單片機的程序燒錄進去后,上電就自動開始運行了。那linux系統(tǒng),寫了一個程序,可以像單片機那樣開機就運行嗎,當(dāng)然是可以的!

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

poYBAGIuBRGABj4QAAC1LZbGuow591.png

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

pYYBAGIuBRaAVcpbAACcYb3KAio360.png

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

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

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

在網(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.5.1。

也可以設(shè)置為運營商的域名解析服務(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é)語

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

再來看一下本篇對文件都有哪些修改:

pYYBAGIuBSSADjXuAAB_QPT-_3A361.png

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

審核編輯:湯梓紅

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

    關(guān)注

    88

    文章

    11822

    瀏覽量

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

    關(guān)注

    1

    文章

    598

    瀏覽量

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

    關(guān)注

    0

    文章

    5

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    i.MX6ULL能否接受來自外部振蕩器的直接50 MHz輸入?

    我們正在將 LAN8710A-EZK PHY 與 RMII 模式下的 i.MX6ULL 集成,需要澄清有關(guān) 50 MHz 參考時鐘的信息。 由于RMII需要50 MHz時鐘,i.MX6ULL能否接受
    發(fā)表于 04-17 06:05

    開發(fā)一個基于運行 Yocto 的 i.MX6ULL 的定制板,如何減少啟動時間?

    我正在開發(fā)一個基于運行 Yocto 的 i.MX6ULL 的定制板,我想盡可能減少啟動時間。 到目前為止,我已經(jīng): 禁用內(nèi)核中所有不必要的選項 (menuconfig) 將 Yocto 圖像減少到
    發(fā)表于 04-16 08:26

    Linux開發(fā)嵌入式必備命令速查表

    嵌入式開發(fā)中,Linux系統(tǒng)幾乎成為必備的開發(fā)環(huán)境。不管你是在做STM32、RaspberryPi、還是基于ARM的板子,熟練掌握Linux
    的頭像 發(fā)表于 01-19 09:06 ?1053次閱讀
    <b class='flag-5'>Linux</b> 下<b class='flag-5'>開發(fā)</b><b class='flag-5'>嵌入式</b>必備命令速查表

    從小白到大牛:Linux嵌入式系統(tǒng)開發(fā)的完整指南

    開發(fā)基礎(chǔ):內(nèi)核是嵌入式 Linux 的靈魂,需理解內(nèi)核啟動流程(Bootloader→內(nèi)核初始化→文件系統(tǒng)掛載),掌握內(nèi)核配置(make
    發(fā)表于 12-16 10:42

    明晚8點|睿擎文件系統(tǒng)實戰(zhàn):從開發(fā)到發(fā)布全流程解析

    文件操作到鏡像發(fā)布,一次直播掌握完整開發(fā)流程!在嵌入式系統(tǒng)開發(fā)中,文件系統(tǒng)是數(shù)據(jù)存儲、配置管理和資源訪問的核心基礎(chǔ)。然而在實際
    的頭像 發(fā)表于 11-11 11:53 ?822次閱讀
    明晚8點|睿擎<b class='flag-5'>文件系統(tǒng)</b>實戰(zhàn):從<b class='flag-5'>開發(fā)</b>到發(fā)布全流程解析

    Linux三大主流文件系統(tǒng)解析

    還在為選擇哪個文件系統(tǒng)而糾結(jié)?作為一名摸爬滾打多年的運維老鳥,我將用最接地氣的方式,帶你徹底搞懂 Linux 三大主流文件系統(tǒng)的奧秘。
    的頭像 發(fā)表于 08-05 17:37 ?1779次閱讀

    PX5 FILE嵌入式文件系統(tǒng)通過功能安全認(rèn)證

    4認(rèn)證級別的應(yīng)用場景。PX5 FILE是唯一獲得此等級功能安全認(rèn)證的精簡的嵌入式文件系統(tǒng),該認(rèn)證屬于IEC 61508功能安全認(rèn)證類別中的最高級別。
    的頭像 發(fā)表于 07-03 09:18 ?1411次閱讀

    Linux嵌入式和單片機嵌入式的區(qū)別?

    區(qū)別 單片機嵌入式系統(tǒng)Linux嵌入式系統(tǒng)是兩種不同的嵌入式
    發(fā)表于 06-20 09:46

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)簡介

    /服務(wù)器上Linux文件系統(tǒng)是一樣的,只是嵌入式Linux文件系統(tǒng)根據(jù)產(chǎn)品功能進行過裁剪,在內(nèi)容多少和體積大小上不同。進行
    發(fā)表于 06-19 17:22

    瑞芯微RK3506 vs NXP i.MX6ULL

    NXPi.MX6ULL核心板進行多方面對比。性能與能效對比性能優(yōu)勢對比:RK3506在接口方面比i.MX6ULL少2個UART,其他性能方面,RK3506以三核A7(1.
    的頭像 發(fā)表于 06-19 16:26 ?1580次閱讀
    瑞芯微RK3506 vs NXP <b class='flag-5'>i.MX6ULL</b>

    新品!米爾NXP i.MX 91核心板,賦能新一代入門級Linux應(yīng)用

    米爾電子基于與NXP長期合作的嵌入式處理器開發(fā)經(jīng)驗,在i.MX6i.MX8系列核心板領(lǐng)域已形成完整產(chǎn)品矩陣,米爾累計推出5個平臺共計二十余
    的頭像 發(fā)表于 05-29 08:01 ?3110次閱讀
    新品!米爾NXP <b class='flag-5'>i.MX</b> 91核心板,賦能新一代入門級<b class='flag-5'>Linux</b>應(yīng)用

    飛凌嵌入式ElfBoard ELF 1板卡-uboot配置詳解

    都是uboot可以支持的不同平臺的配置文件。我們只關(guān)心跟i.MX6ULL相關(guān)的_defconfig,輸入命令:elf@ubuntu:~/work
    發(fā)表于 05-22 11:14

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

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

    【書籍評測活動NO.61】Yocto項目實戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)

    用的嵌入式 Linux 構(gòu)建工具之一是 Buildroot。盡管 Buildroot 能在較短時間內(nèi)提供簡單的嵌入式系統(tǒng),但它的局限性在于對復(fù)雜項目和頻繁變化的軟硬件需求的支持不足。隨
    發(fā)表于 05-21 10:00

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

    ,展示其在低成本人工智能、工業(yè)物聯(lián)網(wǎng)等領(lǐng)域的創(chuàng)新成果。此次峰會,飛凌嵌入式帶來了基于恩智浦i.MX95xx、i.MX9352、i.MX8MPlus和
    的頭像 發(fā)表于 05-15 13:38 ?1653次閱讀
    「2025恩智浦創(chuàng)新技術(shù)峰會」飛凌<b class='flag-5'>嵌入式</b>亮相上海首站
    法库县| 中卫市| 兴隆县| 大足县| 凤冈县| 嘉祥县| 盐亭县| 杨浦区| 遂平县| 重庆市| 遵化市| 江都市| 蕉岭县| 德兴市| 武安市| 澜沧| 托里县| 和顺县| 深圳市| 卢氏县| 平湖市| 乌鲁木齐市| 宁国市| 内黄县| 望都县| 盘山县| 蓬溪县| 武冈市| 清镇市| 兴和县| 新巴尔虎右旗| 镇安县| 谢通门县| 贵州省| 浮梁县| 进贤县| 西华县| 榆树市| 万盛区| 常州市| 高青县|