我使用的笔记本是Toshiba Dynabook SS LX/190DK(对应的海外型号为 Portege S100),电脑上安装了两个操作系统,一个 Ubuntu Linux 6.10 和一个原装的 Windows XP。自从用上 Ubuntu 6.06 以来,Ubuntu 的表现一直都很不错。后来通过重新安装的方式,升级到 6.10 版本,更是令人满意。
但是几年4月份推出的新版本,却导致一些用户发现自己的电脑安装了 7.04 之后,Ubuntu 系统就不能启动了,报告该问题的用户中相当多数使用的是东芝的笔记本。这其实是个和硬盘控制器相关的老问题,在 6.06 和 6.10 中已经得到解决,但是不知道由于什么缘故,导致这个 bug 的代码又恢复成以前的样子。
导致该问题的原因是两个 kernel module 加载的顺序。在 7.04 中,kernel 首先加载 ata_piix 模块,然后加载 ahci 模块,但是对于我使用的这个型号的笔记本,要求首先加载 ahci 模块,然后再加载 ata_piix 模块。在 Ubuntu Forums 上,已经有牛人提供了如何在 Toshiba S100 笔记本上安装 Ubuntu 7.04 的方法。我借鉴过来,稍事修改步骤,即可用于从 6.10 升级到 7.04。详细步骤如下:
运行 Update Manager,开始升级工作。或者从 Ubuntu CD 上升级是个不错的主意,网络升级实在太慢,我花了大概6个小时才下载完所有的 package。不过如果是从 CD 上升级的话,其中很多 package 不是最新版本的,还是需要花费不少时间用来执行 apt-get upgrade。
升级完成之后,千万不要立即重启!接下来要做的是:关闭升级成功的提示窗口。
编写一个脚本文件,代码如下:
#!/bin/sh
PREREQ=””
prereqs() {
echo “$PREREQ”
}
case $1 in
# get pre-requisites
preregs)
preregs
exit 0
;;
esac
modprobe -r ata_piix
modprobe ahci
modprobe -r ahci
modprobe ahci
modprobe ata_piix
# This is the end of the script
将该脚本文件保存在 /etc/initramfs-tools/scripts/init-premount 目录中,文件命名为 ahci,使用 sudo chomd +x 命令赋予其可执行权限。
然后打开一个终端窗口,切换到 /boot 目录,执行 sudo update-initramfs -k 'all' -u 命令,更新所有 initrd.img 文件。也可以用 -k 参数具体地指定更新某个版本的 initrd.img 文件。
更新完成之后,重启 Ubuntu。
如果安装过 Nvidia 自己的显卡驱动程序(例如 NVIDIA-Linux-x86-1.0-9755-pkg1.run)的话,X 启动时会报告错误,只需要重新编译安装驱动程序即可。
我在完成升级,登录进入 Ubuntu 7.04 系统之后,发现桌面上的 panel 都消失了,只有几个图标孤零零留在那儿。使用 Alt+F2 打开一个终端,试图运行 gnome-panel,却告知该程序已在运行。无奈,使用 Ctrl+Alt+Backspace 重启 X,再次登录,发现这时 panel 又显示出来,但是在桌面上的几个图标去不见了,在桌面上点击右键也没有响应。在 Ubuntu 中文论坛中看到有其他用户建议重新安装 gnome panel,于是执行 sudo apt-get install --reinstall gnome-panel,然后再次重启 X。登录进入系统之后,一切恢复正常。