init為什麼要掛載文件系統
A. js面向對象為什麼要init進行初始化
在創建子類對象之前,會先創建父類對象。
在調用子類構造器之前,在子類構造器中會先調用父類的構造器,默認調用的是父類無參數構造器。
如果父類不存在可以被子類訪問的構造器,則不能存在子類。
如果父類沒有提供無參數構造器,此時子類必須顯示通過super語句去調用父類帶參數的構造器。
B. grub.conf 為什麼要指定根文件系統,initrd中的init腳本可以直接chroot過去的
chroot過去雖然可以,但是效率並不好,而且理論上不會切換init進程,這對於臨時構建也許有必要,但是大多數已載入的庫不會因根文件系統的切換而改變,initrd為了減少體積,是不會完善自身庫介面的,這意味著少數函數的高級功能可能會異常,但是通過引導參數直接定義是沒有問題的,執行完了必要工作後,會卸載所有已載入的函數庫等待init進程掛載新的文件系統並重新初始化函數,雖然後期可以通過腳本做到,但是卻沒有利用init自身的函數直接,再說initrd里很多介面只是用來載入物理根文件系統的,多餘介面比系統運行需要的介面都要多,多少會有安全隱患
C. 如何使用Initramfs文件系統
在2.6kernel啟動時,它把rootfs作為它的第一個文件系統掛載(注意:這里的rootfs是真名!!!不是root filesystem的縮寫)。rootfs是一個特殊的tmpfs,這個不能被刪除或者是unmounted。很多使用2.6內核的系統通常都是掛載rootfs後什麼都不做,然後啟動另一個文件系統作為root filesystem。但是,這個不能掩蓋rootfs存在的事實,你可以「cat /proc/mounts」 來查看,第一個掛載的肯定是rootfs。
rootfs被掛載後,kernel立馬就解壓了那個用gzip壓縮的CPIO歸檔文件到rootfs。每個2.6的內核都會執行這一步,但是默認那個壓縮檔是空的,所以也就沒有往rootfs內添加任何東西。接著kernel會嘗試在rootfs去找尋/init,一旦找到init並執行,kernel也就完成了啟動工作,然後便是剛剛執行的init程序接管了接下來的工作。如果kernel沒法調用"/init"程序,可能就會回過頭去,按照便準的做法去解析參數「root=」,試圖找到另一個filesystem然後掛載它。
這里的使用initramfs是指,提供一個/init程序給rootfs使用,我們可以通過兩種途徑實現:使用編譯進內核的cpio.gz檔案,或者是一個獨立的cpio.gz檔案。以前的initrd就是編譯一個獨立的檔案,很多使用initramfs的方式也是給它提供一個獨立的檔案。
D. linux 開機問題求助
一、BIOS 加電自檢
當你按電源開關開機時,電腦會首先去啟動BIOS(基本輸入輸出系統),BIOS一般是集成在主板上的.
BIOS 的工作
1.檢測連接硬體,比如顯卡,內存,磁碟等等,檢測的目的是以後把這些設備信息提供給操作系統
2.尋找啟動磁碟,每一種BIOS都會有開機啟動菜單,可以在菜單里設置以哪個設備啟動系統
比如:光碟機,硬碟,網路等等,這個菜單可以設置多個選項,依照設置次序在設備上尋找啟動信息
3.找到了啟動硬碟,接著BIOS就會在磁碟上找啟動扇區,找到內核啟動系統.
1)先試著尋找第一個扇區,也就是主引導記錄MBR(Master Boot Record)
2)如果第一個扇區上沒有沒有存在操作系統,再去尋找標記為BOOT的分區.
不論是MBR還是BOOT分區,存儲操作系統的空間都只有446位元組;
如果沒有在上面提到的位置找到操作系統的內核,那麼BIOS就無法繼續啟動工作.
而我們的內核往往會大於446個位元組,存放在磁碟的其他位置上,既然446裝不下內核,又為了能順利的找到放在其他位置上的內核,
人們想出了一個辦法就在446位元組里寫了一個小程序,當BIOS試著啟動操作系統時就會執行這個小程序,然後再由小程序來載入其他位置的內核.這個小程序就是啟動載入器(boot loader)
二、BOOT Loader
linux的boot loader(上文提到的小程序) 常見的有兩種:lilo grub
因為lilo存在著一個1024柱面的限制,並且更改了磁碟上的啟動信息文件後需要重新啟動系統才能同步446位元組的內容,因為lilo的缺陷,已經被grub所取代.現在的絕大多數類linux系統都採用grub做boot loader;
grub則沒有了lilo各種限制,而且方便到能修改系統文件的啟動內容就可以立刻與446內容同步.
那麼我們就看看grub的內容 它存在於 /boot/grub中
GRUB有幾個重要的文件,STAGE1、STAGE1.5、STAGE2
STAGE1:它只有512位元組,通常放在MBR中,它的作用很簡單,就是在系統啟動時用於裝載STAGE2並將控制權交給它。
STAGE2:GRUB的核心,所有的功能都是由它實現。
STAGE1.5:介於STAGE1和STAGE2之間,是它們的橋梁,因為STAGE2較大,通常都是放在一個文件系統當中的,但是STAGE1並不能識別文件系統格式,
所以才需要STAGE1.5來引導位於某個文件系統當中的STAGE2。根據文件系統格式的不同,STAGE1.5也需要相應的文件,如:e2fs_stage1_5,fat_stage1_5,分別用於識別ext和fat的文件系統格式。它存放於1-63的柱面之間.
引導順序如下:STAGE1->;STAGE1.5->;STAGE2,
主要的配置文件時 grub.conf
裡面選項含義:
title:一個操作系統引動的標頭,可以使多個
root :指明所需文件存在於哪個磁碟哪個分區上 (hd0,0)表示第一個硬碟,第一個分區,可參考/boot/grub/device.map
kernel:內核文件的名字,並且會有一些載入內核時的參數 or代表以只讀方式載入
initrd:包含一些附加的驅動程序
三、內核啟動
內核啟動後會向bios查詢電腦的所有硬體信息,然後自己接手下來管理這些設備,以便提供給linux使用
內核會試著驅動這些設備,這些設備的驅動一部分包含在內核中,叫做靜態驅動,一部分以模塊的方式(動態)存放文件系統中,由
於此時還未掛載任何文件系統,因此還不能使用文件系統中的模塊,這里只能驅動在內核中存在的硬體驅動程序的對應設備.想驅動內核中未包含的硬體驅動就需要載入文件系統.
內核會嘗試掛載根文件系統,根文件系統至少包含 /etc /bin /sbin /lib /dev 這5大目錄
他們5個缺一不可.都會導致系統無法啟動
根文件系統掛載是以只讀方式掛載的,因為這時linux還在啟動階段,並不穩定,避免破壞系統資料
四、啟動INIT服務
順利的掛載了根文件系統後,就會啟動init服務
內核會按 /sbin/init /etc/init /bin/init 順序尋找init程序,
如果找不到則內核報錯 這里存在一個參數 init=/bin/sh 如果啟動時指定了則最後執行/bin/sh
而不會產生內核報錯.也被稱為快速啟動,因為它忽略了很多啟動初始化工作.
啟動init的目的就是為了初始化系統環境,啟動了init就證明了內核已經順利啟動,接下來就由init服務來建立linux使用環境
init做了什麼?它會讀取 /etc/inittab 文件,根據這個文件的信息來進行初始化工作.
會執行三個腳本 /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rc.local
rc.sysinit 主要的功能用來建立系統的基本環境
啟動udev selinux子系統
udev負責產生 /dev中的文件,selinux負責增強系統的安全性
設定核心參數 sysctl -p 載入 /etc/sysctl.conf
設定系統時間 將硬體時間設定為系統時間
載入鍵盤和交換分區 swapon -a -e
設置主機名,掛載文件系統,並將根重新掛載為可讀寫的.
載入動態驅動模塊
USB設備與RAID & LVM
卸載 /initrd/ 目錄
rc 腳本設置啟動級別 linux中有許多不同的啟動級別,不同的啟動級別會制定不同的服務
根據指定rc的參數會對應執行 /etc/rc.d/rc[0-6].d/ 中的連接腳本文件 以S開頭的則啟動
rc.local 前兩個腳本都是系統至關重要的腳本,如果我們想在啟動過程中放置一些其他程序
應該使用rc.local腳本中 因為S99local存在於rc[2-5].d中
三個RC腳本執行完畢後,就會建立虛擬主控制台 執行 /bin/login 就提供了用戶登陸界面了
如果是圖形 L5級別的話,會啟動X window登錄界面
所有的啟動就都已經完畢
用戶環境初始化
輸入用戶名和密碼系統驗證,然後會執行
/etc/profile
/etc/profile.d/*.sh $HOME/.bash_profile
/etc/bashrc
$HOME/.bashrc
啟動級別
0 關機
1 單用戶
2 多用戶模式但帶網路但不能遠程登錄
3 不受限多用戶模式 TUI
4 保留
5 圖形模式
6 重新啟動
查看啟動級別
# runlevel
N 3
N是上次的級別,3是當前級別 也就是說機器開機就是3級別
切換級別
init 5
掛載文件系統
/etc/fstab
第一項 是要mount的存儲裝置的實體位置或者用卷標
第二項 要掛到哪個目錄位置
第三項 指定要掛載的系統格式
第四項 mount時要設定的狀態,只讀或defauls
第五項 提供DUMP功能,在系統DUMP時需要BACKUP的標志位,其內定位置是 0
第六項 設定開機時文件系統是否要check
除了root的文件系統其必要的check為1 其他視需要而定 默認是0
LABEL=/boot /boot ext3 defaults 1 2
作者「xudeqiang」
E. linux中init的詳細用法是什麼呀
init模塊
一般來說,Linux程序只能用另一個Linux程序啟動。例如,登錄Linux終端程序Mingetty。
但終端程序又由誰啟動呢?在計算機上啟動Linux時,內核裝入並啟動init程序。然後init程序
裝載硬碟和啟動終端程序。登錄終端程序時,它啟動命令行界面Shell。
在計算機上啟動Linux之後,init程序監視任何關閉計算機的信號,如不間斷電源(UPS)發
生的電源故障信號和重新啟動命令。
init是Linux系統操作中不可缺少的程序之一。
所謂的init進程,它是一個由內核啟動的用戶級進程。
內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等
)之後,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程
(其進程編號始終為1)。
內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來說)
是/sbin/init。如果內核找不到init,它就會試著運行/bin/sh,如果運行失敗,系統的啟動也
會失敗。
一、什麼是INIT:
init是Linux系統操作中不可缺少的程序之一。
所謂的init進程,它是一個由內核啟動的用戶級進程。
內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等
)之後,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程
(其進程編號始終為1)。
內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來說)
是/sbin/init。如果內核找不到init,它就會試著運行/bin/sh,如果運行失敗,系統的啟動也
會失敗。
二、運行級別
那麼,到底什麼是運行級呢?
簡單的說,運行級就是操作系統當前正在運行的功能級別。這個級別從1到6 ,具有不同的
功能。
不同的運行級定義如下:(可以參考Red Hat Linux 裡面的/etc/inittab)
# 0 - 停機(千萬不能把initdefault 設置為0 )
# 1 - 單用戶模式
# 2 - 多用戶,沒有 NFS
# 3 - 完全多用戶模式(標準的運行級)
# 4 - 沒有用到
# 5 - X11 (xwindow)
# 6 - 重新啟動 (千萬不要把initdefault 設置為6 )
這些級別在/etc/inittab 文件里指定。這個文件是init 程序尋找的主要文件,最先運行的
服務是放在/etc/rc.d 目錄下的文件。在大多數的Linux 發行版本中,啟動腳本都是位於
/etc/rc.d/init.d中的。這些腳本被用ln 命令連接到 /etc/rc.d/rcn.d 目錄。(這里的n 就是
運行級0-6)
三、運行級別的配置
運行級別的配置是在/etc/inittab行內進行的,如下所示:
12 : 2 : wait : / etc / init.d / rc 2
第一個欄位是一個任意指定的標簽;
第二個欄位表示這一行適用於運行那個級別(這里是2);
第三個字 段表示進入運行級別時,init應該運行第四個欄位內的命令一次,而且init應該
等待該命令結束。/etc/init.d/rc命令運行啟動和終止輸入以便進入運行級別2時所需的任何命
令。
第四個欄位中的命令執行設置運行級別時的一切「雜活」。它啟動已經沒有運行的服務,終
止不應該再在新運行級別內運行的服務。根據Linux版本的不同,採用的具體命令也不同,而且
運行級別的配置也是有差別的。
init啟動時,它會在/etc/inittab內查找一個代碼行,這一行指定了默認的運行級別:
id : 2 : initdefault :
你可以要求init在啟動時,進入非默認運行級別,這是通過為內核指定一個「single」或「
emergency」 命令行參數來實現的。比如說,內核命令行參數的指定可通過LILO來執行。這樣一
來,你就可以選擇單用戶模式了(即運行級別1)。
系統正在運行時,telinit命令可更改運行級別。運行級別發生變化時, init 就會
從/etc/inittab運行相應的命令。
四、/etc/inittab中的特殊配置
/etc/inittab中,有幾個特殊的特性,允許init重新激活特殊事件。這些特殊特性都是用第
三個欄位中的特殊關鍵字標記出來的。比如:
1. powerwait
允許init在電源被切斷時,關閉系統。其前提是具有U P S和監視U P S並通知init電源已被
切斷的軟體。
2. ctrlaltdel
允許init在用戶於控制台鍵盤上按下C t r l + A l t + D e l組合鍵時,重新啟動系統。
注意,如果該系統放在一個公共場所,系統管理員可將C t r l + A l t + D e l組合鍵配置為
別的行為,比如忽略等。
3. sysinit
系統啟動時准備運行的命令。比如說,這個命令將清除/tmp。
上面列出的特殊關鍵字尚不完整。其他的關鍵字及其使用詳情,可參考你的inittab手冊頁
。
五、在單用戶模式下引導
一個重要的運行級別就是單用戶模式(運行級別1),該模式中,只有一個系統管理員使用
特定的機器,而且盡可能少地運行系統服務,其中包含登錄。單用戶模式對少數管理任務(比如
在/usr分區上運行fsck)而言,是很有必要的,因為這需要卸載分區,但這是不可能的,除非所
有的服務系統已被殺死。
一個正在運行的系統可以進入單用戶模式,具體做法是利用init,請求運行級別1。內核啟
動時,在內核命令行指定single或emergency關鍵字,就可進入運行級別1了。內核同時也為init
指定命令行, init從關鍵字得知自己不應該採用默認的運行級別(內核命令行的輸入方式和你
啟動系統的方式有關)。
有時,以單用戶模式進行啟動是必要的,這樣一來,用戶在裝入分區之前,或至少在裝入分
散的/usr分區之前,能手工運行fsck(在分散的文件系統上,任何活動都可能使其更為分散,所
以應該盡可能地運行fsck)。
如果自動化的fsck在啟動時失敗了,啟動腳本init的運行將自動進入單用戶模式。這樣做是
為了防止系統使用不連貫的文件系統,這個文件系統是f s c k不能自動修復的。文件系統不連
貫的現象極為少見,而且通常會導致硬碟的不連貫或實驗性的內核釋放,但最好能做到防患於未
然。
由於安全上的考慮,在單用戶模式下,啟動外殼腳本之前,配置得當的系統會要求用戶提供
root密碼。否則,它會簡單地為L I L O輸入合適的一行代碼,以r o o t的身份登錄(當然,如
果/etc/passwd已經由於文件系統的問題而不連貫了,就不適合這里的原則了,為對付這種情況
,你最好隨時准備一張啟動盤)。
不同的運行級有不同的用處,也應該根據自己的不同情形來設置。
例如,如果丟失了root口令,那麼可以讓機器啟動進入單用戶狀態。在啟動後的 lilo 提示
符下輸入:
init=/bin/sh rw 使機器進入運行級1 ,並把 root 文件系統掛為讀寫。他會跳過所有系統
認證,讓你可以使用passwd 程序來改變root口令,然後啟動到一個新的運行級。
F. 操作系統的內核與文件系統是什麼關系
一、什麼是文件系統
文件系統指文件存在的物理空間,linux系統中每個分區都是一個文件系統,都有自己的目錄層次結構。
Linux文件系統中的文件是數據的集合,文件系統不僅包含著文件中的數據而且還有文件系統的結構,所有Linux 用戶和程序看到的文件、目錄、軟連接及文件保護信息等都存儲在其中。這種機制有利於用戶和操作系統的交互。
每個實際文件系統從操作系統和系統服務中分離出來,它們之間通過一個介面層:虛擬文件系統或VFS來通訊。VFS使得Linux可以支持多個不同的文件系統,每個表示一個VFS 的通用介面。由於軟體將Linux 文件系統的所有細節進行了轉換,所以Linux核心的其它部分及系統中運行的程序將看到統一的文件系統。Linux 的虛擬文件系統允許用戶同時能透明地安裝許多不同的文件系統。
在Linux文件系統中,EXT2文件系統、虛擬文件系統、/proc文件系統是三個具有代表性的文件系統。
二、什麼是根文件系統
根文件系統首先是一種文件系統,該文件系統不僅具有普通文件系統的存儲數據文件的功能,但是相對於普通的文件系統,它的特殊之處在於,它是內核啟動時所掛載(mount)的第一個文件系統,內核代碼的映像文件保存在根文件系統中,系統引導啟動程序會在根文件系統掛載之後從中把一些初始化腳本(如rcS,inittab)和服務載入到內存中去運行。我們要明白文件系統和內核是完全獨立的兩個部分。在嵌入式中移植的內核下載到開發板上,是沒有辦法真正的啟動Linux操作系統的,會出現無法載入文件系統的錯誤。
那麼根文件系統在系統啟動中到底是什麼時候掛載的呢?先將/dev/ram0掛載,而後執行/linuxrc.等其執行完後。切換根目錄,再掛載具體的根文件系統.根文件系統執行完之後,也就是到了Start_kernel()函數的最後,執行init的進程,也就第一個用戶進程。對系統進行各種初始化的操作。
根文件系統之所以在前面加一個」根「,說明它是載入其它文件系統的」根「,既然是根的話,那麼如果沒有這個根,其它的文件系統也就沒有辦法進行載入的。它包含系統引導和使其他文件系統得以掛載(mount)所必要的文件。根文件系統包括Linux啟動時所必須的目錄和關鍵性的文件,例如Linux啟動時都需要有init目錄下的相關文件,在 Linux掛載分區時Linux一定會找/etc/fstab這個掛載文件等,根文件系統中還包括了許多的應用程序bin目錄等,任何包括這些Linux 系統啟動所必須的文件都可以成為根文件系統。Linux啟動時,第一個必須掛載的是根文件系統;若系統不能從指定設備上掛載根文件系統,則系統會出錯而退出啟動。成功之後可以自動或手動掛載其他的文件系統。因此,一個系統中可以同時存在不同的文件系統。在 Linux 中將一個文件系統與一個存儲設備關聯起來的過程稱為掛載(mount)。使用 mount 命令將一個文件系統附著到當前文件系統層次結構中(根)。在執行掛裝時,要提供文件系統類型、文件系統和一個掛裝點。根文件系統被掛載到根目錄下「/」上後,在根目錄下就有根文件系統的各個目錄,文件:/bin /sbin /mnt等,再將其他分區掛接到/mnt目錄上,/mnt目錄下就有這個分區的各個目錄,文件。
三、什麼是內核
Linux內核就像人的心臟,靈魂,指揮中心。內核是一個操作系統的核心,它負責管理系統的進程,內存,設備驅動程序,文件和網路系統,決定著系統的性能和穩定性。內核以獨占的方式執行最底層任務,保證系統正常運行。協調多個並發進程,管理進程使用的內存,使它們相互之間不產生沖突,滿足進程訪問磁碟的請求等.
操作系統是一個用來和硬體打交道並為用戶程序提供一個有限服務集的低級支撐軟體。一個計算機系統是一個硬體和軟體的共生體,它們互相依賴,不可分割。計算機的硬體,含有外圍設備、處理器、內存、硬碟和其他的電子設備組成計算機的發動機。但是沒有軟體來操作和控制它,自身是不能工作的。完成這個控制工作的軟體就稱為操作系統,在Linux的術語中被稱為「內核」,也可以稱為「核心」。Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網路通信,以及系統的初始化(引導)、系統調用等。
四.內核與文件系統的關系
技術上說Linux是一個內核。「內核」指的是一個提供硬體抽象層、磁碟及文件系統控制、多任務等功能的系統軟體。一個內核不是一套完整的操作系統。一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。
文件系統是kernel的一部分。文件系統實現了系統上存儲介質和其他資源的交互。kernel tree中的fs目錄都是關於文件系統的,可以說它是kernel的一個大子系統。
嵌入式系統在flash中分配了存放內核、根文件系統的區域。bootloader載入了內核,內核啟動,載入文件系統,進入Linux系統。
整個嵌入式系統而言,可以分為三個部分1.uboot 2.kernel 3.文件系統。其中kernel中以VFS去支持各種文件系統,如yaffs,ext3,cramfs等等。yaffs/yaffs2是專為嵌入式系統使用NAND型快閃記憶體而設計的一種日誌型文件系統。在內核中以VFS來屏蔽各種文件系統的介面不同,以VFS向kernel提供一個統一的介面。如打開一個文件時統一使用open,寫時採用write,而不用去考慮是那種文件系統,也不用去考慮文件系統是如何將數據寫入物理介質的。其中 kernel中的配置,只是讓VFS支持這種介面。
G. initrd和initramfs的區別
Linux內核在初始化之後會執行init進程,而init進程會掛載我們的根文件系統,但由於init程序也是在根文件系統上的,所以這就有了悖論。Linux採用兩步走的方法來解決這個問題。
Linux2.6版以前的方法是:除了內核vmlinuz之外還有一個獨立的initrd.img映像文件,其實它就是一個文件系統映像,linux內核在初始化後會mount initrd.img作為一個臨時的根文件系統,而init進程就是在initrd.img里的,然後init進程會掛載真正的根文件系統,然後umount initrd.img。但Linux2.6內核的實現方式卻不太一樣,雖然完成的功能是一樣的。Linux2.6採用initramfs。
initramfs:init ram filesystem,它是一個cpio格式的內存文件系統,製作的方法有兩個,一個是介紹的,但這樣做出來的initramfs是和內核vmlinuz分開的,因此我們需要在grub里寫上initramfs的路徑。而另一種方法是把內核和initramfs製作在一起成為一個文件,方法是在linux源碼make menuconfig,然後General setup-->選擇Initial RAM filesystem and RAM disk (initramfs/initrd) support,然後在Initramfs source file(s)里輸入我們的initramfs目錄,然後make bzImage。這種方法做出來的內核就只有一個文件,不需要指定initramfs了。
H. init進程的簡介
對於Linux系統的運行來說,init程序是最基本的程序之一。但你仍可以大部分的忽略它。一個好的Linux發行版本通常隨帶有一個init的配置,這個配置適合於絕大多數系統的工作,在這樣一些系統上不需要對init做任何事。通常,只有你在碰到諸如串列終端掛住了、撥入(不是撥出)數據機、或者你希望改變預設的運行級別時你才需要關心init。
當內核啟動了自己之後(已被裝入內存、已經開始運行、已經初始化了所有的設備驅動程序和數據結構等等),通過啟動用戶級程序init來完成引導進程的內核部分。因此,init總是第一個進程(它的進程號總是1)。
內核在幾個位置上來查尋init,這幾個位置以前常用來放置init,但是init的最適當的位置(在Linux系統上)是/sbin/init。如果內核沒有找到init,它就會試著運行/bin/sh,如果還是失敗了,那麼系統的啟動就宣告失敗了。
當init開始運行,它通過執行一些管理任務來結束引導進程,例如檢查文件系統、清理/tmp、啟動各種服務以及為每個終端和虛擬控制台啟動getty,在這些地方用戶將登錄系統。
在系統完全起來之後,init為每個用戶已退出的終端重啟getty(這樣下一個用戶就可以登錄)。init同樣也收集孤立的進程:當一個進程啟動了一個子進程並且在子進程之前終止了,這個子進程立刻成為init的子進程。對於各種技術方面的原因來說這是很重要的,知道這些也是有好處的,因為這便於理解進程列表和進程樹圖。init的變種很少。絕大多數Linux發行版本使用sysinit(由Miguel van Smoorenburg著),它是基於System V的init設計。UNIX的BSD版本有一個不同的init。最主要的不同在於運行級別:System V有而BSD沒有(至少是傳統上說)。這種區別並不是主要的。在此我們僅討論sysvinit。 配置init以啟動getty:/etc/inittab文件
當init啟動後,init讀取/etc/inittab配置文件。當系統正在運行時,如果發出HUP信號,init會重讀它;這個特性就使得對init的配置文件作過的更改不需要再重新啟動系統就能起作用了。 /etc/inittab文件有點復雜。我們將從配置getty行的簡單情況說起。
etc/inittab中的行由四個冒號限定的域組成:
id:runlevels:action:process
下面對各個域進行了描述。另外,/etc/inittab可以包含空行以及以數字元號(』#』)開始的行;這些行均被忽略。
id 這確定文件中的一行。對於getty行來說,指定了它在其上運行的終端(設備文件名/dev/tty後面的字元)。對於別的行來說,是沒有意義的(除了有長度的限制),但它必須是唯一的。
runlevels 該行應考慮的運行級別。運行級別以單個數字給出,沒有分隔符。
action 對於該行應採取的動作,也即,respawn再次運行下一個域中的命令,當它存在時,或者僅運行一次。
I. linux系統中可以在開機時自動掛載一些磁碟,只需要通過修改/etc/fstab就可以實現
掛載磁碟的話,修改/etc/fstab就可以,默認情況下需要root許可權才能修改。 有些採用特殊架構或者使用特殊存儲的系統可能還需做額外設置才能掛載。 關於fstab簡單說明一下: 系統開機時會主動讀取/etc/fstab這個文件中的內容,根據文件裡面的配置掛載磁碟。 文件里共有六列,例如這樣的: <file system> <dir> <type> <options> <mp> <pass> /dev/sdb1 /u01 ext3 defaults 1 2 第一列表示要掛載的設備,用設備的label或UUID或磁碟設備文件來表示都可以; 第二列表示掛載點,即要將設備掛載到哪個目錄下; 第三列表示文件系統格式; 第四列是參數,具體參數在此不做說明; 第五列的值可使mp 工具通過它決定何時作備份,0表示忽略,1表示備份; 第六列表示是否開機檢查扇區 關於這個文件的詳細說明網上資料很多,搜索學習一下就行啦