1、centos5,6啟動流程
centos系統啟動流程
linux系統的組成部分:內核+根文件系統
內核:進程管理,內存管理,網絡協議棧,文件系統,驅動程序,安全功能
運行的系統環境可分為兩層:內核空間,用戶空間
用戶空間:應用程序(進程或線程)
內核空間:內核代碼(系統調用)
內核設計流派:
單內核設計:把所有功能集成與同一個程序。 linux
微內核設計:每種功能使用一個單獨的子系統實現。window,solaris
linux內核特點:
(1)支持模塊化:支持模塊運行時動態裝載或卸載。 .ko(kernel object,/lib/mudules/)
(2)組成部分:
核心文件:/boot/vmlinuz-version-release ,內核安裝多個,會有多個核心文件。
ramdisk:輔助的偽根系統CentOS 5: /boot/initrd-VERSION-release.img,CentOS6,7: /boot/initramfs-VERSION-release.img
(內核加載完成后,需要加載跟,必須加載/lib/modules/下驅動,所以要將偽根(initramfs-2.6.32-642.el6.x86_64.img)編譯進內核。initrd變成initramfs,就是避免雙緩存,從而提升速度的。centos6可以通過:mkinitrd initramfs-`uname -r`.img `uname -r`創建)
模塊文件:/lib/modules/version-release ,模塊如,文件系統,網絡等等
centos系統(mbr類的)的啟動流程:
(1) POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。
ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自 檢程序和系統啟動自舉程序等。
RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定
(2) bootloader: 引導加載器,引導程序,按次序查找引導設備,第一個有引導程序的設備為本次啟動設備bootloader.
widows:ntloader
linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核
LILO: linux loader (手機上跑的)
GRUB: GRandUnified Bootloader :(1)GRUB 0.X :GRUB Legacy (2) GRUB 1.X :GRUB2
MBR: 512bytes,446bytes:bootloader,64bytes:fat(各分區信息),2:bytes:55aa有效信息。
dd if=/dev/sda of=/root/mbr bs=1 count=512; hexdump -C -v /dev/sda可以查看前512字節
GRUB:
bootloader:1st stage
partitionfilesystem dirver ,1.5 stage,為bootloader后,/dev/sda 2-30個扇區(sector)
partitions : /boot/grub 2nd stage , grub.conf —>root=uuid為根的分區
(3)kernel加載內核
自身初始化:(1)探測可識別到的所有硬件設備
(2)加載硬件驅動程序:(有可能會借助于randisk加載驅動
內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問
ramdisk–> ramfs提高速度
CentOS 5: initrd, 工具程序:mkinitrd
CentOS 6: initramfs,工具程序:mkinitrd, dracut initramfs-2.6.32-642.el6.x86_64.img
)
(3) 以只讀方式掛載根文件系統;
(4) 運行用戶控件的第一個應用程序:/sbin/init
init程序的類型:
centos 5: sysV init ,配置文件: /etc/inittab
centos 6 : upstart , 配置文件 : /etc/inittab(為了兼容5遺留的) , 更主要的是/etc/init/*.conf
centos 7 : systemd ,配置文件: /etc/systemd/system/
系統初始化流程(內核級別):post–>BootSequence(bios)–>Bootloader(mbr)–>kernel(借助ramdisk加載根文件系統)–>rootfs(readonly)–>/sbin/init
/sbin/init centos
運行級別 ( /etc/inittab ) :為系統運行或維護等目的而設定;0-6: 7個級別
0:關機 1:單用戶模式(root自動登錄), single, 維護模式 (開機–>esc–>a–>1–>進去系統–>修改密碼)
2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式 3:多用戶模式,正常模式;文本界面
4:預留級別;可同3級別 5:多用戶模式,完全功能模式;圖形界面 6:重啟
默認級別:3, 5
切換級別:init#。 關機:init 0 字符操作界面:init 3 進入圖形界面:init 5 重啟系統:init 6
查看級別:runlevel; who -r
centos5,6啟動(已redhat5.8為例)
配置文件:/etc/inittab
每行定義一種action以及與之對應的process
action:walt:等待切換至此任務所在的戒備時只需一次
respawn:次任務終止時,就自動沖洗啟動之
initdefault:設定默認運行級別,此時,process省略,如上圖
sysinit:系統初始方式,此處一般為只讀/etc/rc.d/rc.sysinit腳本
例如:
id:3:initdefault:
si : sysinit :/etc/rc.d/rc.sysinit
lo:3:wait:/etc/rc.d/rc 3
意味著去啟動或關閉/etc/rc.d/rc3.d/目錄下的服務
K* : 要停止的服務; K##*,優先級,數字越小,越是優先關閉;依賴的服務先關閉,然后關閉被依賴的
S*:要啟動的服務,數字越小,越是優先啟動,被依賴的服務先啟動,而依賴的服務后啟動。
rc腳本:接受一個運行級別數字為參數
腳本框架:
for srv in /etc/rc.d/rc$.d;do for srv in /etc/rc.d/rc#.d;do
$srv stop $srv start
done done
/etc/init.d/*(/etc/rc.d/init.d/*)目錄為服務腳本 執行方式:
#/etc/rc.d/init.d/srv_scripts {start|stop|restart|status}
# service srv_scripts {start|stop|restart|status}
/etc/rc.d/initd/目錄手動添加程序服務后,可用chkconfig創建運行級別
/etc/rc.d/initd/目錄腳本格式
chkconfig命令 :管控/etc/init.d/每個服務腳本在各級別下的啟動或關閉狀態;
chkconifg 服務 –add:服務受chkconfig控制
chkconfig 服務 –del : 服務不受chkconfig控制
chkconfig –list :查看各運行級別下服務啟動情況
chkconfig –list 特定服務 :查看特定服務各運行級別下服務啟動情況
修改指定的連接類型
chkconfig [–level levels] name <on| off| reset> (–level levels):為指定的運行級別,如果不指,則默認為2,3,4,5
rc.local: 開機就執行的腳本,可以將開機需要執行的命令放入/etc/rc.d/rc.local文件,這個文件在
rc2.d,rc3.d,rc4.d,rc5.d目錄中,有對應的軟連接,而且數字是最后的
注意:正常級別下,最后啟動的一個服務S99local沒有連接至/etc/init.d下的摸個腳本,而是連接至/etc/rc.d/rc.local的腳本,
不變或不需要寫為服務腳本的程序期望能開機自動運行時,直接放在與此腳本文件中即可。
tty1:2345 :respawn:/usr/sbin/mingetty tty6 啟動虛擬終端的
(1)mingetty會調用login程序
(2)打開虛擬終端的程序除了mingetty之外,還有諸如getty等;
系統初始化腳本:/etc/rc.d/rc.sysinit
(1)設置主機名
(2)設置歡迎信息
(3)激活udev和selinux
(4)掛載/etc/fstab文件中定義的所有文件系統。
(5)檢查根文件系統,并以讀寫方式重新掛載根文件系統
(6)設置系統時鐘
(7)根據/etc/sysctl.conf文件的設置,來設定內核參數。
(8)激活lvm及軟raid設備
(9)激活swap設備
(10)加載額外設備的驅動程序
(11)清理操作
總結(用戶控件的啟動流程) :/sbin/init(/etc/inittab)
設置默認運行級別–>運行系統初始化腳本,完成系統初始–>關閉對應級別下面要停止的服務,啟動對應級別下需要開的服務–>設置登錄終端–>啟動圖形終端
centos6啟動流程
1.加載BIOS的硬件信息,獲取第一個啟動設備。
2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息
3.加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備。
4.核型執行init程序并獲取運行信息。
5.Init執行/etc/rc.d/rc.sysinit文件。
6.啟動核心的外掛模塊(/etc/modprobe.conf)。
7.Init執行運行的各個批處理文件(scripts).
8.Init執行/etc/rc.d/rc.local.
9.執行/bin/login程序,等待用戶登錄。
10.登錄之后開始以Shell控制主機。
centos6啟動
init程序:upstart,單依然為/sbin/init,其配置文件/etc/init/*.conf,/etc/inittab(僅用于定義默認運行級別)
/etc/init/rc.conf init-system-dbus.conf
注意:*.conf為upstart風格的配置文件
centos7啟動
init程序:systemd,配置文件/usr/lib/systemd/system/*, /etc/systemd/system/*
systemctl {start|stop|status|restart} 服務[.service] [.service]可省
完全兼容sysV腳本機制;因此service命令依然可用
centos5,6破解口令
(1)開機按e,進入grub界面
(2)在quiet后寫1,按回車鍵,進入single模式
(3)進入系統后修改root密碼,在reboot即完成密碼修改。
1、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“messages-yyyymmdd”
[root@localhost ~]# chmod u+x cpmessage.sh
[root@localhost ~]# crontab -l
* * * * 0,2,4 /root/cpmessage.sh
[root@localhost ~]# cat /root/cpmessage.sh
#!/bin/bash
#auther:xiong
cp /var/log/messages /logs/message-`date +%Y%m%d`
2、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中
[root@localhost ~]# crontab -l
* */2 * * * /root/cpmeminfo.sh
[root@localhost ~]# cat cpmeminfo.sh
#!/bin/bash
#auther:xiong
cat /proc/meminfo | grep -E "S|M" >> /tmp/meminfo.txt
[root@localhost ~]#
原創文章,作者:maoxiong,如若轉載,請注明出處:http://www.www58058.com/44766