Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33506
  • 博文数量: 8
  • 博客积分: 411
  • 博客等级: 下士
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-25 18:10
文章分类
文章存档

2010年(8)

最近访客

分类: LINUX

2010-04-29 15:13:46

背景:

現在的Linux基本都使用Grub啟動。Grub根據事先的配置,載入kernel等。例如:在 /boot/grub/menu.lst 中,有


title Ubuntu 8.04.3 LTS, kernel 2.6.24-23-generic

root (hd0,6)

kernel /boot/vmlinuz-2.6.24-23-generic root=UUID=352b6906-7a3e-4c58-8652-d8d182c7293c ro quiet splash

initrd /boot/initrd.img-2.6.24-23-generic  

可見,root是在 (hd0,6) 分區中的。(其中 hd0,6 是grub中的分區表示法,即 /dev/sda7)


問題:

當用戶重新分區後,無論是在windows中還是在Linux中,只要改變了硬盤分區,分區號就會相應改變,比如 /dev/sda7 變為 /dev/sda8。此時,若 grub 配置未做相應改變,重啟後便會無法挂載原分區,出現 Error 17。


解法:

重裝 grub 即可。


由於系統已不能進入,只好拿出 Live CD。以ubuntu為例:

1. 使用ubuntu live desktop CD進入系統,用戶名ubuntu,密碼直接回車。

2. 打開終端 (terminal),用 sudo fdisk -l 查看當前硬盤分區。(注:因為涉及系統操作,一定要加sudo)

例如:

$sudo fdisk -l /dev/sda


Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x8a941a0f

Device Boot Start End Blocks Id System

/dev/sda1 * 1 1824 14651248+ 83 Linux

/dev/sda2 1825 19209 139645012+ 83 Linux

/dev/sda3 19210 19457 1992060 82 Linux swap / Solaris  


3. 重指定根分區,重裝grub。下面直接摘自其他網友:

$sudo grub
$find /boot/grub/stage1
    #find命令会返回一个值,比如(hd0,7)
$root (hdx,x)
    #如果find命令返回的(hd0,7),这里你就root (hd0,7)
$setup (hdx)
    #如果find命令返回的是(hd0,num),你就 setup (hd0)

如果提示ok、成功后,重启系统,Done。

阅读(1470) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~