IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置: 首頁操作系統(tǒng)LINUX → 根文件系統(tǒng)的啟動及配置

根文件系統(tǒng)的啟動及配置

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  按啟動順序依次介紹相關(guān)的文件:

  一、內(nèi)核啟動完之后,首先運行/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)機的時候我們會保存/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

  --------------------------------------------------------------------------------

  首先你要看懂這個linuxrc,

  1. /bin/mount -n -t ramfs ramfs /etc

  這句話的作用加載一個ramfs作為/etc目錄。這樣/etc就是一個可寫目錄。

  看這個腳本,得出你的根文件系統(tǒng)是一個cramfs,是一個只讀文件系統(tǒng)中,而/etc作為系統(tǒng)運行配置文件的存放地點,可能會寫一些運行狀態(tài)在這里, linuxrc第一件事情就是將一個ramfs mount 到/etc只讀目錄中,使得/etc/目錄可寫,指定參數(shù) -n的目的是告訴mount不要寫/etc/mtab, 這個文件存放當前系統(tǒng)mount了的所有文件系統(tǒng)中。因為現(xiàn)在/etc/目錄還是只讀,所以這次mount不要寫這個文件,否則會失敗。

  而你問到的 ramfs在哪里,這個在你的 /etc/fstab文件中應該有ramfs一項, mount 會去找這項,如果沒有,mount會失敗。后面就執(zhí)行不下去。

  2. /bin/cp -a /mnt/yaffs/etc/* /etc

  /etc成為可寫目錄后,將所有/mnt/yaffs/etc中的配置文件拷貝到/etc/中,這說明你的ramfs可能是一個空的ramfs,沒有配置文件,或者配置文件比較老。 同時也說明你這個系統(tǒng)是一個只讀系統(tǒng),每次系統(tǒng)運行中寫入的配置不會保留。

  將以前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中,不會實際去mount這些block device,說明你的根文件系統(tǒng)依然是以前的那個/dev/bon/2

  4. exec /sbin/init

  執(zhí)行根文件系統(tǒng)中的init執(zhí)行程序,使其成為1號進程。shell正式運行。

  ###################################################################################

  /etc/mtab介紹:

  mtab同/etc/fstab的格式一樣,它用于記錄已經(jīng)掛載的分區(qū)信息。

  注意:

  如果沒有/linuxrc這個文件,系統(tǒng)默認首先運行/sbin/init。

  ###################################################################################

  二、從/linuxrc文件中我們看到它最后運行了/sbin/init,而init又會根據(jù)/etc/inittab來運行。

  inittab 文件條目格式:

  id:runlevels:action:process

  id:

  inittab 文件中條目的唯一標識, 限于 1-4 個字符 (如果是用版本號小于 5.2.18 或 a.out 的庫編譯生成的 sysvinit 程序, 則僅限于 2 個字符).

  注意: 對于 getty 或其它的注冊進程, id 必須是響應的終端線路的 tty 后綴, 如 1 響應 tty1, 否則, 注冊過程不能正常的工作.

  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ā)生的動作.

  process

  要執(zhí)行的進程. 如果 process 域以一個 `+' 開頭, init 不會在 utmp 和 wtmp 文件中為此進程記帳. 這是由于 getty 自己主持 utmp/wtmp 記帳的需要, 同時這也是一個歷史遺留的漏洞.

  runlevels 域可以包含表示不同運行級的多個字符, 例如 123 表示本進程在運行級為 1, 2 和 3 時都要啟動. 用于 ondemand 條目的 runlevels 域可以包含 A, B, 或 C. 用于 sysinit, boot, 和 bootwait 條目的 runlevels 域被忽略.

  當改變運行級時, 在新運行級中沒有給出的那些正在運行的進程被殺死, 先使用 SIGTERM 信號, 然后是 SIGKILL.

  action 域可以使用的動作有:

  respawn:

  該進程只要終止就立重新啟動 (如 getty).

  wait

  只要進入指定的運行級就啟動本進程, 并且 init 等待該進程的結(jié)束.

  once

  只要進入指定的運行級就啟動一次本進程.

  boot

  在系統(tǒng)引導期間執(zhí)行本進程. runlevels 域被忽略.

  bootwait

  在系統(tǒng)引導期間執(zhí)行本進程. 并且 init 等待該進程的結(jié)束 (如 /etc/rc). runlevels 域被忽略.

  off

  什么也不做.

  ondemand

  在進入 ondemand 運行級時才會執(zhí)行標記為 ondemand 的那些進程. 無論怎樣, 實際上沒有改變運行級 (ondemand 運行級就是 `a', `b', 和 `c').

#p#副標題#e#

  initdefault

  initdefault 條目給出系統(tǒng)引導完成后進入的運行級, 如果不存在這樣的條目, init 就會在控制臺詢問要進入的運行級. process 域被忽略.

  sysinit

  系統(tǒng)引導期間執(zhí)行此進程. 本進程會在 boot 或 bootwait 條目之前得到執(zhí)行. runlevels 域被忽略.

  powerwait

  本進程在電源不足時執(zhí)行. 通常在有進程把 UPS 和計算機相連時通知 init 進程, Init 在繼續(xù)其它工作之前要等待此進程結(jié)束.

  powerfail

  類似 powerwait, 但是init 不等待此進程完成.

  powerokwait

  在 init 收到電源已經(jīng)恢復的通知后立即執(zhí)行此進程.

  powerfailnow

  本進程在 init 被告知 UPS 電源快耗盡同時外部電源失敗 (無效) 時被執(zhí)行. (假設 UPS 和監(jiān)視進程能夠發(fā)現(xiàn)這樣的情況).

  ctrlaltdel

  在 init 收到 SIGINT 信號時執(zhí)行此進程. 這意味著有人在控制臺按下了 CTRL-ALT-DEL 組合鍵, 典型地, 可能是想執(zhí)行類似 shutdown 然后進入單用戶模式或重新引導機器.

  kbrequest

  本進程在 init 收到一個從控制臺鍵盤產(chǎn)生的特殊組合按鍵信號時執(zhí)行.

  inittab實例:

  --------------------------------------------------------------------------------

  #/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 //因為我們的根文件系統(tǒng)只讀,需要保存/etc的內(nèi)容

  ::shutdown:/bin/umount ar

  ::shutdown:/bin/mount / o remount,ro //mount -o remount就是重新加載的意思

  --------------------------------------------------------------------------------

  三、從inittab中我們可以看到現(xiàn)在系統(tǒ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 這個命令。這個命令依據(jù)/etc/fstab來進行掛載的操作。

  接著我們來看看/etc/fstab這個文件。

  --------------------------------------------------------------------------------

  #/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)信息。當正確的設置了該文件,則可以通過"mount /directoryname"命令來加載一個文件系統(tǒng),每種文件系統(tǒng)都對應一個獨立的行,每行中的字段都有空格或tab鍵分開。同時fsck、 mount、umount的等命令都利用該程序。

  # fstab文件格式

  下面是/etc/fatab文件的一個示例行:

  fs_spec | fs_file| fs_type| fs_options| fs_dump| fs_pass

  /dev/hda1| /???? | ext2?? | defaults? | 1????? | 1

  fs_spec - 該字段定義希望加載的文件系統(tǒng)所在的設備或遠程文件系統(tǒng),對于一般的本地塊設備情況來說:IDE設備

關(guān)鍵詞標簽:LINUX根文件系統(tǒng)

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP Linux操作系統(tǒng)修改IP

相關(guān)下載

    人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內(nèi)存型號 linux tc實現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機、重啟、注銷 命令 查看linux服務器硬盤IO讀寫負載