linux系統管理之十三--啓動過程及排錯

一、電腦的啓動過程

(一)大概過程
開機找到BIOS--》找到硬盤的MBR--》加載引導程序(lilo  grub等) --》加載kernel內核(掛載設備和硬件和必要的內核模塊)--》啓動用戶空間程序。

(二)詳細過程

(1)BIOS:開機--》bios啓動,載入基本輸入輸出設備--》找到CPU,內存,和基本的IDE和SCSI硬盤
(2)根據設備的啓動順序找到硬盤(或其他存儲設備如光盤、USB等)中的MBR(存放引導文件和分區引導的地方即bootloader,常用的bootloader程序有GRUB,lilo)--》通過grub等引導程序會列出操作系統列表,並標識出操作系統的引導文件所在的分區。
(3)引導文件找到操作系統的內核,並加載內核Kernel-->內核通過initrd文件進入虛根,用以訪問存於文件系統中的內核模塊,並加載相關設備的驅動和模塊,加載完成後切換到實根--》後啓動/sbin/init進程,內核開始初始化內存,並設置內核與相關模塊。

(4)最後系統根據運行級別確定啓動或停止哪些服務。根據/etc/inittab中設定的運行級來啓動相關的服務和腳本。

(5)進入用戶空間程序。



(三)幾個關鍵概念:


1、mbr

MBR:位於0磁道,0扇區,共512字節。
其中446字節用於存放bootloader。常用的bootloader程序有grub,lilo等。
64字節用於存放分區,其中16字節存放一個分區,所以硬盤只能劃分四個主分區,要想劃分更多的分區,就需要用到擴展分區。
2字節標註MBR是否有效。


2、內核

linux內核設計:   單內核+模塊

內核在/boot分區目錄下

模塊在/lib/modules/內核版本號相同的目錄/   此目錄下。

inux內核是單內核,單內核會讓內核文件相當大,因爲需要把所有的驅動都加載進來。所以Linux雖是單內核爲了更優化,做成了核心內核和外圍模塊的模 式。啓動時只是啓動了內核核心。

而動態加載的內核外圍模塊有:驅動程序、文件系統(因爲不僅僅只有一種文件系統)、加密文件等。


3、虛根

因爲核心內核加載外圍模塊,就需要先加載存放外圍模塊這個磁盤的驅動,並能訪問文件系統。而驅動又存於硬盤的文件系統的模塊目錄中。而沒有驅動又無法識別出硬盤和文件系統,就沒法加載模塊。所以 內核就先設置了一箇中間層叫虛擬根,有基本的/proc  /sys   /dev等目錄,此虛根可以訪問相關的模塊文件,可以加載驅動,等加載完相關模塊後會切換到實根。可以用chroot命令切換根目錄。

kernel-->initrd-->ROOTFS, 即內核通過initrd找到文件系統才能找需要掛載的模塊。



(內核載入從BIOS中取得的基本硬件相關數據(CPU和內存等),然後再查找各接口,以找到不同接口上的新硬件(如硬盤、網卡、顯卡、USB等)--》如果探測到新硬件,則把相關信息加進/etc/sysconfig/hw.conf中,如設備驅動名稱。
如需要特殊設備驅動,剛把技術規範加入/etc/modules.conf中。下次啓動時會讀取modules文件,裝入所需的驅動。所以新設備如果沒有驅動時,需要裝入驅動。驅動一般在modules文件夾下。
(4)載入相關硬件後,內核開始初始化內存,並設置內核與相關模塊。

(四)命令

dmesg  命令查詢啓動過程的交互信息
/proc  目錄下提供了linux安裝的硬件信息
lsmod  命令檢查安裝的模塊。
rmmod  {模塊名}  刪除模塊
insmod {模塊名}  安裝模塊

 

(五)/etc/inittab中的六個運行級:

0: 停止、關閉linux,停止所有服務
1:單用戶方式,不聯網
2、多用戶方式,不能訪問NFS
3、多用戶方式,啓動計算機上的網絡監控
5、圖形登錄
6、重新啓動


redhtat7之後更改啓動的方式有所改變:

1、systemctl set-default命令:設定新的運行級別:
systemctl set-default multi-user.target      設定默認爲字符界面,也就是3
systemctl set-default graphical.target        圖形界面   5


2、ln 軟鏈接方式:

ln -sf /lib/systemd/system/multi-suer.target /etc/systemd/system/default.target  更改爲3級

n -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target    更改爲5級

 二、排錯

(一)啓動模式

1、單用戶模式

也就是運行級 1  。只啓用兩個服務。 可用於根口令忘記; /etc/fstab文件損壞,文件系統無法裝載等故障。


單用戶的方式:

grub下:

(1)如果GRUB有口令,則先鍵入P鍵輸口令
(2)選擇想引導的版本,ELSMP版爲支持 多處理器版,EL爲單處理器版
(3)在想選擇的版本上按e 鍵編輯
(4)到本行行末鍵入空格,然後輸入single,回到引導行,輸入b鍵開始引導。
可用的常用命令:

passwd root 更改根口令
檢查卸載硬盤的命令 如 fsck
exit退出單用戶模式後,不需要重啓電腦。

lilo下:

必須按 ctrl+x退出圖形屏幕,在 boot:提示符下輸入  linux single即可。

 

2、救援模式

用引導盤或第一張光盤引導到安裝模式下輸入:  linux rescue

三個選項:

(1)contunue:linux會搜索硬盤中的安裝文件,所有找到的文件系統都裝載成/mnt/sysp_w_picpath的子目錄。是一種自動救援模式。其實就是單用戶模式。將/etc/fstab文件中相應文件系統都裝載成/mnt/sysp_w_picpath的子目錄。可以用fsck /dev/分區來檢查磁盤;mount命令來重載分區設備。


(2)read-only: 只讀,與上一方式差不多,只是找到的所有文件系統都裝載成只讀,是隻讀救援模式。可以在啓動時,把單用戶模式時輸入的single改爲emergency即可。

(3)skip: 跳過:則直接出現單用戶方式中的shell提示,不查找可用的文件系統,是手工救援模式。


(二)MBR和GRUB

1、MBR概念

位於0磁道,0扇區,共512字節。
其中446字節用於存放bootloader。常用的bootloader程序有grub,lilo等。
64字節用於存放分區,其中16字節存放一個分區,所以硬盤只能劃分四個主分區,要想劃分更多的分區,就需要用到擴展分區。
2字節標註MBR是否有效。

2、grub概述

grub存於MBR中的bootloader區域,因爲只有446字節大小,所以grub只把啓動放於mbr中,只是用於找到/boot/grub目錄,其他的文件放置於/boot/grub目錄下。
grub分爲三階段:
stage1:存於mbr中,只爲了引導然後找到/boot/grub目錄
stage1.5:識別常見的不同文件系統。因爲需要找到/boot/grub就需要先找到此分區,且識別出文件系統,所以需要此階段。
stag2:/boot/grub目錄。


3、/boot/grub/grub.conf配置文件詳解

default=0  //默認啓動哪個內核
timeout=5  //等待用戶選擇時間
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz  //grub背景圖片
hiddenmenu         //隱藏菜單,去掉此項就不隱藏
password grub密碼   //明文的。

password --md5   //加密的密碼格式,然後保存,再用gurb -md5-crpt命令生成一個密碼文件,再把生成的密碼複製到 此處的後面,以後編輯GRUB就需要輸密碼
title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)    //要引導內核的標題,可以更改,第一行title是表示第0個內核。
        root (hd0,0)                                     //內核文件所在位置,對grub而言,所有類型的硬盤一律爲hd.
        kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=e6f3c00e-91be-4c8d-b3da-a8685be82bd3 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        
//內核文件路徑及傳遞給內核的參數:
   vmlinuz-2.6.32-358.el6.x86_64是內核版本,一定要寫全。
   ro 是隻讀的意思
   root=LABEL= 後面是指定根文件系統所在分區,因爲這裏沒有給根文件系統指定卷標,所以用uuid值指示根文件系統所在分區。
   rhgb  圖形方式啓動
   quiet 不輸出啓動信息


initrd /initramfs-2.6.32-358.el6.x86_64.img  //ramdisk文件路徑  ,即虛擬根磁盤路徑。


4、MBR修復(grub修復)
爲防止MBR損壞,最好把MBR內容備份下來,然用把備份的內容放到其他機器或介質上保存。
MBR損壞,修復MBR
可通過藉助別的主機修復和使用緊急救援模式兩種模式修復MBR,主要講緊急模式修復:
  (1)使用完整的系統安裝光盤引導,進入rescue模式
  (2)安裝grub:
           grub
           grub>root (hd0,0)  //指定/boot掛載在哪個地方,即內核所在的硬盤和分區。如果不知道可以用命令 find (hd0,0) /  來查找根在哪個硬盤的哪個分區,如果不是,就一個一個分區查找。

                                注:(hd0,0)中hd0是指第一個硬盤,linux中用hda表示,而grub用hd0表示,以此類推,具體看自己的linux內核安裝在哪個硬盤;0指第一個分區。
           grub>setup (hd0)  //安裝grub
           grub>quit
           sync               //同步到磁盤。
   

5、grub配置文件丟失修復
 
grub>root (hd0,0)       //指定/boot所在分區
grub>kernel /vmlinuz-2.6.32-358.el6.x86_64                         //注意,前面的內核版本一定要寫全,如果不記得根分區此時也可以不添加。
grub>initrd /initramfs-2.6.32-358.el6.x86_64.img                  //指定Initrd文件,一定要完全相同。
grub>boot   //重新啓動


進入系統,重建grub.conf文件。參照上面grub配置文件。


(三)其他常見錯誤修復

1、把默認級別設定爲0,或6, 進行單用戶模式,編輯intttab文件
2、/etc/rc.d/rc3.d      不小心刪除了,  進入單用戶模式,修改目錄系統
3、服務故障
如果某個服務無法啓動,進入單用戶模式下,先關掉此服務。然後再啓動電腦,然後修復此服務後再啓用此服務。或重啓進入交互模式(敲I鍵),手工確認是否啓動某服務。
4、/etc/rc.local  語法錯誤,也進入單用戶模式下,修改此腳本。

5、用戶無法登錄系統(bash程序故障)

光盤安裝:
   進入緊急救援模式
     mkdir /media/cdrom
     mount /dev/hdc   /media/cdrom   //在緊急救援模式下,光驅被映射成了  /dev/hdc
       找到bash包安裝。

         rpm  -ivh --replacepkgs --root /mnt/sysp_w_picpath  bash-3.2-32.e15.i386.rpm   // -root 指定安  裝位置爲實根/mnt/sysp_w_picpath下。

chroot  /mnt/sysp_w_picpath   //切換到實根


6、命令無法運行
手動指定PATH

或修改/etc/profile文件



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章