grub常見的幾個問題

bug--maker發表於2018-08-03
  • 修改開機圖片
  • 修改grub.conf裡面的一些配置資訊,例如更改開機啟動圖片
  • 首先下載一個張合適的jpg圖片;
    這裡寫圖片描述
  • 然後使用gimp修改圖片的解析度和色度
    這裡寫圖片描述
    這裡寫圖片描述
  • 然後進行圖片的儲存,儲存為xpm格式,並且進行壓縮
    這裡寫圖片描述
  • 修改虛擬主機的配置檔案/etc/grub.conf
    這裡寫圖片描述
  • 重新啟動虛擬主機可以檢視效果
    這裡寫圖片描述
  • 進入單使用者模式
  • 進入下面的介面
    這裡寫圖片描述
  • 使用字母e進入編輯介面
    這裡寫圖片描述
  • 選擇第二項,進入編輯介面
    這裡寫圖片描述
  • 在最後新增s 1 或者singel進入單使用者介面
    這裡寫圖片描述
  • 通過enter儲存修改,然後進入,ESC進入上一個介面,並且放棄修改
    這裡寫圖片描述
  • 使用b來啟動系統,這裡提供了一個小的bash環境,可以用於修改密碼等操作;
    這裡寫圖片描述
  • 修改完祕密之後,系統重新啟動
    這裡寫圖片描述
  • 設定grub密碼
  • 有時為了防止別人修改進入單使用者模式可以設定grub密碼,這裡設定的是一個全域性密碼
    這裡寫圖片描述
  • 如果需要在啟動介面編輯grub就需要輸入密碼,這個介面提示,通過p來輸入密碼,解鎖操作
    這裡寫圖片描述
  • 然後就可以進入編輯介面了
    這裡寫圖片描述
  • 這樣明文儲存密碼的形式是不安全的;
  • 通過grub提供的命令儲存密碼檔案的摘要值,然後儲存密碼的摘要
    這裡寫圖片描述
    這裡寫圖片描述
  • 如果將密碼檔案的位置從全域性放到了title裡面,表示在進入這個title需要輸入密碼,一般就是在啟動核心時,需要輸入密碼;
  • grub損壞的安裝操作
  • 手動破壞bootloader,不應該超過446位元組,否則MBR就會被破壞
    這裡寫圖片描述
  • 這個過程在rhel5.8上面探測失敗,但是在rhel6.5上面是成功的,並且可以正常安裝,在grub損壞之後,一定不能夠進行重啟操作,否則只能夠進入緊急救援模式來解決
  • 將grub安裝在一塊磁碟上面
  • 首先來建立三個分割槽,用於/boot / /swap
[root@server10 ~]# fdisk /dev/vdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7f89a006.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-16644, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-16644, default 16644): +20M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (43-16644, default 43): 
Using default value 43
Last cylinder, +cylinders or +size{K,M,G} (43-16644, default 16644): +512M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 
Value out of range.
Partition number (1-4): 3
First cylinder (1084-16644, default 1084): 
Using default value 1084
Last cylinder, +cylinders or +size{K,M,G} (1084-16644, default 16644): +128M

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/vdb: 8589 MB, 8589934592 bytes
16 heads, 63 sectors/track, 16644 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7f89a006

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1          42       21136+  83  Linux
/dev/vdb2              43        1083      524664   83  Linux
/dev/vdb3            1084        1344      131544   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@server10 ~]# partprobe /dev/vdb
  • 然後進行格式化
[root@server10 ~]# mke2fs /dev/vdb1 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
5304 inodes, 21136 blocks
1056 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=21757952
3 block groups
8192 blocks per group, 8192 fragments per group
1768 inodes per group
Superblock backups stored on blocks: 
    8193

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@server10 ~]# mke2fs /dev/vdb2
mke2fs 1.41.12 (17-May-2010)
warning: 94 blocks unused.

Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
32832 inodes, 131072 blocks
6558 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=134217728
4 block groups
32768 blocks per group, 32768 fragments per group
8208 inodes per group
Superblock backups stored on blocks: 
    32768, 98304

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
  • 格式化第三個分割槽
[root@server10 ~]# mkswap /dev/vdb3 
Setting up swapspace version 1, size = 131540 KiB
no label, UUID=07e6a110-06f2-47f0-98bb-8178d9c19009
  • 建立幾個需要的目錄
[root@server10 ~]# mkdir /mnt/boot
[root@server10 ~]# mount /dev/vdb2 /mnt/boot/
  • 然後安裝grub
[root@server10 ~]# grub-install --root-directory=/mnt/ /dev/vdb
Installation finished. No error reported.
This is the contents of the device map /mnt//boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/vda
(hd1)   /dev/vdb
  • 通常會自動生成下面這些檔案
    這裡寫圖片描述
  • 編輯一個配置檔案
default=0
timeout=5
title FakeLinux
    root (hd0,0)
    kernel /vmlinux
    initrd /initramfs
  • 找到這塊硬碟使用的檔案
    這裡寫圖片描述
  • 將當前的虛擬主機掛起
  • 然後按照下面的步驟執行
    這裡寫圖片描述
  • 選擇磁碟檔案
    這裡寫圖片描述
  • 選擇下一步安裝
    這裡寫圖片描述
  • 選擇yes
    這裡寫圖片描述
  • 選擇主機記憶體網路卡的配置資訊
    這裡寫圖片描述
    這裡寫圖片描述
  • 啟動這個主機檢視grub頁面
    這裡寫圖片描述

  • grub損毀

  • 如果配置檔案丟失會進入這個頁面
    這裡寫圖片描述
  • 在這個頁面,查詢根檔案所在的位置,在這個介面其實是你手動指定了根檔案,initrd檔案所在的位置,來代替grub.vonf檔案的作用;
    這裡寫圖片描述
    這裡寫圖片描述
  • 最後使用boot命令,系統進入啟動頁面
  • 按照上面的操作出現了下面的錯誤
    這裡寫圖片描述
  • 這個錯誤是沒有正確的傳遞root引數導致的,網上的教程都是不傳遞這個引數的,但是在這裡不傳遞就會出現錯誤;
  • 這個引數的傳遞需要參考配置檔案的說明
    這裡寫圖片描述
  • 因為作業系統是使用卷組的方式安裝的,所以需要指定root=/dev/mapper/VolGroup-lv_root,傳遞引數錯誤會導致無法啟動;
  • 啟動之後,需要手動建立配置檔案

相關文章