2012年2月6日

[轉載]Linux 的開機流程- ubuntu 10.10


來自http://eeepage.info/boot-ubuntu10-10/

Linux 的開機流程- ubuntu 10.10

想要瞭解linux開機過程, 我的OS為ubuntu 10.10 64bits
參考

Linux 開機:

第一個先執行/sbin/init
然後會執行 /etc/inittab, 但這個node以被移除分散到 /etc/event.d/底下 (ubuntu10.10後則是/etc/init/底下)

描述

在核心載入完畢、進行完硬體偵測與驅動程式載入後,此時你的主機硬體應該已經準備就緒了 (ready)
此時核心會主動的呼叫第一支程式,那就是 /sbin/init 囉
你會發現 init 的 PID 號碼是一號
/sbin/init 最主要的功能就是準備軟體執行的環境,包括系統的主機名稱、網路設定、語系處理、檔案系統格式及其他服務的啟動等。
而所有的動作都會透過 init 的設定檔,亦即是 /etc/inittab (10.10 但這個node以被移除分散到 /etc/event.d/底下) 來規劃,
而 inittab 內還有一個很重要的設定項目,那就是預設的 runlevel (開機執行等級) 啦!
/ etc / event.d /目錄 [10.10版本修改為/etc/init/目錄]
是upstart核心,upstart將所有進程的觸發、停止等看作事件,存在在此目錄。主要有3種:rc-default,rcX(0..6,S),ttyX。
[10.10版本只有/etc/init/rc.conf rcS.conf (沒有rcX(0..6))及其他*.conf,
rcS.conf最後:
# Switch, passing a magic flag
start --no-wait rc-sysinit FROM_SINGLE_USER_MODE=y
end script
]

rc-default類似inittab文件,設置默認運行級別。ubuntu默認級別2,可在此文件修改。
[10.10版本修改為rc-sysinit.conf?在該文件看到 env DEFAULT_RUNLEVEL=2,後面的
env RUNLEVEL=
env PREVLEVEL=
...
...
# Switch into the default rundevel
telinit "${DEFAULT_RUNLEVEL}"
end script
]

/ etc / init.d中/目錄

  • 系統啟動需要的腳本及安裝的服務的啟動腳本。
  • S啟動時運行的腳本 K啟動時不運行。
  • nn的運行優先級別,越小越先。

初始化進程啟動的工作

  1. 運行系統級別的自啟動腳本(/etc/ rcS.d)
  2. 確認運行級別的/ etc / event.d / RC -default,默認 2 [10.10版本修改為rc-sysinit.cong]
  3. 運行相應級別的RCX文件/ etc/event.d/rc2
  4. 運行 RC程序/ etc / init.d/ RC 2
  5. 運行用戶級的啟動腳本 / etc/rc2.d/中的腳本
然後就可以登錄了。

管理啟動項目

  1. 圖形界面管理自動加載程序
    • 系統 > 首選項 > 會話
  2. 圖形界面管理自動加載服務
    • 系統 > 系統管理 > 服務
  3. 編輯腳本實現程序自動加載
    • / etc / init.d中/ rc.local中是系統最後一個運行的腳本。sudo gedit /etc/init.d/rc.local 到最後加入要運行的程序
  4. 編輯自己的服務啟動腳本
    • sudo gedit /etc/init.d/myscript
      #! /bin/sh
      case "$1" in
      start)
      ...
      ;;
      stop)
      ...
      ;;
      restart | force-reload)
      ...
      ;;
      *)
      exit 1
      esac
      -------
      sudo chmod 755 /etc/init.d/myscript
      ls -s /etc/init.d/myscript /etc/rc2.d/S99myscript
  5. 使用其它工具進行管理
sysv-rc-conf 需要安裝 手動編輯/自動編輯(sudo sysv-rc-conf myscript on)

沒有留言: