小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linux系統(tǒng)啟動(dòng)過(guò)程詳解

 jfsir 2016-06-23
Linux系統(tǒng)啟動(dòng)流程:
POST --> BIOS(Boot Sequence引導(dǎo)次序) --> MBR(bootloader,446byte) --> Kernel --> initrd(initramfs) --> (ROOTFS) --> /sbin/init(/etc/inittab)
內(nèi)核設(shè)計(jì)風(fēng)格:
單內(nèi)核:
所有功能都在一個(gè)內(nèi)核中。Linux采用單內(nèi)核,但是采用了微內(nèi)核的設(shè)計(jì)思想。LWP(輕量級(jí)進(jìn)程 light weight pprocess)。
核心:
/boot/vmlinuz-verison
動(dòng)態(tài)加載ko(kernel object 內(nèi)核專用模塊)。
內(nèi)核模塊(ko):/lib/modules/KERNELVERISON/
常見的裝載內(nèi)核模塊命令:
#insmod
#modprobe
微內(nèi)核:
把其他功能做成子內(nèi)核。Windows Solaris。真正意義上的多線程。
內(nèi)核提供的功能:
文件系統(tǒng)
進(jìn)程管理
內(nèi)存管理
網(wǎng)絡(luò)管理
安全功能
驅(qū)動(dòng)程序
內(nèi)核初始化過(guò)程:
1.設(shè)備探測(cè)。
2.驅(qū)動(dòng)初始化
可能從initrd(initramfs(RHEL6))件中裝載驅(qū)動(dòng)模塊。
3.以只讀模式掛載根文件系統(tǒng)(rootfs)。
4.裝載用戶空間內(nèi)第一個(gè)進(jìn)程init(PID=1)
initrd:
一個(gè)中間層系統(tǒng),在系統(tǒng)啟動(dòng)是提供必要的基本驅(qū)動(dòng),生成一個(gè)臨時(shí)根,為內(nèi)核提供訪問(wèn)真正根文件系統(tǒng)所需要的基本驅(qū)動(dòng)程序。待內(nèi)核成功掛載根文件系統(tǒng)后,會(huì)把臨時(shí)根下的 /proc、 /sys、/dev移動(dòng)到真的根下。
ramdisk --> initrd RHEL5 把內(nèi)存模擬成磁盤使用。
ramfs --> initramfs RHEL6 把內(nèi)存模擬成磁盤使用。
#chroot TEMPROOTDIR [COMMAND] 臨時(shí)切換為根目錄
例如:
#chroot /tmp/virroot /bin/csh
#ldd FILE 顯示二進(jìn)制文件所依賴共享庫(kù)。
init:
系統(tǒng)啟動(dòng)的第一個(gè)進(jìn)程。
bin文件路徑:
/sbin/init
/etc/init
/bin/init
內(nèi)核將會(huì)依次按以上目錄順序查找init,若都無(wú)法找到init,則內(nèi)核會(huì)執(zhí)行/bin/sh。
配置文件:
/etc/inittab
每一行記錄一個(gè)要啟動(dòng)或運(yùn)行的服務(wù)(進(jìn)程)。
設(shè)定的任務(wù):
1.設(shè)定默認(rèn)運(yùn)行級(jí)別。
2.運(yùn)行系統(tǒng)初始化腳本。
/etc/rc.d/rc.sysinit
3.按照以下順序運(yùn)行指定運(yùn)行級(jí)別對(duì)應(yīng)目錄下的下的服務(wù)類腳本。
/etc/rc.d/init.d
/etc/rc.d/rcNUM.d
/etc/rc.d/rc.local
4.設(shè)定ctrlaltdel組合鍵的動(dòng)作。
5.定義ups電源在電源故障或恢復(fù)是執(zhí)行的操作。
6.啟動(dòng)虛擬終端(level為2345)。
1:2345:respawn:/sbin/mingetty tty1
...
6:2345:respawn:/sbin/mingetty tty6
7.啟動(dòng)圖形終端(level為5)。
x:5:respawn:/etc/X11/perfdm-nodaemon
每行結(jié)構(gòu)如下:
id:runlevels:action:process
id:服務(wù)參數(shù)的標(biāo)示,1~4個(gè)字符。
id 默認(rèn)RUNLEVEL
si 系統(tǒng)初始化
l0~l6 指定RUNLEVEL
ca 攔截到ctrl+alt+del
pf 電源失效
pr 電源恢復(fù)
NUM 配置NUM號(hào)虛擬終端
x 啟動(dòng)x服務(wù)
runlevels:在哪個(gè)級(jí)別下運(yùn)行。
action:在某個(gè)事件下執(zhí)行的動(dòng)作。
initdefault 設(shè)定默認(rèn)運(yùn)行級(jí)別。
sysinit 系統(tǒng)初始化。
wait 級(jí)別切換至此級(jí)別時(shí)執(zhí)行。
ctrlaltdel 重啟。
powerfail 電源失效。
powerokwait 電源失效后至關(guān)機(jī)前電源恢復(fù)。
respawn 一旦程序終止會(huì)重新啟動(dòng)。
process:要運(yùn)行的程序,定義使用絕對(duì)路徑。
/etc/init/*.conf
該目錄下的文件是把inittab文件進(jìn)行切片后產(chǎn)生的許多.conf文件。都是基于事件驅(qū)動(dòng)編寫的。
重啟init:
#init q
#telinit q
#kill -HUP 1
運(yùn)行級(jí)別RUNLEVEL:
各個(gè)級(jí)別區(qū)別在于啟動(dòng)的服務(wù)不同。
0:halt
1:single user mode
直接怡管理員身份登錄,無(wú)需驗(yàn)證。
2:mulit user mode no NFS
不啟動(dòng)NFS等網(wǎng)域功能相關(guān)的服務(wù)器。
3:mulit user mode text mode
命令行模式
4:reseved
保留級(jí)別,暫時(shí)未定義。
5:mulit user mode graphic mode
圖形模式
6:reboot
運(yùn)行級(jí)別的設(shè)定:
修改/etc/inittab
查看運(yùn)行級(jí)別:
#runlevel
LSATLEVEL CURRENTLEVEL
其中LASTLEVEL表示上一個(gè)級(jí)別,N表示沒(méi)切換過(guò)。CURRENTLEVEL表示當(dāng)前級(jí)別。
切換運(yùn)行級(jí)別:
#init [OPTION] LEVEL
[OPTION]
LEVEL
0 關(guān)機(jī)
1 單用戶模式
2 命令行模式(不啟用NFS)
3 命令行模式
4 保留模式
5 圖形界面
6 重啟
S 單用戶模式
s 單用戶模式
/etc/rc.d/rc.sysinit
設(shè)置系統(tǒng)的基本環(huán)境,完成以下任務(wù):
1.激活udev和selinux。
2.根據(jù)/etc/sysctl.conf文件來(lái)設(shè)定內(nèi)核參數(shù)。
執(zhí)行sysctl -p。
3.設(shè)定系統(tǒng)時(shí)鐘。
4.裝載鍵盤映射。
5.啟用swap分區(qū)。
執(zhí)行swapon -a -e。
6.設(shè)置主機(jī)名,從/etc/sysconfig/network中讀取HOSTNAME參數(shù)。
7.文件系統(tǒng)檢測(cè),根據(jù)/etc/fstab,檢查并掛載其他文件系統(tǒng)。并且在無(wú)錯(cuò)誤以后,將根以讀寫方式重新掛載。
8.初始圍硬件設(shè)備。
定義在/etc/modprobe.conf中的模塊
ISA、PnP的設(shè)備
USB設(shè)備
9.啟動(dòng)RAID和LVM
10.如有必要,卸載initrd
11.初始化串行設(shè)備。根據(jù)/etc/rc.serial進(jìn)行初始化。默認(rèn)無(wú)此腳本,需要自行建立。
12.清理過(guò)期的鎖文件(/var/lock/subsys/*)和IPC文件。
13.重新設(shè)置磁盤參數(shù),根據(jù)/etc/sysconfig/harddisk DEVICE。
/etc/rc.d/init.d/*
服務(wù)類腳本,SysV風(fēng)格,存放在/etc/rc.d/init.d下。有一個(gè)鏈接文件/etc/init.d --> /etc/rc.d/init.d。
配置文件:
/etc/sysconfig/服務(wù)腳本同名
腳本至少接受以下參數(shù):
start|stop|restart|status|reload|condrestart(有條件重啟,已啟動(dòng)的重啟,未啟動(dòng)的不重啟。)
腳本共有特性:
#chkconfig: RUNLEVELS SS KK
RUNLEVELS 啟動(dòng)級(jí)別
RUNLEVELS可以用-表示沒(méi)有級(jí)別默認(rèn)為SNUM開頭的鏈接,即全部都是KNUM開頭的鏈接。
SS 啟動(dòng)的優(yōu)先級(jí)
KK 關(guān)閉的優(yōu)先級(jí)
當(dāng)使用chkconfig命令為此腳本在rcNUM.d目錄創(chuàng)建鏈接時(shí),RUNLEVEL表示默認(rèn)創(chuàng)建為SNUM開頭的文件,除此之外的級(jí)別均默認(rèn)創(chuàng)建為KNUM開頭的鏈接。S后邊的啟動(dòng)優(yōu)先級(jí)為SS所表示的數(shù)字,K后邊的關(guān)閉優(yōu)先級(jí)次序?yàn)镵K所表示的數(shù)字。一般SS+KK=99。
#description: DESCRIPTIONS
描述信息,用戶說(shuō)明此腳本的簡(jiǎn)單功能??梢允褂肻進(jìn)行續(xù)行。
/etc/rc.d/rc.local
/etc/rc.d/rcNUM.d/S99local --> /etc/rc.d/rc.local
/etc/rc.local --> /etc/rc.d/rc.local
在系統(tǒng)啟動(dòng)最后執(zhí)行的服務(wù),準(zhǔn)確說(shuō)應(yīng)該是腳本。不方便定義為服務(wù)等的命令都可以在其中寫入,在用戶登錄前執(zhí)行。
例如命令行模式登陸式的顯示的歡迎內(nèi)容等。
GRUB:GRand Unified Bootloader
grub啟動(dòng)流程:
stage1:裝在MBR中。目的是為了引導(dǎo)stage2。
stage1.5:用來(lái)識(shí)別常見的文件系統(tǒng)。
stage2:位于內(nèi)核所在分區(qū)。/boot/grub/。
/etc/grub.conf
grub配置文件。是鏈接文件,指向/boot/grub/grub.conf
主要內(nèi)容如下:
default=0
設(shè)定默認(rèn)啟動(dòng)的title編號(hào),編號(hào)從0開始。
timeout=5
等待選擇超時(shí)時(shí)間。單位是秒。
splashimeage=(hd0,0)/grub/palash.xmp.gz
指定grub背景圖片。
hidenmenu
是否隱藏菜單。
password --md5 PASSWORD
設(shè)定GRUB的編輯的密碼??梢允褂胓rub-md5-crypt來(lái)生成加密的密碼。
title TITLENAME
內(nèi)核標(biāo)題或者是OS的名稱,可自由修改。
root (hdDISKNUM,PARTNUM)
指定內(nèi)核文件所在的設(shè)備和分區(qū)。對(duì)grub而言,所有硬盤一律顯示為為hd。DISKNUM表示磁盤序號(hào),PARTNUM表示分區(qū)序號(hào)。
kernel KERNEL CMDLINE
指定kernel路徑即傳遞給內(nèi)核的參數(shù)。參數(shù)文件可以在/proc/cmdline中看到。
initrd INIDRD
指定initrd路徑。
password --md5 PASSWORD 啟動(dòng)內(nèi)核或OS的密碼。
安裝grub:
#fdisk DEVICE
/dev/PART1 用來(lái)做boot
/dev/PART2 用來(lái)做sysroot
#mkdir /DIR/boot
#mount /dev/PART1 /DIR/boot
#grub-install --root-directory=/DIR DEVICE
此種方式要保證把內(nèi)核文件所在分區(qū)掛載在/boot上。grub只要指定/boot所在的父目錄就能自動(dòng)找到/boot。
#vim /DIR/boot/grub.conf
修復(fù)grub:
安裝grub stage1:
#grub
grub> root (hdDISKNUM,PARTNUM) 指定內(nèi)核所在的磁盤和分區(qū)。
grub> setup (hdDISKNUM) 在指定的硬盤上安裝grub。
grub> quit
grub.conf文件丟失:
開機(jī)進(jìn)入grub后操作。
grub> find (hdDISKNUM,PARTNUM)/
按tab鍵會(huì)顯示出相關(guān)文件。
grub> root (hdDISKNUM,PARTNUM)
grub> kernel /KERNEL
grub> initrd /INITRD
grub> boot
#mingetty [OPTION] 啟動(dòng)終端
[OPTION]
--loginprog=/bin/login 啟動(dòng)中斷后執(zhí)行的程序。默認(rèn)為/bin/login。
#agetty [OPTION] PROT BAUDRATE  替代getty命令。
[OPTION]
-l LOGIN PROGRAME 指定登陸程序
-n 不需要用戶輸入用戶名。不需要用戶輸入登錄信息。配合-l一起使用。
例如:
#agetty -l /bin/bash 38400  登陸bash并將波特率設(shè)定為38400。
#stty [OPTION] DEVICE SETTING 改變和顯示終端設(shè)備。
[OPTION]
-F --file=DEVICE 打開并使用指定的設(shè)備
SETTING:
size 顯示行(rows)列(columns)數(shù)。
speed 顯示終端速率。
例如:
#stty -F /dev/console size 物理終端
25 80 25行80列。
#stty -F /dev/console speed
38400 每秒38400個(gè)字符
#chkconfig [OPTION]
指定SysV風(fēng)格腳本,自動(dòng)在/etc/rcNUM.d下創(chuàng)建鏈接。
[OPTION]
--list SERVICE  列出所有獨(dú)立守護(hù)進(jìn)程的啟動(dòng)設(shè)定。不加參數(shù)顯示所有設(shè)定。
--add SERVICE
自動(dòng)創(chuàng)建鏈接,將SERVICE添加到chkconfig控制的服務(wù)列表中。下次系統(tǒng)啟動(dòng)生效。
--del SERVICE
刪除SERVICE所有鏈接文件。
--level [RUNLEVELS] SERVICE on|off
指定級(jí)別為RUNLEVELS,SERVICE啟動(dòng)或關(guān)閉。對(duì)于瞬時(shí)守護(hù)進(jìn)程不需要指定RUNLEVLES。RUNLEVELS可以省略,省略默認(rèn)為2345級(jí)別。
linux常見的關(guān)機(jī)和重啟命令:
shutdown
halt
-p 切斷電源
需要配合exec命令使用。
reboot
poweroff
init 0
init 6
#exec 執(zhí)行文件,并以子進(jìn)程替換父進(jìn)程。
例如:
#exec halt -p
守護(hù)進(jìn)程的類型:
獨(dú)立守護(hù)進(jìn)程
瞬時(shí)守護(hù)進(jìn)程
不需要關(guān)聯(lián)至運(yùn)行級(jí)別。
xinetd:超級(jí)守護(hù)進(jìn)程。管理所有瞬時(shí)守護(hù)進(jìn)程。需要關(guān)聯(lián)運(yùn)行級(jí)別。
本文永久更新鏈接地址http://www./Linux/2015-03/114679.htm

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多