Linux架構的深入研究

2021-06-16 01:07:27 字數 1751 閱讀 2211

1. linux其實只用幾個檔案就可以跑了。就是init(必須), rc, inittab.sh.

(注意,這樣linux其實是在single user模式下,許可權相當於root)

2.如果同好們想要更多的功能,就可以新增一些程式來滿足自己的需要。

當然,編寫rc和inittab需要一定的指令碼功底,後面我會逐步歸納inittab和rc指令碼的一些技術細節。

咱們看乙個範例,下面是我的電腦的linux,inittab(注意這個inittab的名稱是絕對不能更改的)。這個名稱是在init.c裡面定義的,如果各位同好有興趣編輯一下init.c裡面的這個檔案的名稱,哈哈,別人就蒙掉了。

# default runlevel.

id:3:initdefault:

# system initialization, mount local filesystems, etc.

si::sysinit:/sbin/rc sysinit

# further system initialization, brings up the boot runlevel.

rc::bootwait:/sbin/rc boot

l0:0:wait:/sbin/rc shutdown

l1:s1:wait:/sbin/rc single

l2:2:wait:/sbin/rc nonetwork

l3:3:wait:/sbin/rc default

l4:4:wait:/sbin/rc default

l5:5:wait:/sbin/rc default

l6:6:wait:/sbin/rc reboot

#z6:6:respawn:/sbin/sulogin

大家可以看id:3:initdefault:這個是預設的啟動級別,表明了系統將會執行級別3定義的這個指令碼。

當然我們很容易可以猜到si::sysinit:/sbin/rc sysinit定義的是系統初始化指令碼

這樣inittab一下子就很清楚了,系統的啟動步驟也很清楚了

1 run kernel

2 init

3 rc

4 level 3

在上面的inittab裡面的0,1,2,3,4,5,6就是init程式的執行級別,具體哪個代表什麼linuxsir上面應該有很多文章提到了,我就說一下3,4,5就是多使用者級別了,但是同好們依然可以改變它們的定義,這個需要修改init.c程式本身了,有興趣的話可以試試。另外指令碼的不同也一樣可以改變他們預設的功能。具體的指令碼同好們可以看自己的linux系統下面對應的指令碼檔案。當然有些同好也提到了我們也可以不要init這個程式,不過這個可是linux系統欽定的初始化程式,如果咱們不要的話可是要自己去修改kernel囉,要麼就弄乙個和init一樣名稱的什麼程式都可以的程式哈哈,不過那樣你能會失去乙個重要的東西就是控制台,因為你需要自行想辦法去定義你的控台,哈哈,沒有控制台你什麼也做不了。別人都做好了而且功能強大的東西幹什麼咱們不用呢,而且省掉這個東東也省不了太多的bit數出來,所以咱們還是用穩定而且經典的init程式,況且這個小的init別人已經幫我們寫好了。

rc命令指令碼程式

我們已經知道,當執行級別發生改變時,將由/etc/inittab檔案定義需要執行哪乙個命令指令碼程式。這些命令指令碼程式負責啟動或者停止該執行級別特定的各種服務。由於需要管理的服務數量很多,因此需要使用rc命令指令碼程式。其中,最主要的乙個是/etc/rc.d/rc,它負責為每乙個執行級別按照正確的順序呼叫相應的命令指令碼程式。我們可以想象,這樣乙個命令指令碼程式很容易變得難以控制!為了防止這類事件的發生,需要使用精心設計的方案。

flex Bindable深入研究

bindable 元資料標籤,它在 中的作用就是向編譯器提供如何編譯程式的資訊。它的最大作用是使程式元件間的資料同步變得容易。在開發中通常用上bindable作用在檢視控制項上,如給它繫結乙個物件,則以後只需要在邏輯層更改這個物件的值,則檢視層的控制項資料會自動更新 同步 而不再需要手動去更新檢視。...

URLRequest深入研究

urlrequest 的乙個例項 html view plain copy create the request.所構建的nsurlrequest具有乙個依賴於快取響應的特定策略,cachepolicy取得策略,timeoutinterval取得超時值 nsurlrequest therequest...

深入研究AsyncTask

asynctask提供了一種在後台執行操作而在ui執行緒顯示結果的方式,而且開發者不必操作執行緒或者handler.乙個asynctask定義了三種泛型分別是params,progress,result,還有四個函式分別是onpreexecute doinbackground onprogressu...