显示标签为“GRUB”的博文。显示所有博文
显示标签为“GRUB”的博文。显示所有博文

2011年11月19日星期六

坑爹的Ubuntu

最近被Ubuntu的几个地方坑了,上来抱怨一下。

用interfaces文件配置网络接口的话,开机启动要等2分钟才能进去,显示"Waiting for network configuration...",过1分钟再显示"Waiting up to 60 more seconds for network configuration..."。这是一个影响很多人的bug,而开发者竟然说这是他们设计的特性。最后我只能是用NetworkManager来启用我的无线和有线网卡。

然后帮一个朋友恢复重装Windows之后损坏的GRUB。我很久不干这个了,因为早就不这样双系统安装了。要制作一个USB启动盘。可是dd if=file.iso of=/dev/sdX做出的启动优盘不能启动,而usb-creator-gtk选了ISO文件和优盘后,创建的按钮还是灰色的。后来从官方文档了解到,制作这个优盘启动盘需要:
  • 优盘要分区
  • 第一个分区(启动分区)要格式化成FAT16或者FAT32文件系统
  • 这个分区要加载上
真是坑爹啊,学到的标准的方法在Ubuntu这里是不适用的。

做好优盘系统进去后,按照官方文档修复GRUB。推荐的Boot-Repair根本找不到GRUB的安装。又用命令行修复,可是重启后只能进入GRUB的rescue模式,而且不能加载normal模块,说文件找不到。

后来找到原因了。正常的Linux,root文件系统进去就是标准的目录,bin、usr什么的。这个朋友用了btrfs文件系统,root文件系统进去有个@目录,@目录下才是bin、usr什么的。GRUB在(hdX,Y)找不到root,在(hdX,Y)/@才能找到root,所以Boot-Repair找不到GRUB,rescue模式下也找不到模块文件。另外,官方文档说的是(hdX,Y),而我在GRUB的rescue模式下,用ls分区发现根分区是(hdX,msdosY)这样的,所以要(hdX,msdosY)/@这样指定根分区才能找到root。

修复了GRUB后搜索,发现这是11.04及其后对btrfs文件系统特有的设计。又是Ubuntu一大奇葩的特色,打破常规,让你学到的东西在Ubuntu里面再次失效。

2011年1月9日星期日

修复GRUB

从第一次使用Linux(Red Hat 9.0)时候,就需要学会修复GRUB。因为安装Windows的时候,会把GRUB的引导信息覆盖掉。那时候是用Redhat 9.0的光盘启动,进入修复模式,光盘会找到已经安装的系统。chroot进去后,grub-install /dev/hda就可以了。

后来用了Debian,Linux用了udev,在/dev下的设备名是动态生成的,而不是像以前一样静态的,不管有几块硬盘,/dev/hda1、2什么的一堆都有。

这样子如果用Live CD启动,Live系统的/dev下面是没有硬盘设备名的。这里需要用mknod手动生成:
# mknod /dev/sda1 b 8 1
然后挂载要修复的系统再chroot进去:
# mount /dev/sda1 /mnt
# chroot /mnt
进去后还要再生成/dev/sda:
# mknod /dev/sda b 8 0
然后安装grub即可:
# grub-install /dev/sda
mknod要创建的设备名的大号和小号在/usr/src/linux/Documentation/devices.txt。

2009年11月11日星期三

修复Grub

修复Grub恐怕是我玩Linux碰到的最麻烦的问题了。系统还没开始启动,引导程序就出错的时候,我们很难做到Don't panic。

我第一次修复Grub,是在安装了Redhat 9再安装Windows XP后,这样Grub就被Windows搞坏了。那时候用Redhat 9的光盘启动进入拯救模式,就可以修复了,还算方便。在用Linux的这几年里,Grub因为种种原因被弄坏过太多次,但之后都不是因为Windows。为什么说修复Grub麻烦呢,因为你需要从光盘启动进去修复。从光盘进入系统速度太慢,如果要试几次,会很花时间的。为此,我一度在硬盘上装两个系统,一个专门用作拯救系统。

昨天整理了老电脑的硬盘,删除了某分区。今天开机后就停在了grub rescue的命令提示符。在这个提示符里面我搞不定,就用Fedora 11的光盘启动。chroot进去后,grub-install和update-grub都出错,大概是分区找不到的错误。Fedora 11提供的拯救模式,在最后一步会提问是否要让程序搜索并挂载已安装的系统。之前我都跳过这一步,自己手动挂载的。最后一次,我让拯救程序搜索并挂载。然后
grub-install '(hd0)'
update-grub
重启之后就成功了。

看来拯救程序挂载得很完美,具体是哪些参数的设置我没研究明白。修复这么多次Grub,每次都很折腾,一个原因是我至今还没完全搞清楚里面的原理。

2009年6月21日星期日

LinuxApp版聚/GRUB

昨晚在魏公村的一家餐馆,参加了水木社区LinuxApp版的版聚。参加的人有yegle, dinny, fvwmer, Dieken, ws6644(女), xinliGG, roy, JulyClyde, zhlyang, chenkw, 我, askthesky(女)。没想到其中两人和我一样都在水木聊天室的群里面。能瞎聊聊还是不错的。

学到了一点。GRUB 2的shell里面有cat命令,可以通过set root设置分区,然后用cat就可以查看任意文件,比如Pidgin的accounts.xml文件(里面含有明文密码)。如果是GRUB legacy,可以用password和md5crypt设置GRUB shell的密码,但目前GRUB 2里面还没有这两个命令。