關於linux 的啟動

2021-06-23 08:54:27 字數 2496 閱讀 2846

linux的第乙個程序是0號程序,一般認為0號程序建立了1號程序,1號程序建了所有的kernel程序,1號程序是所有程序的祖先。1號程序又稱init程序,init程序是所有程序之父。

init讀取/etc/inittab,以下是debian系統的inittab,init就是讀取這個檔案獲取的第乙個指令碼,請注意裡面的粗體字,會對您理解linux的執行有一定的幫助。

# /etc/inittab: init(8)configuration.

# $id: inittab,v 1.912002/01/25 13:35:21 miquels exp $

# the default runlevel.

預設的執行等級

2 是多使用者形式,這個數字也可以是

1獲其他的數字,關於執行等級,請見下文。在終端下,直接執行

runlevel

看到當前系統的預設執行等級。

id:2:initdefault:

# boot-time systemconfiguration/initialization script.

# this is run first except when booting inemergency (-b) mode.

下面的命令是第乙個執行的,除非是在緊急模式下啟動。

可以看到,第乙個執行的程式是

/etc/init.d/rcs

,也就是說

rcs就是我們系統的初始化指令碼。

rcs是系統的初始化指令碼,而在

rcs檔案中,直接執行了

rc程式,在

rc程式中,會執行當前系統預設執行等級下的所有要執行的指令碼,這些指令碼存放在

rc?.d

資料夾中(「?」是乙個數字,執行等級是

2的話就是

rc2.d

資料夾),在

rc?.d

資料夾中是以

命名的鏈結,這些鏈結至

/etc/init.d/

資料夾下的指令碼,如果是

k,那麼意味著向

/etc/init.d/

下對應name

的指令碼傳入

stop

引數,如果是

s開頭的鏈結,意味著傳入

start

引數

si::sysinit:/etc/init.d/rcs

到此,和我們的開機啟動關係密切的**已經結束了,當然,不排除在使用者登入之後有針對使用者的開機啟動專案

# what to do insingle-user mode.

~~:s:wait:/sbin/sulogin …

在/etc/init.d/下的指令碼大都遵循一定的規則,其在關鍵的一條就是要接收start|stop|restart引數,分別表示啟動、關閉、重啟。當系統啟動時,rc指令碼會根據/etc/rc?.d/下指令碼的名稱(s或k開頭)傳入對應的引數至/etc/init.d/下的指令碼。

以下是可參考的系統啟動指令碼和寫法

#!/bin/bash

case "$1"in

start)

echo "starting program..." ;;

在此寫入啟動程式的指令碼,寫法通一般

shell

指令碼的寫法,可以使用函式

echo 「ended」 ;;

stop)

echo "stopping program..." ;;

在此寫入停止程式的指令碼,寫法通一般

shell

指令碼的寫法,可以使用函式

echo 「stopped」 ;;

restart)

echo "restarting program..." ;;

在此寫入重啟程式的指令碼,寫法通一般

shell

指令碼的寫法,可以使用函式

echo "restarted"

;; *)

echo "usage: $0"

exit 0 ;;

esac

exit 0;

如果您想開機啟動自己的指令碼,先在/etc/init.d/目錄下增加上述格式的指令碼,再給此指令碼可執行許可權,再使用update-rc.d 你的指令碼名稱 start 88 2 . 注意,在2後面先是乙個空格,再是乙個「.」,2是您系統的預設執行等級,88是您的指令碼的執行次序,是說在系統的第幾個執行,您也可以在其他的數字,start是說要建立乙個以s開頭的鏈結,執行此命令,將在/etc/rc2.d/下建立「s88你的指令碼名稱」的乙個鏈結,開機之後,此指令碼將自動執行。如果要刪除這個自動執行,只需要刪除對應的鏈結即可。

要開機啟動某個指令碼,也可以將此指令碼直接在/etc/rc.local命令中執行,需要注意的是這裡新增的方法是在所有rc?.d目錄中的指令碼都被執行過後才執行。這種方法是一種比較快捷的方法。

甚至可以在/etc/inittable或/etc/init.d/rc檔案中直接加入,但這種方法是不被提倡的。

關於linux 啟動

linux啟動的順序 1.bios 2.讀硬碟的mbr 傳說中的硬碟的第乙個磁碟的第乙個扇區第乙個磁軌的第乙個磁頭 的資訊,找os 3.找到該系統的核心檔案 3.啟動init程序 4.執行 ect rc.d sysinit 執行run command精靈程序 sysinit 5.裝載其他模組 6.執...

關於linux啟動

安裝或公升級red hat enterprise linux時,必須先準備乙個安裝用的啟動介質 boot media 以便能順利地啟動rhel的安裝程式。事實上,rhel的第一張安裝光碟就是rhel安裝用的啟動介質。目前rhel支援兩種形式的啟動介質 光碟形式的啟動介質,usb形式的啟動介質。1.開...

關於linux啟動kernel panic錯誤解決

重灌系統未免太麻煩現推薦兩個解決方案 1.系統啟動的時候,按下 e 鍵進入grub編輯介面,編輯grub選單,選擇 kernel vmlinuz 2.6.23.1 42.fc8 ro root dev vogroup00 logvol00 rhgb quiet 一欄,按 e 鍵進入編輯,在末尾增加e...