Linux系統啟動過程及其修復過程簡析

Linux組成

Linux: kernel+rootfs

    kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能

    rootfs:程序和glibc

    庫:函數集合, function, 調用接口(頭文件負責描述)

        過程調用:procedure,無返回值

        函數調用:function

    程序:二進制執行文件

內核設計流派:

    單內核(monolithic kernel):Linux

        把所有功能集成于同一個程序

    微內核(micro kernel):Windows, Solaris

        每種功能使用一個單獨子系統實現

內核

Linux內核特點:

    支持模塊化:.ko(內核對象)

        如:文件系統,硬件驅動,網絡協議等

    支持內核模塊的動態裝載和卸載

組成部分:

    核心文件:/boot/vmlinuz-VERSION-release

        ramdisk:輔助的偽根系統

        CentOS 5: /boot/initrd-VERSION-release.img

        CentOS6,7: /boot/initramfs-VERSION-release.img

    模塊文件:/lib/modules/VERSION-release

示例:Linux的核心文件

wKiom1feQFbRZArfAABBWby7AtM306.png

CentOS 6的啟動流程

1.加載BIOS的硬件信息,獲取第一個啟動設備

2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息

3.加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備

4.核心執行init程序,并獲取默認的運行信息

5.init程序執行/etc/rc.d/rc.sysinit文件

6.啟動核心的外掛模塊

7.init執行運行的各個批處理文件(scripts)

8.init執行/etc/rc.d/rc.local

9.執行/bin/login程序,等待用戶登錄

10.登錄之后開始以Shell控制主機    

Linux啟動流程

wKioL1feQcWxLnUXAAHhfW5uN8E023.jpg

1、POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存RAM、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。

    ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啟動自舉程序等。

    RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

2、MBR:

    其中Bootloader占據446字節,分區表占據64字節,magic num占據2字節。MBR將加載Bootloader去開始后邊的工作。

3、bootloader: 引導加載器,引導程序

    Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核

    LILO:Linux Loader

Bootloader(內核加載器)位于第0磁道第0扇區的446字節是最前邊的446字節!Bootloader的工作機制:bootloader可以訪問文件系統,而內核則作為文件而存在。所以bootloader可以訪問內核文件,深入的說bootloader訪問內核文件時,是將內核文件Vmlinz所在的整個分區當作根去訪問的,如訪問/Vmlinz而根"/"本身的存在位置是由內核文件自己決定。(因為每個文件必須要有一個自己的起始路徑)現代我們常用的內核加載器是grub(Grand Unified Bootloader)以此grub來加載內核。加載內核之前grub所做的工作

4、GRUB:就是MBR中的前 446 個字節,是BooTLoader的一種,它的作用是要選擇要啟動的內核

    primary boot loader : 1st stage,1.5 stage

    secondary boot loader :2nd stage,分區文件

/boot/grub文件夾里面有各種啟動的文件備份

wKiom1feRTHzgtXSAAB7HdmUcp4377.png

主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5組成。

device.map:存放的是內核文件的根分區

grub.conf:就是菜單列表。里面設置了可以選擇的內核菜單,存放于stage2中。

stage:用于grub引導程序過大,所以分2段引導,第一段存放在MBR中,第二段存放于內核文件系統中,第一段引導完成后可以找到第二段。 但是,第二段是存放于內核文件系統中的,此時還沒有格式化文件系統,如何可以訪問到第二段的 menu.lst 呢??就需要借助于中間層 stage1_5,有它來協助 stage1 段來訪問 stage2 段。stage1_5通常位于 stage1 字段后的 63 個扇區。 由于stage2 在內存中存放可以使用的文件系統不確定,所以這就是有多個 stage1_5 的原因了。

示例:grub.conf文件

wKiom1feSs2RpAwgAAAmBSj4Smg699.png

5、kernel:

   自身初始化:

    探測可識別到的所有硬件設備

    加載硬件驅動程序(可能借助于ramdisk加載驅動)

    以只讀方式掛載根文件系統

    運行用戶空間的第一個應用程序:/sbin/init

系統啟動流程

init程序的類型

SysV: init, CentOS 5之前

    配置文件:/etc/inittab

Upstart: init,CentOS6

    配置文件:/etc/inittab , /etc/init/*.conf

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 6之前

運行級別:為系統運行或維護等目的而設定;0-6:7個級別

    0:關機

    1:單用戶模式(root自動登錄), single, 維護模式

    2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式

    3:多用戶模式,正常模式;文本界面

    4:預留級別;可同3級別

    5:多用戶模式,正常模式;圖形界面

    6:重啟

默認級別:3(多用戶CLI模式), 5(圖形化模式)

切換級別:init#

查看級別:runlevel; who -r

wKiom1feTSyA6Cr4AAAHqRWmAoM174.png

init讀取其初始化文件:/etc/inittab

    初始運行級別(RUN LEVEL)

    系統初始化腳本

    對應運行級別的腳本目錄

    捕獲某個關鍵字順序

    定義UPS電源終端/恢復腳本

    在虛擬控制臺生成getty

    在運行級別5初始化X

CentOS 5的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/rc0

    l1:1:wait:/etc/rc.d/rc1…

    l6:6:wait:/etc/rc.d/rc6

CentOS 6 /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

示例:CentOS6的/etc/inittab文件。如果需要設置為圖形化啟動,把3改成5即可

wKioL1feT8nBcCTWAACieaknX6E981.png

/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) 清理操作

wKioL1feUM2De59PAABuVeGpGdY621.png

說明:rcN –> 意味著開機讀取/etc/rc.d/rcN.d/

    K*: K##*:##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務

    S*: S##*:##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務

啟動服務的腳本:

    for srvin /etc/rc.d/rcN.d/K*; do

        $srv stop

    done

    for srvin /etc/rc.d/rcN.d/S*; do

        $srv start

    done

示例:屬于init3開機級別的服務進程文件

wKiom1feURuz67F9AADIyRBpcUY103.png

chkconfig命令 — 查看服務在所有級別的啟動或關閉設定情形:

    chkconfig [–list] [name]

添加:

    SysV的服務腳本放置于/etc/rc.d/init.d(/etc/init.d)

    chkconfig –add name

        #!/bin/bash

        #LLLL 表示初始在哪個級別下啟動,-表示都不啟動

        # chkconfig: LLLL nnnn

刪除:

    chkconfig –del name

修改指定的鏈接類型

    chkconfig [–level levels] name <on|off|reset>

          –level LLLL: 指定要設置的級別;省略時表示2345

ntsysv命令:圖形化的chkconfig命令

示例:制作一個模擬服務進程,并啟動它。

#chkconfig:2345表示能被這幾個級別的init程序運行,88表示啟動優先級,22表示關閉優先級

wKioL1feWGnhR7c_AAA0ekUPFXU537.png

把腳本復制到/etc/init.d/目錄下面

wKioL1feWWKiEM4KAAA4RQde2vs164.png添加腳本到服務里面,可以看見腳本默認的啟動級別了,這個是根據腳本里面來定義的

wKioL1feWgXAFYKMAAAzVz_x-2U407.png

可以關閉某些運行的級別

wKioL1feWwXi3OrnAAAd60_x2JE741.png

可以查看到/etc/rc.d/rcN.d/文件夾下面的各種K和S打頭的testservice文件

wKioL1feYJuhgEowAAB_S64RrME851.png

可以用chkconfig –level N SERVICE on | off 修改服務的開機默認開啟狀態

可以看見,其實/etc/rc.d/rcN.d/下面的K和S打頭的文件就是一個軟鏈接而已~

wKioL1feYPKzt--aAACA8F_Uqdg133.png

至于為什么這些只是一個軟鏈接的文件,大家可以參考/etc/rc.d/rc的腳本里面可以看到

例如這里定義K開頭的服務,這里只是rc腳本的一部分。

wKioL1feYyeBxghwAABLs-q6TDo733.png測試此服務開啟,關閉

wKiom1feXBGwP6PmAAArbF6zwtY755.png

守護進程:xinetd管理的服務(很多的服務依賴于此服務)

service 命令:手動管理服務

    service 服務start|stop|restart

    service –status-all

瞬態(Transient)服務被xinetd進程所管理

進入的請求首先被xinetd代理

配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service>

與libwrap.so文件鏈接

用chkconfig控制的服務:

    chkconfigtftpon

wKioL1feZpyTfJM4AABMBWKwRYY380.png

注意:正常級別下,最后啟動一個服務S99local沒有鏈接至/etc/rc.d/init.d一個服務腳本,而是指向了/etc/rc.d/rc.local腳本

不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local文件中

/etc/rc.d/rc.local在指定運行級別腳本后運行

可以根據情況,進行自定義修改

總結:/sbin/init–> (/etc/inittab) –> 設置默認運行級別–> 運行系統初始腳本、完成系統初始化–> (關閉對應下需要關閉的服務)啟動需要啟動服務–> 設置登錄終端

CentOS 6 init程序為: upstart, 其配置文件:

/etc/inittab, /etc/init/*.conf,配置文件的語法遵循upstart配置文件語法格式,和CentOS5不同

示例:破解CentOS5和6的root口令

首先,在進入菜單這里,點擊a進入編輯內核參數

wKioL1fehSrBAa8DAAAW7GImK0M233.png

在參數后面加一個1 | s | S | singel 參數都可以,然后輸入回車,進入單機模式

wKiom1fehSvC2ZNVAAAQl4H2xEg187.png

在單機模式下面,直接輸入passwd命令修改root賬號密碼,搞定。

wKioL1fehSuiWOw2AAAHfqjdAs8827.png

grub legacy

CentOS 6啟動流程

    POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> rootfs–> switchroot–> /sbin/init–>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別–> 系統初始化腳本rc.sysinit–> 關閉或啟動對應級別的服務–> 啟動終端

grub: GRand Unified Bootloader

   grub 0.97: grub legacy

   grub 2.x: grub2

   grub legacy:

     stage1: mbr

     stage1_5: mbr之后的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統

     stage2:磁盤分區(/boot/grub/)

配置文件:/boot/grub/grub.conf <–/etc/grub.conf(軟鏈接)

stage2及內核等通常放置于一個基本磁盤分區

功用

(1) 提供啟動菜單、并提供交互式接口

    a:內核參數

    e: 編輯模式,用于編輯菜單

    c: 命令模式,交互式接口

(2) 加載用戶選擇的內核或操作系統

    允許傳遞參數給內核

    可隱藏啟動菜單

(3) 為菜單提供了保護機制

    為編輯啟動菜單進行認證

    為啟用內核或操作系統進行認證

grub的命令行接口

    help: 獲取幫助列表

    help KEYWORD: 詳細幫助信息

    find (hd#,#)/PATH/TO/SOMEFILE:

    root (hd#,#)

    kernel /PATH/TO/KERNEL_FILE: 設定本次啟動時用到的內核文件;額外還可添加許多內核支持使用的cmdline參數

    例如:max_loop=100 selinux=0init=/path/to/init

    initrd/PATH/TO/INITRAMFS_FILE: 設定為選定的內核提供額外文件的ramdisk

    boot: 引導啟動選定的內核

cat /proc/cmdline 查看內核的位置

內核參數文檔:/usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt


識別硬盤設備:

    (hd#,#)

    hd#: 磁盤編號,用數字表示;從0開始編號

    #: 分區編號,用數字表示; 從0開始編號

    (hd0,0) 第一塊硬盤,第一個分區

手動在grub命令行接口啟動系統:

    grub> root (hd#,#)

    grub> kernel /vmlinuz-VERSION-RELEASE roroot=/dev/DEVICE

    grub> initrd/initramfs-VERSION-RELEASE.img

    grub> boot

配置文件:/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: 啟動選定的內核或操作系統時進行認證


wKioL1fekNyjt2bkAABaKBCjGG0885.png

grub-md5-crypt命令

破解root口令:

    啟動系統時,設置其運行級別1

進入單用戶模式:

    (1) 編輯grub菜單(選定要編輯的title,而后使用e命令);

    (2) 在選定的kernel后附加1, s, S或single都可以;

    (3) 在kernel所在行,鍵入“b”命令

openssl 命令

openssl passwd -1 密碼加密

openssl passwd -salt "HRSby" -1 指定鹽為"HRSby"

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#)

示例1:新建一個啟動項,并且調整內核參數

修改grub.conf文件的參數

default=1 即是開機的時候默認啟動第二個選項,默認是0

password –md5 XXX 那里的意思,如果在title前面,那么進入菜單欄前面的時候會提示輸入密碼,

如果在title后面。那么在進入指定的菜單的時候,會提示輸入密碼。

kernel 內核后面加了max_loop=20 selinux=0 rhgb quiet,一會看一下效果

wKioL1feqt6g1do2AAA-9y7C5oo491.png然后在此處,默認選中了剛創建的Hello Linux的啟動菜單

wKioL1fepBmCtdHHAAATl94oH3k362.png

在進入菜單后,會發現,提示我們輸入密碼

wKiom1feqWbyIJxsAAACiaghFZE081.png

kernel rhgb quiet 的效果,靜默進入操作系統,這個功能不建議選用,因為看不到開機的啟動菜單

wKiom1fepGGzRv8fAABxY_viZHA706.png

如果沒有內核參數rhgb quiet的話,我們可以看見每個進程的開機自檢過程

wKiom1fepBzRVVteAAAnZUJSTVI499.png

wKioL1fepBqhRJN0AABaMjPvnd0467.png

kernel max_loop=20的效果,默認的話只有7個

wKiom1fepByBb35jAADUVbw-LQk456.png

示例2:當引導有問題的時候,手動輸入命令啟動系統

假如grub里面設置了系統啟動密碼

Linux系統啟動過程及其修復過程簡析

啟動的時候發現忘記了密碼,囧,怎么辦

Linux系統啟動過程及其修復過程簡析

此時可以退回菜單,選擇c的的cli啟動方式。

Linux系統啟動過程及其修復過程簡析

手動輸入root的位置,內核,以及initramfss的位置,然后輸入boot加載

Linux系統啟動過程及其修復過程簡析

因為selinux的關系,啟動的時候可能系統會進行自檢,此時等待一會就可以了,又后者可以在內核參數那里直接添加selinux=0來跳過系統自檢

Linux系統啟動過程及其修復過程簡析

然后發現已經可以登陸進去系統了,此時再登陸進去,然后把grub.conf里面的password刪掉就可以了

Linux系統啟動過程及其修復過程簡析

示例3:分區情況下,刪除/boot 和/etc/fstab,破壞446字節的mbr信息,并恢復之

首先,破壞mbr前446個字節,把/boot目錄下面所有的文件刪除,把/etc/grub.conf文件刪除

Linux系統啟動過程及其修復過程簡析

此時再重啟,會發現,計算機根本就識別不到硬盤上面的系統

Linux系統啟動過程及其修復過程簡析

此時我們放入光盤(此步驟也可以從其他有同樣文件的地方來scp拷一份過來)

Linux系統啟動過程及其修復過程簡析

加載光盤里面的救援模式

Linux系統啟動過程及其修復過程簡析

然后進去救援模式,會提示我們的計算機上面沒有發現linux分區,因為我們前面把分區表破壞了

Linux系統啟動過程及其修復過程簡析

此處選擇開啟shell就可以

Linux系統啟動過程及其修復過程簡析

進入到救援模式的cli界面,此時需要操作的是:

  1. 假設我們并不了解此計算機的分區,首先要查詢原來的分區表,此時可以用用lsblk命令查看到此前系統的塊設備信息,雖然可以看到塊設備信息,但是我們還是不能夠了解此前的分區信息,df命令出來的結果也并沒有顯示,所以,此時我們只能夠推斷此前的/根目錄是在哪個位置。

  2. 創建一個空的目錄,然后把塊設備掛載到此目錄

  3. 通過掛載,然后ls查看里面的信息,然后可以推斷出來此前的根目錄大概是哪里,還有boot分區在哪里,找到根目錄和boot目錄,然后就可以進入下一步的操作了

  4. 創建/etc/fstab文件,以保存我們已知的分區信息

Linux系統啟動過程及其修復過程簡析

此處由于暫時只知道兩個信息,然后把信息寫入到此文件Linux系統啟動過程及其修復過程簡析

完成此掛載信息后,千萬不能自己再對根目錄等進行操作,以免造成其他問題,此處應該要重啟電腦

Linux系統啟動過程及其修復過程簡析

重啟電腦以后再進入救援模式,會發現,已經提示有找到linux系統了,并且把系統掛載到了/mnt/sysimage目錄下面

Linux系統啟動過程及其修復過程簡析

Linux系統啟動過程及其修復過程簡析

之前那一步驟,只是稍微的修復了系統配置文件里面的兩個分區的信息而已

下面,我們需要對內核和grub進行修復

1.首先,掛載光驅到一個空目錄,然后安裝光盤里面的內核~

Linux系統啟動過程及其修復過程簡析

Linux系統啟動過程及其修復過程簡析

2.安裝完內核以后,我們可以切換到真實的系統,可以發現/boot目錄下面的文件大部分已經修復了,但是此處還是沒有grub.conf文件

3.然后我們開始對grub文件進行修復,命令是grub-install DEVICE

修復的過程中,會彈出來好多信息,注意的是千萬不要中斷此操作,不然會出現問題

Linux系統啟動過程及其修復過程簡析

等了一段時間以后,會發現修復已經完成,但是grub文件還是沒有,因為此處只是修復mbr

Linux系統啟動過程及其修復過程簡析

然后我們自己創建一個grub.conf的文件,并且手動添加以下等核心信息

Linux系統啟動過程及其修復過程簡析

編輯完,重啟計算機

Linux系統啟動過程及其修復過程簡析

然后此處會遇上selinux自檢,需要等待一段時間了,如果想調過此步操作,可以在之前的操作里面添加到kernel那一行的最后那里輸入selinux=0,以此來關閉selinux,不過不是很建議這么操作。

Linux系統啟動過程及其修復過程簡析

好久以后,發現登陸界面已經出來了~此時修復操作已經完畢。

Linux系統啟動過程及其修復過程簡析

注意:此操作是恢復了,但是分區表里面的信息,還是剛剛手動添加的分區表的信息,所以重啟掛載那些分區也是一個麻煩的事情,通過此案例,大家可以知道mbr引導,/boot目錄和/etc/fstab的重要性了吧?所以這些文件,最好平時就最好備份的操作,以免等到出現問題才來修復,會浪費很多的時間的。


示例4:假設是在邏輯卷情況下,刪除mbr 、/boot 和/etc/fstab,并且恢復之

之前的示例3是在普通的磁盤上面的修復操作,但是生產環境中,很可能我們會用上邏輯卷等,那么修復的操作就一樣了,但是修復的原理是跟示例3的幾乎是一樣的,只是在修復邏輯卷的地方稍有不同。

此處的前面的步驟是跟示例3的是一樣的,所以此處只界面跟示例3不一樣的地方

首先,也是需要進入救援模式

當mbr 、/boot 和/etc/fstab等信息刪除以后,進入救援模式里面也是提示找不到linux分區,此處我們依然不需要理會

Linux系統啟動過程及其修復過程簡析

進入到救援模式里面,我們直接用blkid命令,發現邏輯卷也沒有顯示出來,所以此處應該用邏輯卷的命令

1、輸入lvscan,然后就可以查找到此前系統里面的邏輯卷,并且此處帶有邏輯卷板的卷標,一看就知道該邏輯卷是掛載到哪里的,這樣的話對于我們修復的幫助就非常大

2、輸入vgchange -ay激活邏輯卷分區,默認的話是不激活的,所以開始的時候用blkid是不會顯示,在激活以后再輸入blkid,會發現已經可以查看到相關的信息。

3、找到分區信息的,下一步就跟示例3的一樣,需要掛載分區信息了

Linux系統啟動過程及其修復過程簡析

編輯/etc/fstab文件,輸入相關的掛載信息

Linux系統啟動過程及其修復過程簡析

編輯完文檔,此刻就可以重啟了

Linux系統啟動過程及其修復過程簡析

重啟完再重新進入救援模式,會提示系統已經掛載到/mnt/sysimage目錄里面的,跟此前的操作是一樣的

Linux系統啟動過程及其修復過程簡析

進入到救援模式,就開始修復grub的mbr信息,此操作過程跟示例3的一樣就不重復展示了。

修復完mbr的信息,此時就可以手動創建grub.conf文件

此處的kernel后面root=/dev/vg0/root,而不是此前的/dev/sda2,需要注意了,應該現在的root根目錄是掛載在邏輯卷里面,此處就是指定根的目錄位置,編輯完grub.conf文件,確認沒有問題就重啟電腦

Linux系統啟動過程及其修復過程簡析

重啟完電腦以后,可以發現已經可以重新進入系統了,此處實驗已經完畢。

Linux系統啟動過程及其修復過程簡析

示例5:修改Linux開機背景

有時候,Linux黑色的開機北京略顯無聊,此處我們當然也可以修改拉

在grub.conf文件里面我們可以此處有一個指向(hd0,0)/grub/splash.xpm.gz文件,這個就是開機的背景文件了,并且是個壓縮的文件。

Linux系統啟動過程及其修復過程簡析

此文件我們可以在/boot/grub目錄下面看到它,好了,既然知道文件在那里,那么修改起來大家就知道怎么操作了吧?不過有一個要求就是此圖片的分辨率為640×480.而且替換的背景的圖片也需要跟原文件一樣的后綴名,就是需要生成XXX.xpm.gz這樣格式的圖片

此處我們需要一個linux的工具ImageMagick軟件

Linux系統啟動過程及其修復過程簡析

然后把需要替換的原圖,用此工具編輯一下,然后把編輯完的圖片放到/boot/grub/目錄下面

Linux系統啟動過程及其修復過程簡析

這就是修改完開機背景的linux系統,是不是很炫酷?

Linux系統啟動過程及其修復過程簡析

修改圖片具體操作步驟

Linux系統啟動過程及其修復過程簡析

原創文章,作者:~微風~,如若轉載,請注明出處:http://www.www58058.com/47764

(0)
~微風~~微風~
上一篇 2016-09-19
下一篇 2016-09-19

相關推薦

  • linux 系統啟動流程

    假設以個人架設的linux主機為例:當你按下電源鍵之后,計算機硬件會主動讀取BIOS來加載硬件信息及進行硬件系統的自我測試,之后系統會主動讀取系統第一個可啟動的設備,此時就可以讀入引導裝載程序了。 引導程序可以指定使用哪個內核文件來啟動,并實際加載內核到內存中解壓縮與執行,此時內核就能夠開始在內存內活動,并檢測所有硬件信息,與加載適當的驅動程序來使這部主機開…

    Linux干貨 2016-09-12
  • 馬哥教育網絡班22期+第1周課程練習

    1、描述計算機的組成及其功能。     計算機由五大功能部分組成(馮諾依曼體系):運算器、控制器、儲存器、輸入設備、輸出設備,對應到具體的硬件設備如下:     CPU    :    包含運算器、控…

    Linux干貨 2016-08-15
  • 命令的查看幫助 和 命令行的歷史

    命令的查看 分內部命令 和外部命令  查看外部命令 可用 man command–help info  查看內部命令 可用 help command man 幫助是 使用最頻繁的 命令查看 而 man 又有很多選項 如下    man – format and display the on-li…

    Linux干貨 2016-08-12
  • 第一天,學習

    好好學習,天天向上

    Linux干貨 2016-08-08
  • Redis基于Sentinel哨兵高可用方案

    下載最新redis版本,當前最新版本為  2.8.19  2014-12-30 安裝redis 首頁地址:http://redis.io/ 最新穩定版下載地址: http://download.redis.io/releases/redis-2.8.19.tar.gz # tar -xvf redis-2.8.19.tar.gz # cd…

    2015-03-03

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-20 10:51

    內容很完整,實驗部分操作也很流暢,贊一個。

欧美性久久久久