GRUBlinux
GRUB(GRand Unified Bootloader)是bootloader的一種,它的主要功能是選擇要啓動的內核。bash
當咱們開機時,這個GRUB菜單是隱藏的,ide
在這個畫面時,咱們敲任意鍵,就能夠顯示出GRUB菜單,而後能夠編輯加密
摁‘e’鍵能夠進入二級目錄spa
這裏顯示了,kernel這一行顯示了要加載的內核版本,initrd顯示給內核提供的輔助驅動,來加載邏輯卷等。操作系統
把光標調到kernel這一行,再次摁‘e’鍵,能夠在裏面添加參數,輸入完後,摁回車表示確認,而後在kernel這一行摁‘b’鍵就能夠啓動了
命令行
例如:咱們以1級別啓動,來從新設置root的登陸密碼3d
在kernel裏添加一個參數1,s或S,single,就能夠直接登陸了orm
在這裏面添加1blog
這沒須要輸入用戶名和密碼,就直接進入root用戶了,而後就能夠修改密碼了,而後輸入init3就能夠切入正常模式了,在這個過程當中,會啓動3級別須要的服務
下面咱們介紹下grub的組成:
grub有兩個版本
grub 0.x:gryb legacy(傳統grub)
grub 1.x:grub2
grub legacy:(CentOS5,6)
一、GRUB程序的組成
主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5組成。
device.map:存放的是內核文件的根分區
stage1: 放在mbr中
stage1_5:存放在mbr以後的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統;
stage2:放在磁盤分區(/boot/grub/)中,做用是提供菜單並提供交互式接口(e編輯菜單,c命令模式),加載用戶選擇的內核或操做系統,爲菜單提供保護機制等
grub.conf:配置文件 還有一個連接文件是/etc/grub.conf
在grub菜單中,摁‘c’鍵,能夠進入交互式接口,指定一些參數,可直接啓動
而後回車就能夠啓動了
grub如何識別設備:
(hd#,#)
hd#: 磁盤編號,用數字表示;從0開始編號
#: 分區編號,用數字表示; 從0開始編號
(hd0,0)表示第一個磁盤的第一個分區
grub的命令行接口
help: 獲取幫助列表
help KEYWORD(命令): 某個命令的詳細幫助信息
find (hd#,#)/PATH/TO/SOMEFILE:肯定某文件是否存在
root (hd#,#) 用來設定grub的根只能指向一個設備;這個根不是文件系統的根
kernel /PATH/TO/KERNEL_FILE: 設定本次啓動時用到的內核文件;額外還能夠添加許多內核支持使用的cmdline參數;
例如:init=/path/to/init, selinux=0(表示禁用內核中的selinux功能)
initrd /PATH/TO/INITRAMFS_FILE: 設定爲選定的內核提供額外文件的ramdisk;要與內核版本號徹底匹配
boot: 引導啓動選定的內核;
直接在命令行輸入比較麻煩,就能夠下寫到配置文件中,
配置文件:/boot/grub/grub.conf 還有一個連接文件是/etc/grub.conf
配置項:
default=#: 設定默認啓動的菜單項;菜單項(title)編號從0開始;
timeout=#:指定菜單項等待選項選擇的時長;
splashp_w_picpath=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜單背景圖片文件路徑;
hiddenmenu:隱藏菜單;
password [--md5] STRING: 菜單編輯認證;
title TITLE:定義菜單項「標題」, 可出現屢次;
root (hd#,#):grub查找stage2及kernel文件所在設備分區;爲grub的「根」;
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啓動的內核
initrd /PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件;
password [--md5] STRING: 啓動選定的內核或操做系統時進行認證;
生成密碼串,使用grub-md5-crypt命令
爲grub菜單或者內核進行認證
修改配置文件爲下圖,
爲了演示效果,咱們在全局加了一個password選項,有添加一個title在裏面添加一個password選項
而後咱們進入grub菜單,這個時候就有兩個選項了,這個時候摁‘e’鍵沒用,使用‘p’鍵,輸入密碼,才能使用‘e’鍵,要麼選定一項直接使用回車啓動,可是若是在title里加入了password是對內核加密,須要先輸入密碼才能啓動
使用‘p’鍵,輸入密碼以後才能使用grub菜單項
這個時候能夠對這兩個選項進行修改了,第一個title沒有添加password選項,回車選定以後能夠直接啓動,若是選擇第二個,回車以後會提示讓輸入密碼,才能啓動
修復安裝grub
(1) grub-install 這個命令安裝grup
grub-install --root-directory=ROOT /dev/DISK
(2) grub 進入命令行模式,這種方式根文件系統要提早存在,並且要有grub目錄,裏面的文件是齊全的
grub> root (hd#,#)
grub> setup (hd#)
在虛擬機中添加一塊新硬盤,而後把grup裝進入,而後使用者新硬盤建一個新的虛擬機,而後啓動
首先添加一塊新硬盤,而後分區,格式化文件系統等(若有不會的,能夠查看之前的博客)
而後在/mnt下建立一個boot目錄,而後把新硬盤的第一個分區,掛載到剛建立的目錄
而後安裝grup,
這就安裝好了,而後驗證下
可是沒有配置文件,因此要本身寫一個,也沒有內核和initrd,因此須要複製本機的內核和initrd到新硬盤下
而後編輯配置文件內容以下
可是,咱們把根文件系統指向了/dev/sdb3,可是裏面沒有文件包,因此咱們要把根文件系統裏的文件在/dev/sdb3中建立
這裏面並無文件,咱們複製一個bash到新硬盤下,而且要把依賴到的文件也複製過去,等下開機時,能夠直接啓動bash
而後還要系統系統的init程序,若是不指定,就會自動啓動/sbin/init由於咱們這個硬盤裏沒有,會出錯的
你須要肯定你剛在配置的那個硬盤的路徑
而後使用vm建立一個新虛擬機,其餘都同樣,而後在選擇磁盤的時候,選擇使用現有的
而後建立完成,啓動就能夠查看了
而後直接啓動,出現grub菜單,而後使用‘e’鍵,而後在kernel這一行,加入參數selinux=0,這個參數要加在init前面,而後回車回到kernel這一行,而後摁‘b’啓動就能夠了
這就成功了
把本身系統的mbr弄壞,而後使用光盤的grup進行引導修復
這就把grub的第一階段給弄壞了,
若是這個時候你的系統是開機狀態,直接使用命令grub-install --root-directory=/ /dev/sda就能夠直接修復了,
而後sync同步之後,在重啓就沒有問題了,
也可使用grup而後回車進入命令行模式進行修復
若是你的系統是關機,再啓動就不行了,只能使用緊急救援模式進行修復
再把mbr弄壞,而後使用救援模式進行修復
弄壞以後進行重啓,而後把光盤鏡像掛載上,而後重啓
而後選擇第三項,即Rescue installed system 而後回車
或者摁‘ESC’輸入linux rescus回車就能夠了
而後根據提示作就好了
而後切換到根下,使用chroot /mnt/sysp_w_picpath/ 切到實際的根上,而後執行grub-install就好了
而後exit回到救援模式的bash下重啓就好了(光盤卸掉)