1. 程式人生 > >學習筆記(二)——單使用者模式、救援模式、執行級別、啟動流程、登入檔案

學習筆記(二)——單使用者模式、救援模式、執行級別、啟動流程、登入檔案

1.單使用者模式:

   Linux 中的單使用者模式可以類比一下 Windows 中的安全模式。在單使用者模式下很常用的功能是修改 root 密碼。如何進入單使用者模式:

   重啟Linux,3秒鐘內按一下回車鍵,進入新畫面。如果 grub 加密,需要先按 p 鍵, 輸入 grub 密碼。之後按 e 鍵,選擇第二行,再按 e 鍵,在內容的最後面加上 1 或 single 或 s,回車後按 b 啟動,即可進入單使用者模式。

   [[email protected] ~]# passwd

   進行修改,重啟即可。這裡補充一下如何為 grub 加密:

   [[email protected]

~]# grub-crypt --md5

   Password: 111111

   Retype password: 111111

   $1$sqoKZg6F$cej0v.Vrvf6M3cajAdE8G/

   將加密後的密碼複製,修改如下檔案:

   [[email protected] ~]# vim /etc/grub.conf  //或者 vim /boot/grub/grub.conf 軟連結的關係

wKioL1UJETeSKcdWAADzLzkuPP8465.jpg

圖-1 /boot/grub/grub.conf 檔案

   如圖 1 所示,在 hiddenmenu 和 title 行中間新增一行, password=111111 可以指定明文密碼, password --encrypted 貼上生成的 MD5 密碼,指定非明文密碼。grub 還可以採用兩種加密形式:

   [[email protected] ~]# grub-crypt --sha-256

   [[email protected] ~]# grub-crypt --sha-512   //預設形式,等同於 grub-crypt

   方法相同,將生成的密碼貼上到 /boot/grub/grub.conf 檔案中即可。

2.救援模式:

   救援模式可以類比 Windows PE ,在系統不能正常啟動時進入可以通過救援模式提取資料或者進行修復。如何進入救援模式:   

   重啟 Linux,在重啟過程中按 F2 ,進入 BIOS 設定,調整 BOOT 啟動順序,從 CD-ROM Drive 啟動(光碟啟動),之後按 F10 儲存並重新啟動。選擇第三行 Rescue installed system ,進入救援模式。期間會讓你選擇語言、鍵盤型別、是否開啟網絡卡、是隻讀進入還是讀寫進入(建議選擇Continue,即以讀寫形式進入)。之後原 Linux 系統會被掛載到 /mnt/sysimage 下。之後顯示如圖2介面:

wKiom1UJFG2QQRCFAACZE0y5v9s089.jpg

圖-2 救援模式進入形式

   第一行為直接進入 shell,第二行進入診斷模式(暫時不知道進入的具體作用是什麼),第三行重啟。選擇第一行,進入後通過

   chroot /mnt/sysimage

   命令即可進入原 Linux 系統的檔案系統中,可以做修改。完成後不能直接重啟,通過 logout 或 Ctrl + d 返回,之後通過 reboot 或 shutdown -r now 或 init 6 命令重新啟動即可。

3.系統執行級別:

   Linux 系統有 7 種執行級別:

   0 - 關機

   1 - 單使用者

   2 - 無網路服務的多使用者模式

   3 - 標準的多使用者模式    //即 shell 

   4 - 保留級別

   5 - 圖形化介面

   6 - 重新啟動

   系統開機預設進入的執行級別在如下檔案中修改:

   [[email protected] ~]# vim /etc/inittab

   id:3:initdefault:

   修改 id 後的數字即可。切記不可把 0 和 6 兩個級別設為預設值,否則系統不能正常啟動,需要進入單使用者模式將執行級別修改回來。通常我們使用標準的多使用者模式作為執行級別。

   使用下述命令可以檢視系統上一次和本次的執行級別:

   [[email protected] ~]# runlevel

   N 3  //上次未知,本次執行級別為 3

4.Linux 啟動流程:

   理解 Linux 啟動流程有助於我們在遇到系統無法啟動的問題時快速尋找並定位原因以解決問題。先來看一張啟動流程圖,如圖 3:

wKioL1UJHMHjDA4yAAfDLBDFh4M965.jpg

圖-3 Linux 啟動流程

   這張圖已經說的很明白了,用文字描述一下:

   (1)系統通電

   (2)初始化硬體(顯示卡,記憶體,硬碟,時間等)

   (3)尋找啟動介質(CD-ROM, HDD, USB, PXE等)

   (4)MBR(主引導記錄,包括三部分:載入程式,即 bootloader, 446位元組;分割槽資訊,64位元組,校驗碼, 2位元組(這兩個位元組為55 aa,對於所有MBR都是相同的,瞭解一下)。總共 512 位元組)。檢視 MBR 內容:

   [[email protected] ~]# touch mbr

   [[email protected] ~]# dd if=/dev/sda of=./mbr bs=1 count=512

   [[email protected] ~]# hexdump -C ./mbr

   即可檢視。注意 MBR 中是 16 進位制,不能通過 cat , head , tail 等命令檢視。

   bootloader 分為 grub 和 lilo, 現在基本已經不再使用 lilo。

   補充:MBR, bootloader 和 grub 的關係——

   MBR 是 /boot 所在分割槽所屬硬碟的第一個扇區中的前 512 個位元組,這 512 個位元組中的 446 個位元組就是 bootloader,前面提到了,bootloader 與 grub 的關係,這裡不再贅述。

   (5)進入 /boot/grub/ 目錄,其中最重要的是三類檔案 stage1, stage1_5 和 stage2 ,其中 stage2 是 grub 核心映像。

   (6)/boot/grub/grub.conf 通過該檔案啟動 kernel

   (7)/sbin/init

   (8)/etc/inittab 決定採用哪種系統執行級別,以系統執行級別為 3 來舉例,確定後進入 /etc/rc3.d/ 目錄中,檢視其中的檔案(目錄中全部為許可權為 777 的軟連結檔案),如下所示:  

   K10saslauthd   K80kdump        S10network    S55sshd       S95atd

   K50dnsmasq     K84wpa_supplicant  S11auditd     S63tomcat     S99local

   K50netconsole   K87restorecond    S12rsyslog    S64tomcat_test

   K73winbind     K89rdisc        S15mdmonitor   S80postfix

   K74ntpd       S08ip6tables     S25netfs     S81apache

   K75ntpdate     S08iptables      S26udev-post   S90crond

   其中,檔名以 K 開頭的代表系統啟動時需要停止的服務,檔名以 S 開頭的代表系統啟動時需要啟動的服務,檔名中的數字越小,代表其優先順序越高,數字之後的英文代表服務的名稱。

   (9)/etc/rc.sysinit 或 /etc/rc.d/rc.sysinit 啟動網路,檢測SELinux,設定系統時間,開啟交換分割槽等。

   (10)/etc/rc.local 或 /etc/rc.d/rc.local ,系統啟動完成後第一個執行的檔案,允許使用者進行個性化配置,比如掛載硬碟,或者開機啟動 nginx 服務等。

   (11)/bin/login 進入可登入狀態。

5.使用者登入時用到的檔案:

   (1)全域性檔案:即無論哪個使用者登入都要載入的檔案

   [[email protected] ~]# vim /etc/profile

   [[email protected] ~]# vim /etc/bashrc

   舉個例子,修改 /etc/bashrc ,在其最下面加上一行: alias cls='clear' ,可以為所有使用者新增 clear 命令的別名。

   (2)非全域性檔案:針對每個不同的登入使用者單獨載入的檔案

   [[email protected] ~]# vim ~/.bash_profile

   [[email protected] ~]# vim ~/.bashrc

   舉個例子,修改 /root/.bashrc , 在其最下面加上一行: stty -echoctl , 可以為 root 使用者隱藏在使用 Ctrl + c 時出現的 ^C 標記。

   注:profile、 .bash_profile 為使用者第一次登入時執行一次,bashrc、 .bashrc 為開啟一個 shell 時執行一次。在前者中通常配置環境變數,在後者中通常配置別名。

   如果使用者家目錄下的 .bash_profile 和 .bashrc 被刪,則登入會異常,解決方法:

   [[email protected] ~]# cp -p /etc/skel/.bash* /root   //-p 引數,複製使用者、使用者組和許可權

   即可。(需要單使用者模式或救援模式)