1. 程式人生 > 其它 >Linux系統引導與啟動

Linux系統引導與啟動

一、Linux作業系統引導過程

1.引導過程總覽

開機自檢(BLOS)→MBR引導→GRUB選單→載入核心(kernel)→init程序初始化

開機自檢(BLOS):通過bios程式檢查硬體是否正常,如果硬體出現問題則會卡在開機介面提示不同報錯

MBR引導:第一階段grup引導及載入分割槽表

GRUP選單:第二階段grub載入核心檔案到系統記憶體中執行起來,核心檔案位置:/boot/grub2/grub.cfg

載入核心(kernel):載入完畢進入作業系統

init程序初始化:啟動作業系統後需要啟動程序

centos6和sentos7之間的區別:使用者 uid 組的gid 範圍不同;啟動時第一個程序不同

2. init 與systemd的介紹與區別

介紹:

  • init程序是系統中的第一個程序,Centos 6系統的第一個程序是init程序
  • Systemd是Linux作業系統中的一種init軟體,Centos 7的第一個程序是systemd程序

區別:

  • init依賴於序列執行Shell 指令碼啟動服務,導致效率低下,系統啟動速度較慢。

  • Systemd能夠將更多的服務程序並行啟動,並且具有提供按需啟動服務的能力,使得啟動更少程序,從而提高系統啟動速度 。

使用 pstree 命令可以檢視系統中的所有程序,可以看出systemd是所有程序的父程序。

二、作業系統執行級別(0-6)

1. init 0級別

init 0是關機

2. init 1級別

init 1是單使用者安全模式

3. init 2 3 4級別

init 2、init 3 、init 4都是純字元介面,但是init 2 和init 4各缺乏一些功能,所以常用的是init 3級別

4. init 5級別

init 5是圖形化介面

5. init 6級別

init 6是重啟

三、開機問題處理

1. MBR扇區故障修復(使用光碟機修復)

MBR在第一扇區的前512個位元組,即/dev/sda的前512個位元組

1.1 新增一塊新硬碟,將MBR扇區備份到新硬碟。(注意不要備份到sda硬碟,模擬sda硬碟損壞備份到sda硬碟無法恢復),命令如下

dd  if=/dev/sda   of=/dev/sdb1  count=1  bs=512

dd           #複製

if             #原始檔

of            #目的檔案

count      #指定讀取資料塊的數量

bs           #讀取資料塊的大小,不寫單位預設為位元組,加單位要寫大小如M、G

1.2 然後模擬MBR的前512位元組損壞,命令如下,開機報錯圖如下

dd  if=/dev/zero  of=/dev/sda  count=1  bs=512

dd           #複製

if             #原始檔

of            #目的檔案

count      #指定讀取資料塊的數量

bs           #讀取資料塊的大小,不寫單位預設為位元組,加單位要寫大小如M、G

MBR損壞,有光碟機情況下直接進入光碟機不進入系統

MBR損壞,無光碟機情況下直接報錯進入不了系統

重新開機在出現進度條時快速按ESC鍵,如下圖

然後選擇CD-ROM Drive進入光碟機,如下圖

光碟機模式下選擇進入救援模式Troubleshooting,然後選擇Rescue a CentOS system

出現選擇介面選擇1 Continue繼續。如下圖

然後直接回車進入光碟機中的小系統,並建立一個資料夾/bak將sdb1掛載到/bak目錄下,注意不要輸入對應的命令,輸入chroot /mnt/sysimage是進入自己的系統。如下圖

然後 ls /bak即可以看到sdb1中備份的檔案bak,將bak檔案還原到/dev/sda中重新啟動系統即可正常進入系統

2 . 修復grub 分割槽

Cenots 7系統grub分割槽位置在/boot/grub2/grub.cfg

首先將grub分割槽檔案刪除,命令如下。系統啟動報錯圖片如下

rm -rf /boot/grub2/grub.cfg

重新開機在出現進度條時快速按ESC鍵,然後選擇CD-ROM Drive進入光碟機

光碟機模式下選擇進入救援模式Troubleshooting,然後選擇Rescue a CentOS system

出現選擇介面選擇1 Continue繼續

然後輸入對應命令chroot /mnt/sysimage進入自己系統

進行重新建立載入sda分割槽,重新構建grub選單配置檔案命令然後重啟即可正常進入系統

grub2-install /dev/sda                                #重新建立載入sda分割槽

 grub2-mkconfig -o /boot/grub2/grub.cfg  #重新構建grub選單配置檔案 

exit退出自己系統 

reboot重啟

3. 忘記root密碼

系統正常但是root密碼忘記。

首先在系統載入核心時按任意鍵盤停止倒計時,一般習慣使用上下鍵,如下圖。

然後按e進入編輯模式找到linux開頭的一行在該行尾新增rd.break,然後按ctrl+x鍵啟動。

 

啟動完成介面如下,修改根目錄許可權,然後切換到根目錄

mount –o remount,rw /sysroot   #進入後修改根目錄的許可權

 chroot /sysroot                          #切換到根命令

然後修改root密碼,若SELinux是啟用的,才需要執行重新打標籤操作若沒啟用則直接重啟密碼已經修改完成

passwd root #修改root密碼

#輸入2次密碼,密碼是隱藏的。

touch /.autorelabel #重新打標籤,若selinux是開啟的則需要執行此步驟

exit 退出系統

reboot 重啟