linux的進程1:rootfs與linuxrc


 在內核啟動的最后階段啟動了三個進程

進程0:進程0其實就是剛才講過的idle進程,叫空閑進程,也就是死循環。
進程1:kernel_init函數就是進程1,這個進程被稱為init進程。
進程2:kthreadd函數就是進程2,這個進程是linux內核的守護進程。這個進程是用來保證linux內核自己本身能正常工作的

在嵌入式操作系統中一般會指定/linuxrc為init進程。

1、/linuxrc是一個可執行的應用程序
(1)/linuxrc是應用層的,和內核源碼一點關系都沒有
(2)/linuxrc在開發板當前內核系統下是可執行的。因此在ARM SoC的linux系統下,這個應用程序就是用arm-linux-gcc編譯鏈接的;如果是在PC機linux系統下,那么這個程序就是用gcc編譯連接的。
(3)/linuxrc如果是靜態編譯連接的那么直接可以運行;如果是動態編譯連接的那么我們還必須給他提供必要的庫文件才能運行。但是因為我們/linuxrc這個程序是由內核直接調用執行的,因此用戶沒有機會去導出庫文件的路徑,因此實際上這個/linuxrc沒法動態連接,一般都是靜態連接的。

2、/linuxrc執行時引出用戶界面
(1)操作系統啟動后在一系列的自己運行配置之后,最終會給用戶一個操作界面(也許是cmdline,也許是GUI),這個用戶操作界面就是由/linuxrc帶出來的。
(2)用戶界面等很多事並不是在/linuxrc程序中負責的,用戶界面有自己專門的應用程序,但是用戶界面的應用程序是直接或者間接的被/linuxrc調用執行的。用戶界面程序和其他的應用程序就是進程2、3、4·····,這就是我們說的進程1(init進程,也就是/linuxrc)是其他所有應用程序進程的祖宗進程。

3、/linuxrc負責系統啟動后的配置
(1)就好像一個房子建好之后不能直接住,還要裝修一樣;操作系統啟動起來后也不能直接用,要配置下。
(2)操作系統啟動后的應用層的配置(一般叫運行時配置,英文簡寫etc)是為了讓我們的操作系統用起來更方便,更適合我個人的愛好或者實用性。

4、/linuxrc在嵌入式linux中一般就是busybox
(1)busybox是一個C語言寫出來的項目,里面包含了很多.c文件和.h文件。這個項目可以被配置編譯成各個平台下面可以運行的應用程序。我們如果用arm-linux-gcc來編譯busybox就會得到一個可以在我們開發板linux內核上運行的應用程序。
(2)busybox這個程序開發出來就是為了在嵌入式環境下構建rootfs使用的,也就是說他就是專門開發的init進程應用程序。
(3)busybox為當前系統提供了一整套的shell命令程序集。譬如vi、cd、mkdir、ls等。在桌面版的linux發行版(譬如ubuntu、redhat、centOS等)中vi、cd、ls等都是一個一個的單獨的應用程序。但是在嵌入式linux中,為了省事我們把vi、cd等所有常用的shell命令集合到一起構成了一個shell命令包,起名叫busybox。

 

 

根目錄rootfs中還應該有什么

1、最重要的就是上節課講過的/linuxrc
2、dev目錄下的設備文件。在linux中一切皆是文件,因此一個硬件設備也被虛擬化成一個設備文件來訪問,在linux系統中/dev/xxx就表示一個硬件設備,我們要操作這個硬件時就是open打開這個設備文件,然后read/write/ioctl操作這個設備,最后close關閉這個設備。
在最小rootfs中/dev目錄也是不可少的,這里面有一兩個設備文件是rootfs必須的。
3、sys和proc目錄。在最小rootfs中也是不可省略的,但是這兩個只要創建了空文件夾即可,里面是沒東西的,也不用有東西。這兩個目錄也是和驅動有關的。屬於linux中的虛擬文件系統。
4、usr是系統的用戶所有的一些文件的存放地,這個東西將來busybox安裝時會自動生成。
5、etc目錄是很關鍵很重要的一個,目錄中的所有文件全部都是運行時配置文件。/etc目錄下的所有配置文件會直接或者間接的被/linuxrc所調用執行,完成操作系統的運行時配置。etc目錄是制作rootfs的關鍵,所以后面下一個課程專門講這個etc目錄。
6、lib目錄也是rootfs中很關鍵的一個,不能省略的一個。lib目錄下放的是當前操作系統中的動態和靜態鏈接庫文件。我們主要是為了其中的動態鏈接庫。

VFS簡介:一切皆是文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM