一、系統運行級別
1、linux系統共有七個運行級別
- linux中可以使用runlevel來查看運行級別
[root@centos ~]# runlevel
N 3
上一個運行級別 當前運行級別
- 手動更改運行級別
[root@centos ~]# init 5
[root@centos ~]# runlevel
3 5
2、系統默認運行級別
系統默認運行級別,依賴於 /etc/inittab 文件
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
# 系統會先調用 /etc/init/rcS.conf
# Individual runlevels are started by /etc/init/rc.conf
# 再調用 /etc/init/rc.conf ,在不同的運行級別啟動不同的服務
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
# 通過這個配置文件判斷 Ctrl+Alt+Delete 熱啟動鍵是否可用
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
# 判斷系統可以啟動的本地終端數量,及終端的基本設置(如顏色)
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# 這就是系統的默認運行級別,也就是系統開機后直接進入哪個運行級別,注意這里的默認運行級別只能寫 3 或 5,其他的級別要不就是關機重啟,要不就是保留或單用戶, 都不能作為系統默認運行級別的。
3、 /etc/rc.d/rc.local
- 這個配置文件會在用戶登陸之前讀取,這個文件中寫入什么命令,在每次系統啟動時都會執行一次。也就是說,我如果有任何需要在系統啟動就運行的工作,只需要寫入/etc/rc.d/rc.local 這個配置文件即可。
[root@centos ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Dec 2 23:15 /etc/rc.local -> rc.d/rc.local #該文件是 rc.d/rc.local 的軟連接
#我們可以在文件中寫下如下命令:
/etc/rc.d/init.d/httpd start # 如果寫入 RPM 包安裝的 apache 的啟動命令, apache 服務就會開機時自動啟動了。
二、啟動引導程序
早期的 Lilo 引導程序已經不是很常見了,grub 相比來講有很多優勢。如下:
- 支持更多的文件系統
- grub 的主程序可以直接在文件系統中查找內核文件;
- 在系統啟動時,可以利用 grub 的交互界面編輯和修改啟動選項
- 可以動態的修改 grub 的配置文件,這樣在修改配置文件之后不需要重新安裝 grub,而只需要重新啟動就可以生效了
1 /boot/grub 目錄
grub 的作用有以下幾個:
- 第一是加載操作系統的內核;
- 第二是擁有一個可以讓用戶選擇的菜單, 來選擇到底啟動哪個系統
- 第三還可以調用其他的啟動引導程序,來實現多系統引導
[root@centos grub]# ll
total 274
#grub 中硬盤的設備文件名與系統的設備文件名的對應文件
-rw-r--r--. 1 root root 63 Dec 2 23:19 device.map
#ext2/ext3 文件系統的 stage 1.5 文件
-rw-r--r--. 1 root root 13428 Dec 2 23:19 e2fs_stage1_5
#FAT 文件系統的 stage 1.5 文件
-rw-r--r--. 1 root root 12636 Dec 2 23:19 fat_stage1_5
#FFS 文件系統的 stage 1.5 文件
-rw-r--r--. 1 root root 11780 Dec 2 23:19 ffs_stage1_5
grub 的配置文件
-rw-------. 1 root root 835 Dec 2 23:19 grub.conf
#iso9660 文件系統的 Stage 1.5 文件
-rw-r--r--. 1 root root 11772 Dec 2 23:19 iso9660_stage1_5
jfs 文件系統的 Stage 1.5 文件
-rw-r--r--. 1 root root 13284 Dec 2 23:19 jfs_stage1_5
#grub 的配置文件。和 grub.conf 是軟鏈接,所以兩個文件修改哪個都可以
lrwxrwxrwx. 1 root root 11 Dec 2 23:19 menu.lst -> ./grub.conf
#minix 文件系統的 Stage 1.5 文件
-rw-r--r--. 1 root root 11972 Dec 2 23:19 minix_stage1_5
#reiserfs 文件系統的 Stage 1.5 文件
-rw-r--r--. 1 root root 14428 Dec 2 23:19 reiserfs_stage1_5
# 系統啟動時, grub 程序的背景圖像
-rw-r--r--. 1 root root 1341 Nov 15 2010 splash.xpm.gz
# 安裝到引導扇區中的 stage1 的備份文件
-rw-r--r--. 1 root root 512 Dec 2 23:19 stage1
#stage2 的備份文件
-rw-r--r--. 1 root root 126148 Dec 2 23:19 stage2
#UFS 文件系統的 Stage 1.5 文件
-rw-r--r--. 1 root root 12040 Dec 2 23:19 ufs2_stage1_5
#vstafs 文件系統的 Stage 1.5 文件
-rw-r--r--. 1 root root 11380 Dec 2 23:19 vstafs_stage1_5
#xfs 文件系統的 Stage 1.5 文件
-rw-r--r--. 1 root root 13980 Dec 2 23:19 xfs_stage1_5
2、grub 的配置文件
[root@centos grub]# vim /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-642.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_centos-lv_root nomodeset rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_centos/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_centos/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.el6.x86_64.img
- default=0
默認啟動第一個系統。也就是如果在等待時間結束后,用戶沒有選擇進入哪一個系統,那么 系統會默認進入第一個系統。如果有多系統並存,那么每個系統都會有自己的 title 字段,如果想要 默認進入第二個系統,這里就可以設為 default=1。 - timeout=5
等待時間,默認是 5 秒。也就是進入系統時,如果 5 秒內用戶沒有按下任意鍵,那么系統會 進入 default 字段定義的系統。當然可以手工修改這個等待時間,如果 timeout=0 則不會等待直接進入系統,timeout=-1 則是一直等待用戶輸入,而不會自動進入系統。 - splashimage=(hd0,0)/grub/splash.xpm.gz
這里是指定 grub 啟動時的背景圖像文件的保存位置的。已經說過了 hd(0,0)代表第一個硬盤的第一個分區,而一般的系統安裝時/boot 分區就是第一個分區,所以這個背景圖像的實際位置就是/boot/grub/splash.xpm.gz。 - hiddenmenu 隱藏菜單。
啟動時默認只能看到讀秒,而不能看到菜單,如果想要看到菜單需要按任意鍵。 如果注釋了這句話,那么啟動時就能直接看到菜單了。
以上就是 grub 的整體設置,下面我們介紹 CentOS 系統的啟動設置:
title CentOS 6 (2.6.32-642.el6.x86_64)
#title 就是標題的意思,也就是說在 title 后面寫入的是什么,那么系統啟動時在 grub 的啟動菜單中看到的就是什么。
root (hd0,0)
#是指啟動程序的保存分區。在系統中,/boot 分區是獨立划分的,而且設備文件名為/dev/sda1,所以在 grub 中,就被描述為 hd(0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 #指定了內核文件的位置,這里的/是指/boot 分區
ro # 啟動時以只讀方式掛載根文件系統,這是為了不讓啟動過程影響磁盤內的文件系統
root=/dev/mapper/vg_centos-lv_root # 指定根文件系統的所在位置
rd_NO_LUKS # 禁用 LUKS,LUKS 用於給磁盤加密。
LANG=en_US.UTF-8 #指定語言
rd_NO_MD #禁用軟 RAID
KEYBOARDTYPE=pc KEYTABLE=us #鍵盤類型
rd_NO_DM #禁用硬 RAID
rhgb #用圖片來代替啟動過程中的文字信息。啟動完成 之后可以使用 dmesg 命令來查看這些文字信息。
quiet #隱藏啟動信息,只顯示重要信息。
3、grub 加密
我們使用命令生成加密密碼字串,這個字串是采用 md5 加密的,就是你的密碼經 md5 編碼之后的。 我們會利用這個加密密碼字串來加密 grub 配置文件。
[root@centos grub]# grub-md5-crypt
Password:
Retype password:
$1$OhHNh0$KGd1RTlTKKj7nEPeL6azJ1
grub 菜單整體加密,整體加密后,如果想進入 grub 編輯界面必須輸入正確的密碼,操作如下
[root@centos grub]# vim /boot/grub/grub.conf
default=0
timeout=5
password --md5 $1$OhHNh0$KGd1RTlTKKj7nEPeL6azJ1
三、系統修復模式
1、單用戶模式
Linux 的單用戶模式有些類似 Windows 的安全模式, 只啟動最少的程序用於系統修復。在單用戶模式(運行級別為 1)中,Linux 引導進入根 shell,網絡被禁用,只有少數進程運行。單用戶模式可以用來修改文件系統損壞、還原配置文件、移動用戶數據等。
1)進入單用戶模式
按 e 進入grup菜單,選擇第二項,再按 e ,輸入 1 回車 再按 b 啟動
2、單用戶模式常見的錯誤修復
- 遺忘 root 密碼 這是管理員最容易犯的錯誤,那么應該如何修復呢?當然是使用單用戶模式進行修復了,進入單用戶模式最大的特點就是不需要輸入用戶名和密碼就能登錄。既然已經登錄了單用戶模式,那么直接 給 root 用戶設定新密碼即可。
命令如下:
[root@centos /]# passwd root - 修改系統默認運行級別 如果我們把系統的默認運行級別修改錯誤,比如改為了 0 或 6,系統就不能正常啟動了。這時也可以利用單用戶模式進行修復,只要直接修改默認運行級別配置文件/etc/inittab,把系統默認運行 級別修改回來即可。
命令如下:
[root@centos /]# vim /etc/inittab id:3:initdefault:
把默認運行級別修改為 3 或 5 。注意系統的默認運行級別只能使用 3 或 5 絕大多數系統錯誤都可以通過單用戶模式進行修復,理論上是只要能夠進入單用戶模式,那么系統錯誤就可以被單用戶模式修復。
3、光盤修復模式
1)進入光盤修復模式
如何進入光盤修復模式呢首先你需要有系統光盤,或系統修復光盤。我們這里只需要把 CentOS 6.x 的第一張光盤放入光驅,然后重啟系統。修改 BIOS 的啟動順序,讓系統從光盤啟動。下面的針對的是虛擬機。
2)、 光盤修復模式常見的錯誤修復
我們在光盤修復模式中主要可以修復什么錯誤呢?其實能在單用戶模式中修復的錯誤,都能在光盤修復模式中修復。當然還可以修復一些在單用戶模式下無法修復的錯誤.
- 重要系統文件丟失,導致系統無法啟動 如果系統中的重要系統文件丟失,當然會導致系統無法正常啟動。這時也可以利用光盤修復模式修復。我們假設把/etc/inittab 文件丟失了,我們通過系統啟動過程知道這個文件是定義系統默認運行級別的,如果丟失了這個文件,系統當然不能正常啟動,這時就需要進入光盤修復模式中了,然后需要利用 chroot 命令的作用是“change root directory”改變系統根目錄的意思。也就是可以把根目錄暫時移動到某個目錄當中。我們是通過光盤啟動的光盤修復模式,所以我們現在所在的根目錄不是真正的系統根目錄,而是光盤的模擬根目錄。系統根目錄被當成外來設備放在了/mnt/sysimage/目錄中。 這時就需要 chroot 命令把我們現在的所在目錄移動成真正的系統根目錄。
bash-4.1# chroot /mnt/sysimage # 改變主目錄,發現有的時候已經是正常的根目錄,就無需切換。
sh-4.1# cd /root # 進入 root 目錄。因為默認進入的是 / 目錄,如果不進入 root ,一會提取的 inittab 文件會報錯
sh-4.1# rpm -qf /etc/inittab initscripts-9.03.31-2.el6.centos.i686 # 查詢下 /etc/inittab 文件屬於哪個包,如果文件丟失,可以通過其他命令查詢。或者上網查詢。
sh-4.1# mkdir /mnt/cdrom # 建立掛載點
sh-4.1# mount /dev/sr0 /mnt/cdrom # 掛載光盤
sh-4.1# rpm2cpio /mnt/cdrom/Packages/initscripts-9.03.31-2.el6.centos.i686.rpm |cpio -iduv ./etc/inittab # 提取 inittab 文件到當前目錄
sh-4.1# cp etc/inittab /etc/inittab #復制 inittab 文件到指定位置