linux的程序1 rootfs與linuxrc

2021-10-22 07:12:10 字數 2182 閱讀 3598

在核心啟動的最後階段啟動了三個程序

程序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檔案和.**件。這個專案可以被配置編譯成各個平台下面可以執行的應用程式。我們如果用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/***就表示乙個硬體裝置,我們要操作這個硬體時就是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簡介:一切皆是檔案

Linux程序1 程序的概念

1 什麼是程序 乙個正在執行的程式就是乙個程序 2 併發 並行 非同步 同步 臨界區 併發 針對乙個處理器,看起來同時進行。乙個處理器在同一時刻只能執行乙個程式,但是cpu在多個程序之間快速切換,所以看起是同時進行的。這是一種假象 並行 針對多個處理器,一台機器上有多個處理器,那麼程序就有可能同時執...

linux程序(1) 程序執行的環境

標籤 空格分隔 linux 以下內容來自 unix環境高階程式設計 讀書筆記 首先想想下面幾個問題能不能解答 程序是程式執行的基本,程序即為程式執行的活動體。下面是程序在系統上執行的一些環境。int main int argc,char argv 當執行c程式的時候,在呼叫main函式之前會呼叫乙個...

linux檔案系統基礎 rootfs的掛載過程

一 目的 本文主要講述linux3.10檔案系統初始化過程的第一階段 掛載rootfs檔案系統。rootfs是基於記憶體的檔案系統,所有操作都在記憶體中完成 也沒有實際的儲存裝置,所以不需要裝置驅動程式的參與。基於以上原因,linux在啟動階段使用rootfs檔案系統,當磁碟驅動程式和磁碟檔案系統成...