1. 程式人生 > >Linux之核心管理及故障排錯

Linux之核心管理及故障排錯

一、Centos6啟動流程:

  •     加電自檢PSOT
  •     引導載入器BootLoader
  •     MBR(GRUB第一階段)||(GRUB第1.5階段)(GRUB第2階段)
  •     載入核心(vmlinuz、initramfs)
  •     mount /,啟動第一個程式/etc/inittab
  •     etc/rc.d/rc.sysinit---->>/etc/rcX.d/K*/S*
  •     /etc/rc.local
  •     mingetty login,windows

1、POST     Power-On-Self-Test:加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主機板、記憶體、硬碟子系統、顯示子系統等硬體情況的檢測。     BIOS:Basic Input and Output System,儲存著有關計算機系統最重要的基本輸入輸出程式,系統資訊設定、開機加電自檢程式和系統啟動自舉程式等。2、BootLoader

    引導載入器,Windows使用的bootLoader是ntloader,只可以引導Windows系統;Linux使用的bootloader早期有LILO(LInux LOader),現在6系列用的GRUB0.97版,7系列使用的是GRUB2。3、GRUB     grub總共分為三個階段:     第1階段:存放在MBR前446個位元組     第1.5階段:1.5階段存放在1-27扇區;由於grub1階段需要去讀取grub2階段的程式和配置檔案,但是grub2階段的程式存放在磁碟的/boot分割槽中,想要讀取分割槽中的檔案就必須要有驅動檔案系統的驅動模組,1.5階段就是來做這件事的。     第2階段:存放在磁碟的/boot分割槽上(/boot/grub/),啟動時選擇核心版本介面,還有配置檔案都是由第2階段負責。4、載入核心
    在grub2階段只能識別到boot分割槽,核心初始化後;     vmlinuz核心檔案藉助檔案驅動來掛載真正的根系統,initramfs識別檔案驅動系統5、掛載根,/etc/inittab     init程式啟動系統的第一個程序init,它負責建立系統啟動後的所有服務程序     init程式的型別:CentOS5.x:SysV;CentOS6.x:Upstart;CentOS7.x:Systemd     初始化的相關檔案:     /etc/inittab:定義系統預設的啟動級別 id:3:initdefault:6、/etc/rc.d/rc.sysinit     系統初始化指令碼,包括主機名、歡迎資訊、掛載的檔案系統、lvm和raid等7、/etc/rcX.d/K*/S*
    根據系統的啟動級別來執行相關開機啟動和禁止服務     K*:執行次序;數字越小,越先執行;數字越小的服務,通常為依賴到別的服務     S*:執行次序;數字越小,越先執行;數字越小的服務,通常為被依賴到的服務8、/etc/rc.local     系統啟動最後一個程序,在所有啟動指令碼執行完成後執行此指令碼,可以把開機時自動執行的命令放入該指令碼來執行。管理工具:    chkconfig         --list 檢視         --level ##:指定級別,預設為2 3 4 5         --add 將指令碼加入對應的級別(需要將指令碼放到/etc/rc.d/init.d/目錄下,並且在指令碼開頭加上chkconfig:   啟動級別   關閉優先順序   開啟優先順序),一般“關閉優先順序 + 開啟優先順序 = 100”         --del 刪除對應級別指令碼         +servername on/off 開啟或關閉服務     service  服務名  { start | stop | restart }         --status-all 檢視所有服務的狀態     ntsysv:字元介面工具,用來設定開啟自啟的服務     xinetd

        超級守護程序;配合chkconfig來使用

二、Centos7啟動流程

  • post 
  • mbr
  • grub2 
  • systemd init 
  • initrd.target所有單元,包括掛載/etc/fstab
  • 從initramfs根檔案系統切換到磁碟根目錄
  • systemd執行/etc/systemd/system目錄下的配置
  1. systemd 執行預設target 配置,配置檔案/etc/systemd/system/default.target
  2. systemd 執行sysinit.target 初始化系統及basic.target 準備作業系統
  3. systemd 啟動multi-user.target 下的本機與伺服器服務
  4. systemd 執行multi-user.target 下的/etc/rc.d/rc.local
  5. systemd 執行multi-user.target 下的getty.target及登入服務
  6. systemd 執行graphical 需要的服務

由於Centos7啟動流程較為複雜,不再做深究systemd     系統啟動和伺服器守護程序管理器,負責在系統啟動或執行時,激     活系統資源,伺服器程序和其它程序 Unit     表示不同型別的systemd物件;         /usr/lib/systemd/system:每個服務最主要的啟動指令碼設定,類似於之前的/etc/init.d/          /run/systemd/system:系統執行過程中所產生的服務指令碼,比上面目錄優先執行          /etc/systemd/system:管理員建立的執行指令碼,類似於/etc/rc.d/rcN.d/Sxx類的功能,比上面目錄優先執行      其中unit型別中.service(用於定義系統服務)和.target(用於模擬實現執行級別)很重要; 管理工具:    systemctl:         命令:systemctl COMMAND name.service          啟動:service name start ==> systemctl start name.service          停止:service name stop ==> systemctl stop name.service          重啟:service name restart ==> systemctl restart name.service          狀態:service name status ==> systemctl status name.service    chkconfig:         chkconfig命令的對應關係:          設定某服務開機自啟:          chkconfig name on ==> systemctl enable name.service          設定某服務開機禁止啟動:          chkconfig name off ==> systemctl disable name.service      切換至緊急救援模式:          systemctl rescue      切換至emergency模式:          systemctl emergency  暫時更新自認為常用的,後期碰見再修改。

centos6常見故障: 實驗:破解root口令     開機進選單項按a,輸入1/s/S/signal臨時進入命令列模式執行passwd命令即可。 實驗: /etc/inittab 預設模式改為6,恢復     開機進選單項按a,輸入5臨時進入圖形模式再修改/etc/inittab檔案即可。 實驗:刪除vmlinuz 檔案,恢復之(啟動頁面出現error錯誤)     1)cp /mnt/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz-`uname -r`     2)chroot /mnt/sysimage; mount /dev/sr0 /mnt ; rpm -ivh /Packages-kernel-3..... 實驗:grub.conf配置檔案刪除,恢復之     grub> kernel /vmlinuz-2...... root=/dev/sda     initrd /initramfs-2......     boot 實驗:刪除grub1 1.5 2階段恢復     有無備份,有備份直接拷貝446位元組主分割槽表(scp)     無備份,grub-install /dev/sda(boot分割槽位置)安裝或ssh上傳相同檔案 實驗:centos6邏輯捲上刪除/etc/fstab 和/boot 分割槽,恢復     1)啟用邏輯卷組 vgchange -ay     2)安裝vmlinuz和initramfs檔案;     3)安裝grub檔案和配置grub.conf檔案 實驗:centos6 rm -rf /sbin/init     scp上傳相同檔案即可。 實驗:centos6 自制linux     1)準備一塊新的硬碟,分割槽(/和boot),格式化     2)把需要的檔案拷到新硬盤裡     新增boot下的核心和驅動檔案以及grub.conf和grub     3)新增/root下各種配置     4)/bin下新增命令指令碼centos7常見故障: 實驗:破解grub2口令     啟動時任意鍵暫停啟動;按e鍵進入編輯模式;將游標移動linux16開始的行,改為rw init=/sysroot/bin/sh  ;按ctrl-x啟動;chroot /sysroot;passwd root;touch /.autorelabel;exit;reboot  實驗:grub.cfg配置檔案刪除,恢復之     grub2-mkconfig > /boot/grub2/grub.cfg 實驗:刪除grub1 1.5 2階段恢復     grub2-install /dev/sda(boot分割槽位置) 實驗:centos7 刪除/boot,恢復     grub2-install /dev/sda(boot分割槽位置);grub-mkconfig > /boot/grub2/grub.cfg