各種硬體通電,電腦開始運作
bios是一組固化到計算機內主機板上乙個rom晶元上的程式,它儲存著計算機最重要的基本輸入輸出的程式、開機後自檢程式和系統自啟動程式,它可從cmos中讀寫系統設定的具體資訊。 其主要功能是為計算機提供最底層的、最直接的硬體設定和控制。此外,bios還向作業系統提供一些系統引數。系統硬體的變化是由bios隱藏,程式使用bios功能而不是直接控制硬體。現代系統會忽略bios提供的抽象層並直接控制硬體元件。各大主機板製造商都會開發適合自己主機板的bios,我們只需要知道bios最主要的功能就是對自身的硬體做一次自檢,只有硬體沒有時,才會執行軟體(作業系統也是乙個軟體)這種自檢的過程就叫"加電自檢(power on self test,簡稱post)"
機器自檢後,bios預設從磁碟的零柱面,零磁軌,第乙個扇區中讀取乙個叫mbr的東西
硬碟的主引導記錄區(mbr)這512位元組的空間內容由專門的分割槽程式產生,比如windows的fdisk.exe和linux下的fdisk命令,所以他不是依賴於任何作業系統,而mbr中的引導程式也是可以修改的,因此我們可以利用這個特性實現多系統共存即所謂的雙系統。mbr位於硬碟的0磁頭0柱面1扇區,其中存放著硬碟主引導程式和硬碟分割槽表。在總共512位元組的硬碟主引導記錄扇區中,446位元組屬於硬碟主引導程式,64位元組屬於硬碟分割槽表(dpt),兩個位元組(55 aa)屬於分割槽結束標誌。
centos,redhat缺省會使用grub作為引導作業系統的程式,因為grub本身比較大,所以一般是在mbr中寫入grub的位址,這樣bios就會引導作業系統就會載入grub作為作業系統的引導程式。
gnu grub(grand unified bootloader簡稱「grub」)是乙個來自gnu專案的多作業系統啟動程式。grub是多啟動規範的實現,它允許使用者可以在計算機內同時擁有多個作業系統,並在計算機啟動時選擇希望執行的作業系統。grub可用於選擇作業系統分割槽上的不同核心,也可用於向這些核心傳遞啟動引數。用於引導red hat linux的選單配置檔案
default=linux
timeout=10
color=green/blacklight-gray/blue
#sectiontoloadlinux
titlelinux
root(hd0,1)這裡制定了grub的根。並且掛載。
kernel/vmlinuzroot=/dev/hda5核心是grub根下的vmlinuz。
並且核心載入後,核心的根是在/dev/hda5
boot
#sectiontoloadwindows2000
titlewindows
rootnoverify(hd0,0)rootnoverify就是指定根,但是不要掛載。
chainloader+1使用(hd0,0)的第一扇區來引導。
grub最重要的功能就是根據配置檔案載入kernel映象,執行核心後載入的第乙個程式是/sbin/init,這個程式會根據/etc/initab來初始化
這裡最主要的就是根據設定好的runlevel(runlevel預設為3)來確定系統的執行級別
linux系統會根據/etc/inittab中定義的系統初始化配置si::sysinit:/etc/rc.d/rc.sysinit執行/etc/rc.sysinit指令碼,該指令碼會設定系統變數,網路配置,並啟動swap,設定/proc,載入使用者自定義模組,載入kernel設定等
如果runlevel的值為3,會執行/etc/rc3.d下的所有指令碼;如果為5,則會執行/etc/rc5.d下的指令碼
簡單的欣賞一下指令碼**
[hx@centos8 ~]$ cat /etc/rc3.d/s80aegis |more
#!/bin/bash
### begin init info
# provides: aegis
# required-start: $remote_fs $syslog
# required-stop: $remote_fs $syslog
# default-start: 2 3 4 5
# default-stop:
# short-description: aegis update.
# description: aegis client.
### end init info
aegis_install_dir="/usr/local/aegis"
if [ `id -u` -ne "0" ]; then
echo "error: permission denied." 1>&2
exit 1
fistart() "/aegis_update/aliyundunupdate &
}stop()
status()
var=0
path="/etc/debian_version"
if [ `uname -n` = "debian" ];
then
if [ -f "$path" ];
then
var=`awk -f. '' $path`
fifiuninstall() .d/" ];
then
rm -f "/etc/rc$.d/s80aegis"
elif [ -d "/etc/rc.d/rc$.d" ];
then
rm -f "/etc/rc.d/rc$.d/s80aegis"
fidone
path="/etc/debian_version"
if [ -f "$path" -a -s "$path" ];
then
var=`awk -f. '' $path`
if [ -z $(echo $var|grep "[^0-9]") ];
then
if [ $var -ge 6 ];
then
echo "insserv -r aegis: remove aegis server"
insserv -r aegis >/dev/null 2>&1
fifi
fiecho "uninstall successful"
}case "$1" in
start)
start
sleep 1
status
;;stop)
stop
status
;;restart)
stop 1
status
echo "aegis restarting..."
sleep 1
start
status
;;status)
status
;;uninstall)
uninstall
;;*)
echo $"usage: $0 "
exit 1
;;esac
linux系統啟動
本文簡單介紹一下從我們按開機鍵到可以登入系統,這段時間系統和電腦硬體是怎麼一起工作的。既做為對自己知識的乙個總結整理,也可以給linux初級使用者做乙個入門介紹,高手請略過。一般來說linux的啟動可以分成三個階段 bios階段,系統引導階段,系統啟動階段。一 bios階段 bios 基本輸入輸出系...
linux系統啟動
本文簡單介紹一下從我們按開機鍵到可以登入系統,這段時間系統和電腦硬體是怎麼一起工作的。既做為對自己知識的乙個總結整理,也可以給linux初級使用者做乙個入門介紹,高手請略過。一般來說linux的啟動可以分成三個階段 bios階段,系統引導階段,系統啟動階段。一 bios階段 bios 基本輸入輸出系...
Linux系統啟動
1.系統啟動流程大概 1 啟動bios 2 mbr中的引導 bootcode 3 執行引導程式 linux中用的最多的是grub 引導程式的主要作用是用來載入核心 4 載入系統核心 5 執行init 6 runlevel init根據當前預設的執行級別來啟動相關的程式及裝置 2.bios basic...