Grub2 启动恢复

Windows 8 发布后必然会折腾一下,但是在这个装了 Fedora 17 和 Windows 的机器上再装一个 Windows 8 很容易就带来好多问题。机器上有两块硬盘,首先的一个问题就是 Windows 8 安装程序在两块硬盘的机器上选择分区时会出现“我们无法创建新的分区,也不能找到现有分区”的奇怪错误,把第二块硬盘暂时拔掉之后,可以选择分区安装。

安装完成后,很显然 Fedora 17 的 Grub2 启动没有了,Windows 8 启动了计算机。放入 Fedora 安装光盘,进入 Rescue Mode。Fedora 17 的救援模式会扫描硬盘,找到已经装好的 Fedora 系统,将它挂载到 /mnt/sysimage 下。于是,进入 shell 后,按照下面的命令恢复 Grub2:

chroot /mnt/sysimage

grub2-install /dev/sda

之后重启就完成了,/dev/sda 还是 /dev/sdb 根据机器的不同会有所不同,最好装之前先确定一下。

Build a kernel

这两天没事又继续折腾内核编译,上次是从 SRPM 编译出 RPM 然后安装的,似乎比较简单,这次则直接从源代码包编译。

首先从 kernel.org 下载一个源代码包 linux-3.3.8.tar.bz2;

解压缩后,得到源代码目录 linux-3.3.8;

将 Fedora SRPM 中的 patch 文件复制到 linux-3.3.8 目录下,打上这些补丁;

配置 .config,这次图省事,就把 Fedora 的 .config 拿来用了;

之后就可以 make 了,make 会将 vmlinuz 和 kernel module 都编译出来,如果中间没有任何错误,就会一直进行下去,直到完成。

笔记本散热不好,N 次由于过热而自动关机,编译过程就被停止了。重启后,再继续 make 有的时候会出现 unrecognized ELF 错误,而且对于每次编译,这个错误似乎是随机的,查了半天,根据这个资料,由于编译意外中止,导致 ccache 的缓存数据出现错误,用 ccache –clear 一下,就可以继续编译了。

编译完成后,提升到 root 用户,执行 make install_modules make modules_install 安装内核模块,make install 安装内核;

最后根据需要,自己去改一下 grub.cfg 吧。

终于将 Fedora 17 跑在新编译的 3.3.8 内核上了

如果想让内核版本更突出个人的风格,可以修改源代码根目录的 Makefile,其中有

EXTRAVERSION =

默认没有值,这里可以填写任意的字符串,比如 .sunjw,那么编译出来的就是 3.3.8.sunjw。

Fedora 17

从昨天下午开始,到现在,终于把 Fedora 17 给装的差不多了。

之前一直用的是 Fedora 15,感觉有必要升级一下了,于是在备份了个人文件和配置文件之后,就着手升级工作。

一开始还是想通过 preupgrade 进行升级,这个决定最终导致浪费了一个下午的时间。运行了 preupgrade 后,一开始挺顺利的,下载了需要的软件包,之后重启。第一次重启就遇到问题,直接花屏了。加上了 nomodeset 参数之后,成功进入图形界面,但是立刻又出现问题,说是找不到软件包的数据源(repodata.xml),然后就只能退出安装。于是想重新启动之前的 Fedora 15,但是却进不去图形界面。再一次,我选择进入升级,提供了一个在线的软件源之后,似乎开始正常升级了。原来以为会一切顺利的升级下去,没想到在开始安装软件包之后,出现了软件包无法访问的错误,仍然只有退出。重启后,又试图进入原来的 Fedora 15,然后神奇的事情发生了,又能够正常进入图形界面。

最终还是选择放弃使用 preupgrade 进行升级,转向下载 DVD 重新安装。使用 DVD 安装基本还算顺利,不过进入系统后系统找不到适合笔记本的 ati rs480 驱动,只能在低分辨下运行。找了一圈后也没有明确的资料说明到底应该装什么驱动,于是试着下载 xf86-video-ati 驱动,手动编译安装,一开始自动安装脚本将驱动安装到了 /usr/local/lib 下,驱动没有被加载,之后又手动拷贝到 /lib64/ 中对应的文件夹下,重启 X 后,终于 1280*800 的完整分辨率运行起来了。