時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
按啟動(dòng)順序依次介紹相關(guān)的文件:
一、內(nèi)核啟動(dòng)完之后,首先運(yùn)行/linuxrc。
/linuxrc內(nèi)容:
--------------------------------------------------------------------------------
#!/bin/sh
echo "mount /etc as ramfs"
/bin/mount -n -t ramfs ramfs /etc
/bin/cp -a /mnt/yaffs/etc/* /etc //關(guān)機(jī)的時(shí)候我們會(huì)保存/etc的內(nèi)容到/mnt/yaffs/etc.
echo "re-create the /etc/mtab entries"
# re-create the /etc/mtab entries
/bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/2 /
/bin/mount -f -t ramfs ramfs /etc
exec /sbin/init
--------------------------------------------------------------------------------
首先你要看懂這個(gè)linuxrc,
1. /bin/mount -n -t ramfs ramfs /etc
這句話的作用加載一個(gè)ramfs作為/etc目錄。這樣/etc就是一個(gè)可寫目錄。
看這個(gè)腳本,得出你的根文件系統(tǒng)是一個(gè)cramfs,是一個(gè)只讀文件系統(tǒng)中,而/etc作為系統(tǒng)運(yùn)行配置文件的存放地點(diǎn),可能會(huì)寫一些運(yùn)行狀態(tài)在這里, linuxrc第一件事情就是將一個(gè)ramfs mount 到/etc只讀目錄中,使得/etc/目錄可寫,指定參數(shù) -n的目的是告訴mount不要寫/etc/mtab, 這個(gè)文件存放當(dāng)前系統(tǒng)mount了的所有文件系統(tǒng)中。因?yàn)楝F(xiàn)在/etc/目錄還是只讀,所以這次mount不要寫這個(gè)文件,否則會(huì)失敗。
而你問(wèn)到的 ramfs在哪里,這個(gè)在你的 /etc/fstab文件中應(yīng)該有ramfs一項(xiàng), mount 會(huì)去找這項(xiàng),如果沒(méi)有,mount會(huì)失敗。后面就執(zhí)行不下去。
2. /bin/cp -a /mnt/yaffs/etc/* /etc
/etc成為可寫目錄后,將所有/mnt/yaffs/etc中的配置文件拷貝到/etc/中,這說(shuō)明你的ramfs可能是一個(gè)空的ramfs,沒(méi)有配置文件,或者配置文件比較老。 同時(shí)也說(shuō)明你這個(gè)系統(tǒng)是一個(gè)只讀系統(tǒng),每次系統(tǒng)運(yùn)行中寫入的配置不會(huì)保留。
將以前mount的那些信息重新寫到/etc/mtab中,命令就是下面這些。
3. /bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/2 /
/bin/mount -f -t ramfs ramfs /etc
這些命令只是將這些mount信息寫到/etc/mtab中,不會(huì)實(shí)際去mount這些block device,說(shuō)明你的根文件系統(tǒng)依然是以前的那個(gè)/dev/bon/2
4. exec /sbin/init
執(zhí)行根文件系統(tǒng)中的init執(zhí)行程序,使其成為1號(hào)進(jìn)程。shell正式運(yùn)行。
###################################################################################
/etc/mtab介紹:
mtab同/etc/fstab的格式一樣,它用于記錄已經(jīng)掛載的分區(qū)信息。
注意:
如果沒(méi)有/linuxrc這個(gè)文件,系統(tǒng)默認(rèn)首先運(yùn)行/sbin/init。
###################################################################################
二、從/linuxrc文件中我們看到它最后運(yùn)行了/sbin/init,而init又會(huì)根據(jù)/etc/inittab來(lái)運(yùn)行。
inittab 文件條目格式:
id:runlevels:action:process
id:
inittab 文件中條目的唯一標(biāo)識(shí), 限于 1-4 個(gè)字符 (如果是用版本號(hào)小于 5.2.18 或 a.out 的庫(kù)編譯生成的 sysvinit 程序, 則僅限于 2 個(gè)字符).
注意: 對(duì)于 getty 或其它的注冊(cè)進(jìn)程, id 必須是響應(yīng)的終端線路的 tty 后綴, 如 1 響應(yīng) tty1, 否則, 注冊(cè)過(guò)程不能正常的工作.
runlevels:
#?? 0 - halt (Do NOT set initdefault to this)
#?? 1 - Single user mode
#?? 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#?? 3 - Full multiuser mode
#?? 4 - unused
#?? 5 - X11
#?? 6 - reboot (Do NOT set initdefault to this)
action
描述要發(fā)生的動(dòng)作.
process
要執(zhí)行的進(jìn)程. 如果 process 域以一個(gè) `+' 開頭, init 不會(huì)在 utmp 和 wtmp 文件中為此進(jìn)程記帳. 這是由于 getty 自己主持 utmp/wtmp 記帳的需要, 同時(shí)這也是一個(gè)歷史遺留的漏洞.
runlevels 域可以包含表示不同運(yùn)行級(jí)的多個(gè)字符, 例如 123 表示本進(jìn)程在運(yùn)行級(jí)為 1, 2 和 3 時(shí)都要啟動(dòng). 用于 ondemand 條目的 runlevels 域可以包含 A, B, 或 C. 用于 sysinit, boot, 和 bootwait 條目的 runlevels 域被忽略.
當(dāng)改變運(yùn)行級(jí)時(shí), 在新運(yùn)行級(jí)中沒(méi)有給出的那些正在運(yùn)行的進(jìn)程被殺死, 先使用 SIGTERM 信號(hào), 然后是 SIGKILL.
action 域可以使用的動(dòng)作有:
respawn:
該進(jìn)程只要終止就立重新啟動(dòng) (如 getty).
wait
只要進(jìn)入指定的運(yùn)行級(jí)就啟動(dòng)本進(jìn)程, 并且 init 等待該進(jìn)程的結(jié)束.
once
只要進(jìn)入指定的運(yùn)行級(jí)就啟動(dòng)一次本進(jìn)程.
boot
在系統(tǒng)引導(dǎo)期間執(zhí)行本進(jìn)程. runlevels 域被忽略.
bootwait
在系統(tǒng)引導(dǎo)期間執(zhí)行本進(jìn)程. 并且 init 等待該進(jìn)程的結(jié)束 (如 /etc/rc). runlevels 域被忽略.
off
什么也不做.
ondemand
在進(jìn)入 ondemand 運(yùn)行級(jí)時(shí)才會(huì)執(zhí)行標(biāo)記為 ondemand 的那些進(jìn)程. 無(wú)論怎樣, 實(shí)際上沒(méi)有改變運(yùn)行級(jí) (ondemand 運(yùn)行級(jí)就是 `a', `b', 和 `c').
#p#副標(biāo)題#e#
initdefault
initdefault 條目給出系統(tǒng)引導(dǎo)完成后進(jìn)入的運(yùn)行級(jí), 如果不存在這樣的條目, init 就會(huì)在控制臺(tái)詢問(wèn)要進(jìn)入的運(yùn)行級(jí). process 域被忽略.
sysinit
系統(tǒng)引導(dǎo)期間執(zhí)行此進(jìn)程. 本進(jìn)程會(huì)在 boot 或 bootwait 條目之前得到執(zhí)行. runlevels 域被忽略.
powerwait
本進(jìn)程在電源不足時(shí)執(zhí)行. 通常在有進(jìn)程把 UPS 和計(jì)算機(jī)相連時(shí)通知 init 進(jìn)程, Init 在繼續(xù)其它工作之前要等待此進(jìn)程結(jié)束.
powerfail
類似 powerwait, 但是init 不等待此進(jìn)程完成.
powerokwait
在 init 收到電源已經(jīng)恢復(fù)的通知后立即執(zhí)行此進(jìn)程.
powerfailnow
本進(jìn)程在 init 被告知 UPS 電源快耗盡同時(shí)外部電源失敗 (無(wú)效) 時(shí)被執(zhí)行. (假設(shè) UPS 和監(jiān)視進(jìn)程能夠發(fā)現(xiàn)這樣的情況).
ctrlaltdel
在 init 收到 SIGINT 信號(hào)時(shí)執(zhí)行此進(jìn)程. 這意味著有人在控制臺(tái)按下了 CTRL-ALT-DEL 組合鍵, 典型地, 可能是想執(zhí)行類似 shutdown 然后進(jìn)入單用戶模式或重新引導(dǎo)機(jī)器.
kbrequest
本進(jìn)程在 init 收到一個(gè)從控制臺(tái)鍵盤產(chǎn)生的特殊組合按鍵信號(hào)時(shí)執(zhí)行.
inittab實(shí)例:
--------------------------------------------------------------------------------
#/etc/inittab
::sysinit:/etc/init.d/rcS
tty0::respawn:/sbin/getty 38400 tty0
tty2::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/cp /etc /mnt/yaffs/etc -ra //因?yàn)槲覀兊母募到y(tǒng)只讀,需要保存/etc的內(nèi)容
::shutdown:/bin/umount ar
::shutdown:/bin/mount / o remount,ro //mount -o remount就是重新加載的意思
--------------------------------------------------------------------------------
三、從inittab中我們可以看到現(xiàn)在系統(tǒng)啟動(dòng)/etc/init.d/rcS!
下面我們介紹一下rcS文件
//rcS的內(nèi)容
--------------------------------------------------------------------------------
#! /bin/sh
/bin/mount -a
/sbin/ifconfig 192.168.0.1
/bin/echo "I am xiaoshou! "
--------------------------------------------------------------------------------
首先我們看到 mount -a 這個(gè)命令。這個(gè)命令依據(jù)/etc/fstab來(lái)進(jìn)行掛載的操作。
接著我們來(lái)看看/etc/fstab這個(gè)文件。
--------------------------------------------------------------------------------
#/etc/fstab
none? /proc? proc defaults 0 0
none? /dev/pts devpts mode=0622 0 0
tmpfs? /dev/shm tmpfs defaults 0 0
--------------------------------------------------------------------------------
現(xiàn)在介紹一下此文件的格式:
# fstab文件的作用
文件/etc/fstab存放的是系統(tǒng)中的文件系統(tǒng)信息。當(dāng)正確的設(shè)置了該文件,則可以通過(guò)"mount /directoryname"命令來(lái)加載一個(gè)文件系統(tǒng),每種文件系統(tǒng)都對(duì)應(yīng)一個(gè)獨(dú)立的行,每行中的字段都有空格或tab鍵分開。同時(shí)fsck、 mount、umount的等命令都利用該程序。
# fstab文件格式
下面是/etc/fatab文件的一個(gè)示例行:
fs_spec | fs_file| fs_type| fs_options| fs_dump| fs_pass
/dev/hda1| /???? | ext2?? | defaults? | 1????? | 1
fs_spec - 該字段定義希望加載的文件系統(tǒng)所在的設(shè)備或遠(yuǎn)程文件系統(tǒng),對(duì)于一般的本地塊設(shè)備情況來(lái)說(shuō):IDE設(shè)備
關(guān)鍵詞標(biāo)簽:LINUX根文件系統(tǒng)
相關(guān)閱讀
熱門文章
安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程
Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法
多種操作系統(tǒng)NTP客戶端配置
Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號(hào)與MAC地址 dmidecode命令查看內(nèi)存型號(hào) linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載