CentOS系統啟動流程–上

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

(0)
sjfbjssjfbjs
上一篇 2016-09-13 15:19
下一篇 2016-09-13 15:19

相關推薦

  • 0801課堂練習與作業

    1、將/etc/issue文件中的內容轉換為大寫后保存至/tmp/issue.out文件中      cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out 2、將當前系統登錄用戶的信息轉換為大寫后保存至/tmp/who.out文…

    Linux干貨 2016-08-02
  • Git 分布式 Moosefs + Corosync + DRBD 集群

        對于 Git 集群來說,在不采用存儲陣列的情況下,分布式存儲系統是一個很好的解決方案。目前可使用的分布式文件系統,初步了解了一下,Git 是屬于小文件的應用,因此可考量的我想就只有目前的 Moosefs、Ceph 了,Ceph 目前好似國內應用不多,貌似不太穩定。至于 GlusterFS 其比較適用于大文件的應…

    Linux干貨 2016-02-22
  • 計算機網絡基礎及常用工具

    Linux網絡屬性配置      計算機網絡:      TCP/IP: 協議棧(使用)      ISO, OSI: 協議棧(學習)  MAC:Media Access Control      48bits:   &…

    Linux干貨 2017-01-02
  • Linux 基礎(三)——用戶管理&正則表達式

    1、  列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who | cut -d " " -f1 | uniq 2、  取出最后登錄到當前系統的用戶的相關信息。 last -1 | cut -d " " -f1 | head -1 | id 3、  …

    Linux干貨 2016-11-08
  • 數據庫基礎知識

    關系模型:結構化數據模型實體-關系模型對象關系模型:基于對象的數據模型半結構化數據模型:XML(擴展標記語言) SQL:Structure Query Language結構化查詢語言DML:數據操作語言INSERT DELETE SELECT UPDATEDDL:數據定義語言CREATE DROP ALTERDCL: 數據控制語言GRANT REVOKE R…

    Linux干貨 2017-09-25
  • 初識 vi/vim文本編輯器

    我們操作文件,終究離不開編輯文件,對文件內容的編輯,Linux系統下,我們通常使用VI/VIM來編輯文件。VI是每個Linux都會自帶的文本編輯器,VIM是VI的增強版,現在的最新版都已自帶,但是可能有些發行版本沒有自帶,可以使用sudo apt-get install vim命令安裝vim。 可以使用vi或者vim命令直接進入新的文本文件,或者vim 文件…

    Linux干貨 2017-07-29
欧美性久久久久