国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

解決grub引導錯誤的一次經歷

2024-06-28 13:21:30
字體:
來源:轉載
供稿:網友
解決grub引導錯誤的一次經歷

  我的電腦上一共是兩塊硬盤,1塊固態硬盤(sda)裝了Win7,另外一塊普通硬盤(sdb)裝了Ubuntu和centos兩個系統,系統啟動的引導是裝在sdb上面的ubuntu的grub2,它負責選擇不同的操作系統來啟動,OK,背景交代完了,接下來開始講述我們出現的問題。

  昨天晚上給sdb新添加了一個分區,如下:

 1 Disk /dev/sdb: 500.1 GB, 500107862016 bytes 2 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors 3 Units = sectors of 1 * 512 = 512 bytes 4 Sector size (logical/physical): 512 bytes / 4096 bytes 5 I/O size (minimum/optimal): 4096 bytes / 4096 bytes 6 Disk identifier: 0xa887a887 7  8    Device Boot      Start         End      Blocks   Id  System 9 /dev/sdb1            2048   125829119    62913536   83  linux10 /dev/sdb2       125829246   970502711   422336733    f  W95 Ext'd (LBA)11 Partition 2 does not start on physical sector boundary.12 /dev/sdb5       125829248   221983352    48077052+   7  HPFS/NTFS/exFAT13 /dev/sdb6       221983424   228274807     3145692    b  W95 FAT3214 /dev/sdb7       228274872   518603944   145164536+   7  HPFS/NTFS/exFAT15 /dev/sdb8       518604008   782021941   131708967    7  HPFS/NTFS/exFAT16 /dev/sdb9       782024704   918054911    68015104   83  Linux17 /dev/sdb10      918056960   934834175     8388608   83  Linux18 /dev/sdb11      934836224   951613439     8388608   83  Linux19 /dev/sdb12      951615488   960004095     4194304   82  Linux swap / Solaris20 /dev/sdb13      960004159   970502711     5249276+  83  Linux21 Partition 13 does not start on physical sector boundary.

  其中那個13行的sdb6就是我新添加的分區,由于這個分區是在磁盤中間添加的所以就導致后面的分區號全部變了(比如centos的根目錄原來裝在sdb8,現在變成了sdb9了),我的ubuntu的根目錄是裝在sdb1中,由于它的分區號還沒有改變,所以ubuntu系統還能正常啟動,而centos系統就啟動不了了!

  啟動不了我就得去排除錯誤啊,剛開始我就想著是引導的問題,于是我在ubuntu下面調用了update-grub命令,來更新一下grub2的啟動條目,更新的結果是這樣的:

Generating grub configuration file ...Found background image: ubuntu_kylin_grub_bg.tgaFound linux image: /boot/vmlinuz-3.13.0-46-genericFound initrd image: /boot/initrd.img-3.13.0-46-genericFound linux image: /boot/vmlinuz-3.13.0-32-genericFound initrd image: /boot/initrd.img-3.13.0-32-genericFound memtest86+ image: /boot/memtest86+.elfFound memtest86+ image: /boot/memtest86+.binFound Windows 7 (loader) on /dev/sda1Found CentOS release 6.6 (Final) on /dev/sdb9done

  從上面可以看到,三個操作系統都找到了,現在應該能正常啟動了吧,我重啟試了試,centos啟動還是失敗。。。。

  后來我有在想,我的centos系統的home目錄和var目錄是單獨的分區,是不是它啟動的時候自動掛載出問題了,于是我又去修改centos的/etc/fstab文件,原來我是用分區號來標識分區的(比如/dev/sdb9之類的),這里我就全部改成了用UUID來標識分區。這里還學到了一個小技巧,原來分區的UUID號碼都保存在/dev/disk/by-uuid/這個目錄下面,都保存的是軟鏈接,ll一下就可以看到它指向哪塊硬盤了,如下:

  我改了fstab之后,再來重啟系統,發現還是不行。這我就非常郁悶了,一直在想問題出在哪里?后來我又看了一下grub2的配置文件(grub.cfg),終于發現問題還是在那個啟動命令上面,如下所示:

 1 menuentry 'CentOS release 6.6 (Final) (on /dev/sdb9)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osPRober-gnulinux-simple-d24c3228-5ffc-4937-8411-a69681c3b54e' { 2         insmod part_msdos 3         insmod ext2 4         set root='hd1,msdos9' 5         if [ x$feature_platform_search_hint = xy ]; then 6           search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos9 --hint-efi=hd1,msdos9 --hint-baremetal=ahci1,msdos9  d24c3228-5ffc-4937-8411-a69681c3b54e 7         else 8           search --no-floppy --fs-uuid --set=root d24c3228-5ffc-4937-8411-a69681c3b54e        fi 9         linux /boot/vmlinuz-2.6.32-504.12.2.el6.i686 ro root=/dev/sdb8 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet vga=79110         initrd /boot/initramfs-2.6.32-504.12.2.el6.i686.img11 }

  這是grub.cfg文件中關于centos啟動的部分,在第九行linux命令中,它選擇好了內核以只讀命令來掛載根文件系統的時候,選擇的分區是sdb8,而此時sdb8已經變成了windows的ntfs分區,所以此時我的系統啟動的時候,就會提示一大串的無法識別文件系統類型(ntfs),只要把這里改成sdb9,我的系統就能正常啟動了!

^ o ^

  啟動之后,我還沒高興多久呢,發現在ubuntu下面運行一遍update-grub命令,那么grub.cfg文件又被覆蓋了。。沒辦法,還得繼續分析!

  經過分析之后,發現centos的那個啟動條目是由/etc/grub.d/30_os-prober這個配置文件產生的,而在這個文件中,linux-boot-prober命令最終生成了grub.cfg文件中的第9行中root命令后面跟著的分區名!而這個linux-boot-prober命令就是查找給定的分區名中的類似于"menu.lst"的配置文件,結果我最終發現,問題還是出在centos系統的配置文件上,如下所示:  

1 title CentOS (2.6.32-504.12.2.el6.i686)2         root (hd0,9)3         kernel /boot/vmlinuz-2.6.32-504.12.2.el6.i686 ro root=/dev/sdb8 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet vga=7914         initrd /boot/initramfs-2.6.32-504.12.2.el6.i686.img

  我原來只改了第2行的root命令選擇的分區,而沒有改第三行中root命令選擇的分區,這樣我的系統還是啟動不了。。

  OK,把centos的配置文件一改,問題總算都是解決了!^ . ^


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新沂市| 克东县| 海安县| 美姑县| 阿克| 文登市| 台前县| 扶余县| 沙坪坝区| 金华市| 彝良县| 大城县| 内丘县| 阿克陶县| 湾仔区| 孝感市| 阿尔山市| 卫辉市| 乌拉特前旗| 右玉县| 诸城市| 泾源县| 曲松县| 朝阳区| 西乡县| 长宁区| 苏州市| 建德市| 大丰市| 塔河县| 梅河口市| 高陵县| 馆陶县| 原平市| 云阳县| 抚顺县| 昌邑市| 南丰县| 北碚区| 上杭县| 嵊泗县|