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
下一篇 2016-09-13

相關推薦

  • 進程與周期任務

    STAT:進程狀態: R:running S: interruptablesleeping D: uninterruptable sleeping T: stopped Z: zombie +: 前臺進程 l: 多線程進程 L:內存分頁并帶鎖 N:低優先級進程 <: 高優先級進程 s: session leader,會話(子進程)發起者 top欄位信息…

    Linux干貨 2017-05-15
  • SRPM具體使用過程

    SRPM 簡介:SRAM是Source RPM的意思,就是RPM的源代碼的意思,這個SRPM就是沒有經過編譯的源代碼。如果我們想要安裝一個SRPM軟件,那么就必須: 先將該軟件以RPM管理的方式編譯,將SRPM編譯成為RPM文件 然后將編譯完成的RPM文件安裝到Linux系統中。 一.程序包編譯: 程序包編譯安裝: Application-VERSION-r…

    Linux干貨 2016-08-24
  • 計算機相關簡介和linux相關簡介

    一、計算機相關簡介與linux的一些概念 計算機系統 由硬件(Hardware)系統和軟件(Software)系統兩大部分構成: 硬件系統 :CPU(控制器、運算器),內存儲器(RAM、ROM),外存儲器(硬盤等),輸入設備(鍵盤、鼠標等),輸出設備(顯示器等),其他設備相關設備。  軟件系統 :系統軟件(操作系統,數…

    Linux干貨 2017-02-18
  • Linux 基礎知識(六.二)

    1、復制/etc/rc.d/rc.sysinit至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加# [root@server01 tmp]# cp /etc/rc.d/rc.sysinit /tmp/ [root@server01 tmp]# sed -n "s@^[[:space:]]\+@#&@…

    Linux干貨 2016-11-14
  • N26——第三周作業

    一、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可 [root@localhost ~]# who | cut -d ' ' -f1 | uniq root zhaoyujia 二、取出最后登錄到當前系…

    Linux干貨 2017-01-14
  • grep命令及正則表達式

    grep命令和正則表達式 grep基本概念 grep:global search regular expression and print out the line. 作用:文本過濾器,用于文本搜索,用指定“模式”逐行匹配。 模式:由正則表達式字符及文本字符所編寫的過濾條件 正則表達式:由一類特殊字符和文本字符所編寫的模式,其有些字符不表示字符字面意義,而表…

    Linux干貨 2016-11-05
欧美性久久久久