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控制主機。
啟動流程
POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接
口、鍵盤、CD-ROM光驅等硬件情況的檢測。
ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和
系統啟動自舉程序等。
RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定
按次序查找引導設備,第一個有引導程序的設備為本次啟動設備
bootloader: 引導加載器,引導程序
windows: ntloader,僅是啟動OS
Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把
統控制權移交給內核
LILO:LInux LOader
GRUB: GRand Unified Bootloader
GRUB 0.X: GRUB Legacy,GRUB2
MBR:
446: bootloader, 64: 分區表, 2: 55AA
GRUB:
primary boot loader : 1st stage,1.5 stage
secondary boot loader :2nd stage,分區文件
kernel:
自身初始化:
探測可識別到的所有硬件設備
加載硬件驅動程序(可能借助于ramdisk加載驅動)
以只讀方式掛載根文件系統
運行用戶空間的第一個應用程序:/sbin/init
——–
系統啟動流程
v init程序的類型:
v SysV: init, CentOS 5之前
配置文件:/etc/inittab
v Upstart: init,CentOS 6
配置文件:/etc/inittab, /etc/init/*.conf
v Systemd:systemd, CentOS 7
配置文件:/usr/lib/systemd/system
/etc/systemd/system
——–
啟動流程
ramdisk:
內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件
訪問
ramdisk –> ramfs 提高速度
CentOS 5: initrd, 工具程序:mkinitrd
CentOS 6: initramfs, 工具程序:mkinitrd, dracut
系統初始化:
POST –> BootSequence (BIOS) –>
Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只讀) –> init (systemd
/sbin/init CentOS 5
運行級別:為系統運行或維護等目的而設定;0-6:7個級別
0:關機
1:單用戶模式(root 自動登錄), single, 維護模式
2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式
3:多用戶模式,正常模式;文本界面
4:預留級別;可同3級別
5:多用戶模式,正常模式;圖形界面
6:重啟
默認級別:3, 5
切換級別:init #
查看級別:runlevel ; who -r
——
init初始化
vinit讀取其初始化文件:/etc/inittab
初始運行級別(RUN LEVEL)
系統初始化腳本
對應運行級別的腳本目錄
捕獲某個關鍵字順序
定義UPS電源終端/恢復腳本
在虛擬控制臺生成getty
在運行級別5初始化X
CentOS5的inittab文件
配置文件:/etc/inittab
每一行定義一種action以及與之對應的process
id:runlevel:action:process
action:
wait: 切換至此級別運行一次;
respawn:此process終止,就重新啟動之
initdefault:設定默認運行級別;process省略
sysinit:設定系統初始化方式,此處一般為指定
/etc/rc.d/rc.sysinit
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1…
l6:6:wait:/etc/rc.d/rc 6
CentOS6 /etc/inittab和相關文件
/etc/inittab
設置系統默認的運行級別
id:3:initdefault:
/etc/init/control-alt-delete.conf
/etc/init/tty.conf
/etc/init/start-ttys.conf
/etc/init/rc.conf
/etc/init/prefdm.conf
/etc/rc.d/rc.sysinit: 系統初始化腳本
(1) 設置主機名
(2) 設置歡迎信息
(3) 激活udev和selinux
(4) 掛載/etc/fstab文件中定義的文件系統
(5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統
(6) 設置系統時鐘
(7) 激活swap設備
(8) 根據/etc/sysctl.conf文件設置內核參數
(9) 激活lvm及software raid設備
(10) 加載額外設備的驅動程序
(11) 清理操作
v 說明:rc N –> 意味著讀取/etc/rc.d/rcN.d/
K*: K##*:##運行次序;數字越小,越先運行;數字
越小的服務,通常為依賴到別的服務
S*: S##*:##運行次序;數字越小,越先運行;數字
越小的服務,通常為被依賴到的服務
for srv in /etc/rc.d/rcN.d/K*; do
$srv stop
done
for srv in /etc/rc.d/rcN.d/S*; do
$srv start
done
chkconfig命令
chkconfig命令
查看服務在所有級別的啟動或關閉設定情形:
chkconfig [–list] [name]
添加:
SysV的服務腳本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig –add name
#!/bin/bash
#LLLL 表示初始在哪個級別下啟動,-表示都不啟動
chkconfig: LLLL nn nn
刪除:
chkconfig –del name
修改指定的鏈接類型
chkconfig [–level levels] name
–level LLLL: 指定要設置的級別;省略時表示2345
ntsysv命令
xinetd管理的服務
v service 命令:手動管理服務
service 服務 start|stop|restart
service –status-all
v 瞬態(Transient)服務被xinetd進程所管理
進入的請求首先被xinetd代理
配置文件:/etc/xinetd.conf、/etc/xinetd.d/
與libwrap.so文件鏈接
用chkconfig控制的服務:
chkconfig tftp on
v 注意:正常級別下,最后啟動一個服務S99local沒有鏈接至
/etc/rc.d/init.d一個服務腳本,而是指向了
/etc/rc.d/rc.local腳本
v 不便或不需寫為服務腳本放置于/etc/rc.d/init.d/ 目錄,且
又想開機時自動運行的命令,可直接放置于
/etc/rc.d/rc.local文件中
? /etc/rc.d/rc.local在指定運行級別腳本后運行
? 可以根據情況,進行自定義修改
識別硬盤設備:
(hd#,#)
hd#: 磁盤編號,用數字表示;從0開始編號
#: 分區編號,用數字表示; 從0開始編號
(hd0,0) 第一塊硬盤,第一個分區
v 手動在grub命令行接口啟動系統:
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro
root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
grub legacy配置文件
配置文件:/boot/grub/grub.conf
default=#: 設定默認啟動的菜單項;落單項(title)編號從0開始
timeout=#:指定菜單項等待選項選擇的時長
splashimage=(hd#,#)/PATH/TO/XPM_FILE:菜單背景圖片文件路徑
hiddenmenu:隱藏菜單
password [–md5] STRING: 啟動菜單編輯認證
title TITLE:定義菜單項“標題”, 可出現多次
root (hd#,#):grub查找stage2及kernel文件所在設備分區;為grub “根”
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啟動的內核
initrd /PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件
password [–md5] STRING: 啟動選定的內核或操作系統時進行認證
grub加密
vgrub-md5-crypt命令
破解root口令:
啟動系統時,設置其運行級別1
v 進入單用戶模式:
(1) 編輯grub菜單(選定要編輯的title,而后使用e命令);
(2) 在選定的kernel后附加
1, s, S或single都可以;
(3) 在kernel所在行,鍵入“b”命令
grub安裝
安裝grub:
(1) grub-install
安裝grub stage1和stage1_5到/dev/DISK磁盤上,并
復制GRUB相關文件到 DIR/boot目錄下
grub-install –root-directory=DIR /dev/DISK
破壞分區表時可以使用,這樣重裝可以使用
(2) grub 破壞分區表時不可以使用
grub> root (hd#,#)
grub> setup (hd#)
自制linux系統
分區并創建文件系統
fdisk /dev/sdb
分兩個必要的分區
/dev/sdb1對應/boot /dev/sdb2對應根 /
mkfs.ext4 /dev/sdb1
掛載boot
mkdir /mnt/boot
mount /dev/sdb1 /mnt/boot
安裝grub
grub-install –root-directory=/mnt /dev/sdb
自制linux系統
恢復內核和initramfs文件
cp /boot/vmlinuz-2.6.32-642.el6.x86_64
/mnt/boot/
cp /boot/initramfs-2.6.32-642.el6.x86_64.img
/mnt/boot
建立grub.conf文件
Vim /mnt/boot/grub.conf
kernel /vmlinuz-2.6.32-642.el6.x86_64
root=/dev/sda2 selinux=0 init=/bin/bash
chroot /mnt/sysroot
自制linux系統
創建一級目錄
mkdir /mnt/sysroot
mount /dev/sdb2 /mnt/sysroot
mkdir –pv
/mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc
,opt,home,root,boot,dev,mnt,media}
復制bash和相關庫文件
救援環境
在根文件系統無法使用時需要,如/bin/mount刪除
對系統沒有特殊要求
從光盤引導(boot.iso或者安裝光盤#1)
從USB盤(由boot.iso制作)引導
文件系統重組
Anaconda將會詢問是否應該掛載文件系統
/mnt/sysimage/*
/mnt/stage2
$PATH包括硬盤的目錄
文件系統節點
提供系統特定的設備文件
mknod了解major/minor #’sr
系統配置文件丟失修復
系統在引導期間,很重要的一個過程就是init進程讀取其配
置文件/etc/inittab,啟動系統基本服務程序及默認運行
級別的服務程序完成系統引導,如果/etc/inittab誤刪除
或修改錯誤,Linux將無法正常啟動。此時,只有通過救援
模式才可以解決此類問題。
? 有備份文件的回復方法
? 沒有備份文件的恢復辦法
有備份文件的恢復辦法:
進入救援模式,執行chroot命令后,如果有此文件
的備份(強烈建議系統中的重要數據目錄,如/etc
、/boot等要進行備份),直接將備份文件拷貝回
去,退出重啟即可。如果是配置文件修改錯誤,如
比較典型的/boot/grub/grub.conf及/etc/passwd
的文件修改錯誤,也可以直接修正恢復。假設有備
份文件/etc/inittab.bak,則在救援模式下執行:
sh-3.1# chroot /mnt/sysimage
sh-3.1# cp /etc/inittab.bak /etc/inittab
系統配置文件丟失修復
v 沒有備份文件的恢復辦法
如果一些配置文件丟失或軟件誤刪除,且無備份,可以通過重新
安裝軟件包來恢復,首先查找到/etc/inittab屬于哪一個RPM包
# chroot /mnt/sysimage
# rpm -qf /etc/inittab
initscripts-9.03.49-1.el6.centos.x86_64
退出chroot模式:
# exit
掛載存放RPM包的安裝光盤(在救援模式下,光盤通常掛載在
/mnt/source目錄下):
系統配置文件丟失修復
# mount /dev/sr0 /mnt/source
CentOS6系統的RPM包存放在光盤Package 目錄下,另外,因
為要修復的硬盤系統的根目錄在/mnt/sysimage下,需要使用-
-root選項指定其位置。覆蓋安裝/etc/inittab文件所在的RPM
包:
# rpm -ivh –replacepkgs | force /mnt/source/Packages/
initscripts-9.03.49-1.el6.centos.x86_64.rpm
其中的rpm命令選項“–replacepkgs”表示覆蓋安裝,執行完成
后,即已經恢復了此文件。
系統配置文件丟失修復
如果/etc/fstab文件被破壞后,如果分區時沒卷標時就只能自己手動掛載根,掛載完成后重啟讓系統幫助掛載,繼續救援模式,如果剛才掛載成功,則chroot模式會重新出現,重新安裝grub.安裝內核、、grub時無需指定boot目錄
但是這里有個問題,如果etc/fstab文件沒修復的話,則將/boot作為grub.conf的內核和虛擬文件系統的‘根’。
修復了etc/fstab文件則沒有如上問題。在寫grub.conf
如果想只提取RPM包中的/etc/inittab文件進行恢復,可以在進
入救援模式后,執行命令:
rpm2cpio Packages/initscripts-9.03.53-1.el6.centos.x86_64.rpm | cpio -itv
Rpm -qpl Packages/initscripts-9.03.53-1.el6.centos.x86_64.rpm
# rpm2cpio /mnt/source/Packages/initscripts-9.03.49-
1.el6.centos.x86_64.rpm| cpio -idv ./etc/binittab
# cp etc/inittab /mnt/sysimage/etc
注意此命令執行時不能將文件直接恢復至/etc 目錄,只能提取到
當前目錄下,且恢復的文件名稱所在路徑要寫完整的路徑。提取
文件成功后,將其復制到根分區所在的/mnt/sysimage 目錄下相
應位置即可
etc/fstab 沒了的話只能重新查找邏輯卷lvscan
vgchange -ay 可以激活邏輯卷
原創文章,作者:sjfbjs,如若轉載,請注明出處:http://www.www58058.com/45254