檔案系統學習(3)

2021-08-02 20:52:14 字數 1611 閱讀 8024

一、說在前面:在嵌入式中呢,首先uboot的最終目的是啟動我們的核心,核心的目的是啟動我們的應用程式。怎麼啟動的呢?

我們來分析下init_post()這個函式;

static

int noinline init_post(void)

//如果uboot中的bootargs中有設定init,if就會被執行。而且不帶返回。

run_init_process("/sbin/init");

run_init_process("/etc/init");

run_init_process("/bin/init");

run_init_process("/bin/sh");

//如果bootargs中沒設定init,核心就會執行以上目錄中的init之一

panic("no init found. try passing init= option to kernel.");

//如果都沒有init程式,核心啟動失敗

}

二、根檔案系統的構建對於嵌入式根檔案系統的構建,從零開始構建不太現實,我們利用busybox這開源專案來構建我們根檔案系統中的各個目錄以及所需的檔案。我們自己在其基礎進行新增修改,形成最終我們想要的根檔案系統。

busybox中init程式分析(linuxrc)

讀取配置檔案

解析配置檔案

執行使用者程式

int init_main(int argc, char **argv)

else

......

run_actions(sysinit);

//run_actions函式執行相關命令,即從init_action_list中讀取init_action結構,不同命令不同執行執行方式。對於respawn | askfirst命令有退出則重新執行。具體命令作用看原始碼。

.......

}

/etc/inittab檔案id : runlevels : action : process

id:終端裝置:/dev/id

runlevels:這一項忽略

action :何時執行process

process:應用程式或指令碼

/etc/init.d/rcs檔案

#!/bin/sh

ifconfig eth0 192.168.1.110

mount -a

#這條命令是指掛載/etc/fstab 中指定的檔案系統

注:rcs檔案是可執行的,是在inittab檔案中指定的,若不能執行則

chmod +x /etc/init.d/rcs

/etc/fstab檔案

該檔案指定需要掛載的檔案系統,當rcs檔案被執行到mount -a時,相應的檔案系統被掛載。

讓我們對fstab的用法進行乙個詳細的了解。乙個典型的entry有下面的fields (fields用空格或tab分開):

Fatfs檔案系統學習

移植過程網上有很多,直接參考就可以了。1 學習過程對api重新理解 f mout f mout fs,0 0 掛載 f mout 0,0 0 解除安裝 一直對解除安裝有錯誤的認識,一直以為解除安裝的時候第乙個形參還是 fs。2 英文長檔名的實現 英文長檔名的實現參考了這個朋友的帖子。define c...

檔案系統學習3 檔案系統相關操作流程

前文中講到了檔案系統有哪幾類操作,這裡對沒類操作檔案系統是如何定址,如果讀寫的進行乙個詳細的說明。1 目錄樹的讀取 所有對檔案的操作,給使用者看來第一步就是得知道這個檔案的目錄,所以首先就需要讀取目錄。每個目錄都是乙個檔案,該檔案存放該目錄下所有檔案的相關資訊,同樣該檔案也有對應的innode。簡答...

Irrlicht系統學習 檔案系統

irrlicht系統的檔案系統在頂層的介面當中提供了檔案的基本讀寫操作,在後面的實現中分了不同的型別,提供zip檔案,pak檔案,xml檔案以及普通檔案的操作,每個使用者可以根據不同的需求為自己定製乙個檔案型別,以及相對應的讀寫操作,在你的專案中可以使用壓縮以及加密。在irrlicht系統檔案系統的...