一、grub的配置文件/boot/grub/grub.conf
default=0 ###設置默認啟動項0表示第一個 timeout=5 ##設置超時時間,如果超過5s用戶沒有操作,則默認啟動第一個 splashimage=(hd0,0)/grub/splash.xpm.gz ###設置選擇內核界面的圖片 hiddenmenu password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/ ###選擇內核界面,進入"a","e","c"模式需要登錄的密碼 title CentOS 6 (2.6.32-642.el6.x86_64) ###選擇內核界面處的提示信息 root (hd0,0) ###相對于grub的根路徑 kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=8ecfb3ed-37d8-43cd-a1ec-8a4be6fa5973 nomodeset rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet ax_loop=100 ###內核的核心文件,如果boot沒有獨立分區則需要寫成/boot/vmlinuz.....ro只讀掛載(系統啟動后會重新掛載rw) ###root=***指明根,后面的都是配置的其他額外輔助功能可省略。 ###ax_loop=100定義最大的loop設備為100個(默認8個) ###rhgb(圖形) quiet(隱藏內核啟動過程) 這兩項去掉后會顯示啟動過程(默認不顯示,只有按esc才能看到) initrd /initramfs-2.6.32-642.el6.x86_64.img ###虛擬文件系統,偽根,根的驅動程序 password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/ ###啟動該系統時需要輸入的密碼
p:輸入密碼,輸入密碼之后會提示"a","e","c"
a:在啟動之前修改內核參數
e:編輯模式,用于編輯菜單
c:命令模式,交互式接口
o:在選擇的行后面增加一行
O:在選擇的行前面增加一行
d:刪除選擇的行
上述操作都是屬于臨時修改?。?!
注意:輸入c進入命令行模式,此時可以略過選擇內核階段,自己制定內核文件和偽根文件,步驟如下:
注意:kernel處,指明的根是文件系統的根,不是相對于grub的根。
內核選擇界面更換圖片的辦法:
more /boot/grub/splash.xpm.gz 可以查到圖片的分辨率
根據分辨率的大小,截取或查找對應的圖片
linux系統中安裝圖片編輯器yum install ImageMagick -y
格式轉換 convert-resize 640×480 -colors 14 win.jpg win.xpm
gzip win.xpm
更改grub.conf 中配置的圖片名字,重啟即可。
啟動排錯問題:
1、內核文件,虛擬文件系統文件配置文件中寫錯或者信息不完整導致系統無法啟動。
如果出現上述kernel文件信息不完整或者錯誤,可按下"e"鍵,輸入kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda3,按回車,然后回到上述界面,按"b"鍵,重新啟動即可。
注意:上述修改屬于臨時修改,啟動完成之后,下次啟動還是存在問題,還要重新修改grub的配置文件。
2、grub.conf被誤刪除,導致系統無法啟動。
啟動后直接進入命令行模式:
按如下操作即可,由于是臨時生效,因此后續還要重新編輯grub.conf 配置文件。
3、破壞第一階段MBR 446個字節,dd if=/dev/zero of=/dev/sda bs=1 count=446,hexdump -C -v /dev/sda -n 512 確認。
重啟后出現如下所示,因為啟動程序被破壞,因此系統認為硬盤不可啟動,直接從光盤引導,選擇第三項進入安全模式。
首先/sbin/grub-install 救援模式上不存在該工具,存儲在硬盤上,因此要切根,stage1不屬于任何分區的屬于MBR,關聯硬盤設備,因此要寫/dev/sda。
具體操作步驟:
方法1:
1、chroot /mnt/sysimage/
2、grub-install /dev/sda
3、exit exit
4、選擇reboot
注意:有些環境中如果想把grub安裝到別的硬盤上根不是boot的上級目錄就要按如下寫法操作:
grub-install –root-directory=DIR(boot目錄的父目錄,如果其父目錄是根則可省略) /dev/DISK
方法2:
1、grub
2、root (hd0,0)
3、setup (hd0)
4、quit exit
5、選擇reboot
4、破壞1.5階段,dd if=/dev/zero of=/dev/sda bs=512 cxount=2 seek=1.
reboot后直接黑屏,重新啟動進入光盤引導,進入救援模式,后續具體操作同第三題破壞MBR的解決辦法相同。
注意:用上述第二種方法修復stage1.5要依賴于/boot/grub/*1.5*的文件,如果這個文件不存在則會修復失敗,第一種方法grub-install不依賴/boot/grub/*1.5*文件。
5、刪除rm -rf /boot/grub stage 2階段并修復。
重新啟動,光盤啟動進入救援模式,在命令行中操作如下(不能采用問題3中的方法2 ,因為缺失1.5文件):
注意:–root-directory=/ 可以省略,此時進入/boot/grub目錄中,可以看到缺少grub.conf文件
可以在在該目錄下手寫一份,也可以重新啟動,在gurb命令行中重新輸入,同問題2一樣的解決辦法。
注意:輸入上述操作完后會進行修復,修復完成之后還要在輸入一遍才能啟動,啟動完成后,在/boot/grub/目錄下手寫一份grub。conf文件。
6、刪除/sbin/init程序,并恢復。
開機后進入后卡在如下畫面,不支持輸入命令,不能進行任何操作。
重新啟動,進入內核選擇界面,按"a"鍵,進入編輯內核參數,讓bash代替init命令,具體操作如下。
回車后重新啟動,將準備好的init文件還原到/sbin目錄下,重新啟動即可。
如果啟動過程中,卡在某個程序不能正常啟動,可以在內核選擇界面,輸入"a",進入內核編輯界面輸入1,回車,進入單用戶模式,用chkconfig 某程序 off ,在重新啟動即可。
7、刪除vmlinuz-2.6.32-642.el6.x86_64,initramfs-2.6.32-642.el6.x86_64.img 文件,重啟并恢復
重啟后出現的畫面
再次從光盤啟動進入救援模式,然后創建一個目錄掛載光盤,在光盤中的isolinux目錄中可以看到vmlinuz文件,將其cp到/mnt/sysimage/boot/目錄下
創建/boot目錄下創建initramfs-2.6.32-642.el6.x86_64.img 文件:
注意:光盤/boot目錄里面vmlinuz 文件名要與/boot/grub/grub.conf配置文件的中文件名保持一致,復制完后還要修改grub.conf中文件名
方法2、
假設我們用網絡啟動,用光盤引導,開啟網絡連接,選擇yes。
可以自己配置網絡也可動態獲取,我們選擇動態獲取。
進入到命令行模式后,輸入ifconfig 獲取ip地址后,通過scp命令從別的主機拷貝到問題主機上,重新啟動即可。
8、dd if=/dev/zero of=/dev/sda bs=446 count=1
rm -rf /boot
破壞后重新啟動,光盤引導進入救援模式,安裝kernel包,指明安裝路徑,用–force 或–replacepkgs選項
用grub-install修復mbr第一階段
進入/boot/grub/目錄下,創建grub.conf 文件,重啟即可。
9、刪除/etc/fstab 、刪除/boot/,重新啟動不恢復。
進入光盤救援模式,fdisk -l 和 blkid 查看磁盤信息
根據上圖根據磁盤空間大小可以分析出來sda1是boot,sda3是根,但是如果在磁盤大小比較均衡,且數目表多時,就需要將每個磁盤掛載到指定目錄中,然后根據磁盤空間中的內容來確定每個磁盤。
進入根目錄中,創建etc/fstab文件。
/dev/sda1 /boot ext4 defaults 1 1
/dev/sda3 / ext4 defaults 1 2
重新啟動系統,重新進入救援模式,讓系統幫我們掛載
在/boot/目錄下可以看到缺失grub目錄,因此需要通過grub-install /dev/sda來安裝
最后在/boot/grub/目錄下創建grub.conf 的配置文件,重新啟動系統即可。
10、邏輯卷情況下,刪除/etc/fstab,刪除/boot/的修復方法。
光盤啟動進入救援模式
lvscan 掃描邏輯卷
vgchage -ay 激活邏輯卷
mount /dev/vg0/root /mnt/sysimage 掛載邏輯卷
vi /mnt/sysimage/etc/fstab
/dev/sda1 /boot ext4 defaults 1 1
/dev/vg0/root / ext4 defaults 1 2
/dev/vg0/var /var ext4 defaults 0 0
/dev/vg0/usr /usr ext4 defaults 0 0
reboot
光盤啟動進入救援模式,讓系統自動掛載
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
chroot /mnt/sysimage
rpm -ivh /mnt/cdrom/Packages/kernel-2****.rpm –replace|force
grub-install /dev/sda
vim /boot/grub/grub.conf
default=0
timeout=5
title linuxkernel
root (hd0,0)
kernel /vmlinuz。。。。。root=/dev/vg0/root
initrd /intramfs……………………..
11、簡易linux制作
添加一塊硬盤,掃描讓系統識別
分區格式化,創建/boot/ 和 /
格式化
mkfs.ext4 /dev/sdc1
mkfs.ext4 /dev/sdc2
掛載/dev/sdc1 到/mnt/boot目錄,并將核心文件拷貝到目錄中,安裝grub-intall
創建/boot/grub/grub.conf
掛載根目錄,并創建根目錄中的文件
編輯/mnt/sysroot/etc/fstab,注意由于我要把這個硬盤當做系統來啟動,因此在新的主機上面啟動sdc1會變成sda1
將命令對應的二進制文件和庫文件通過腳本拷貝到對應的目錄中
關機,新建虛擬機,讓配置好的硬盤,添加到虛擬機中啟動。
CentOS 6.8-milinux.vmdk 54M
原創文章,作者:Naruto,如若轉載,請注明出處:http://www.www58058.com/45913