一、說在前面:在嵌入式中呢,首先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系統檔案系統的...