Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1209492
  • 博文数量: 232
  • 博客积分: 7563
  • 博客等级: 少将
  • 技术积分: 1930
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-21 11:17
文章分类

全部博文(232)

文章存档

2011年(17)

2010年(90)

2009年(66)

2008年(59)

分类: LINUX

2010-03-02 10:12:54

正在升级ubuntu,突然弹出对话框:

What would you like to do about menu.lst?
(下拉菜单的内容如下)
│ install the package maintainer's version
│ keep the local version currently installed
│ show the differences between the versions
│ show a side-by-side difference between the versions
│ show a 3-way difference between available versions
do a 3-way merge between available versions (experimental)
│ start a new shell to examine the situation




  • 升级了内核了,需要修改下启动菜单上的内容。

    keep the local version currently installed 这个保留现有版本的menu.lst不变。使用它的后果:你虽然下载了新版本的内核在机器上,但是你开机启动界面时新内核不会出现在选择菜单里面的,供你选择的还是没升级前的menu.lst里面记录的旧版本的内核。

    我就这样选了一次,最后手动修改了menu.lst搞定。其实也就是修改一下 kernel 2.6.24-XX-generic 之类的最后的几个数字。 把某个旧版本的整个字段复制,粘贴,然后改改数字就好。 ls /boot 可以看到你都有哪些版本的内核

    install the package maintainer's version 这个选项应该会自动更新menu.lst文件的,大胆的选它吧,重新启动后就可以选择新版本内核引导了。

    其他几个无关紧要,显示一下新旧版本的信息??


  • 除此之外:

    可以运行  sudo update-grub 就会再给你一次选择的机会。

    选择 install the package maintainer's version 正常情况下不会有什么风险,最多丢失 windows 启动项,而且老的文件在 menu.lst~ ,可以再抄过来 :)。但是如果你修改了注释部分的某些行,确实会出毛病的:

    位于 ## ## Start Default Options ## 和 ## ## End Default Options ## 之间的注释不是可以乱动的,他告诉 update-grub 脚本在升级内核时如何更新 menu.lst。在这个部分中两个以上的 # 打头的才真正的注释。一个 # 打头的控制 update-grub 脚本如何运作的变量。 重要的有

    # kopt=root=UUID=112d6f08-9a31-43f8-8a17-89e46ba65e17 ro
    内核选项。如果修改了这里的 uuid,下一次碰到升级的时候就会使用这个错误的 uuid 来更新 menu.lst,导致无法启动。

    # groot=(hd0,2)
    grub
    启动分区,修改了这项安装新内核更新 menu.lst 时会写入错误的 root (hdx,y) 导致无法启动!

    # defoptions=quiet splash
    默认项的附加内核选项。即,默认项用 kopt+defoptions 做内核选项

    # altoptions=(recovery mode) single
    (其他项的名字) 其他项的附加内核选项。可以用多行写多项

    # memtest86=true
    这个可以改成 false,升级时不会再加入基本没用的 memtest86

    一般没有人会去动这些东西,但是有一类情况,比如删除了某个 windows 分区导致 grub 启动分区编号改变,某种原因导致 uuid 改变,大家都知道要修复 grub,修改 menu.lst,然后就可以启动了,以为完事了。下一次升级更新的时候,发现又不能启动了,menu.lst 又使用了修复前的设置。原因就是改正 menu.lst 的时候要连这几行一并改好才算完
    # kopt=...
    # groot=...

    像这种情况,最简单的办法系统成功启动后,删除老的 menu.lst,然后运行 sudo update-grub :update-grub 在有 /boot/grub/menu.lst 存在的时候直接读里面保存的变量来工作,在没有找到 menu.lst 的时候会分析 fstab 和 /boot 下的内核来生成 menu.lst,并以 # 写入那些变量供自己下次使用。如果 menu.lst 错误极多,最好这样删掉重建。

  • 问题: 在另外一台机器上,有的人同样把XP的字段剪切到最前面了,更新menu.lst后,XP字段消失了!

    仔细看 menu.lst 里这几行,已经写得很清楚了:.........

    # Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

    # 你的 xp 启动项应该放在这里,或者更前面 :)

    ### BEGIN AUTOMAGIC KERNELS LIST

    ## lines between the AUTOMAGIC KERNELS LIST markers will be modified
    ## by the debian update-grub script except for the default options below

    ## DO NOT UNCOMMENT THEM, Just edit them to your needs
    ## ## Start Default Options ##
    ...
    ...
    ...
    ## ## End Default Options ##

    ...
    ...
    ...
    ### END DEBIAN AUTOMAGIC KERNELS LIST

    ...
    ...

    他 告诉你,非 ubuntu 的启动项请放在 ### BEGIN AUTOMAGIC KERNELS LIST 之前,或者 ### END DEBIAN AUTOMAGIC KERNELS LIST 之后。否则,下次升级还会把你的 xp 项抹掉的。这两行之间的部分update-grub 维护的。如果你真的需要把 xp 项往前移的话,请再往前一点 :)


阅读(5427) | 评论(0) | 转发(0) |
0

上一篇:linux学习网站

下一篇:ubuntu下CAJ阅读器的

给主人留下些什么吧!~~