K.I.S.S. – 简单哲学 Linux, Freedom, Arch, Python, Gtk+, C … Keep It Simple, Stupid!

17十二/1014

关于 Linux 内核的几篇心得

这学期学业繁忙,一直没什么时间更新博客,不过由于学校开了不少 Linux 的课程,对 Linux 的学习和研究可是一点也没有落下哦。

其中一门课程是《Linux 操作系统分析》,推上的同学可能想起我之前说过的用 Kubuntu 的女老师了,没错,就是她!

讲得如何精彩在此就不详述了,有兴趣的同学可以访问她的主页,里面还有全套的课件可供下载。

这里分享几篇我的作业,也就是老师主页上所说的 Project,希望对内核初学者有所帮助:

当然,我也是初学,由于水平有限,分析得很浅显,有些不懂的问题也不方便在作业中列出,因此或是忽略掉,或是不懂装懂掉了,希望不要对人产生误导才好……

标签: , 14 评论
17六/0913

让 2.6.30 版内核和 fglrx 9.6 和平相处(Arch Linux)

ATI 的显卡驱动前几天释出了 9.6 版,该版本相对前一版本,有以下改进(来自 Linuxtoy):

* 支持 SLED/SLED 11 和 RHEL 4.8 操作系统
* MultiView 支持

当然还有很多 BUG 修正,这里不一一列举。

值得注意的是,此版本仍然没有带来对 2.6.29 以上内核的支持,这是 ATI 自 9.4 版以来第三次对新版本内核无视,当然以前也有过很多先例,可以说,ATI 的显卡驱动对 Linux 用户来说就是个彻头彻尾的冷笑话!奉劝各位 Linux 用户以后千万别买 A 卡,爱买什么买什么吧!

下面说一下网友研究出的关于在 2.6.30 版内核上运行 fglrx 9.6 的方法,2.6.29 版内核可以用 AUR 上的那个软件包。

网友原版的方法参见 Ubuntu 中文论坛,这里说的是在 Arch Linux 上的具体操作方法。

1.更新 ABS,从 /var/abs 中找到 testing 中的 26 这个文件夹,复制到 ~/26。

1.Refresh your ABS tree, and copy /var/abs/testing/kernel26 to ~/kernel26 or somewhere.

2.把以下内容保存为 ~/kernel26/fglrx.diff。

2.Save the text below to ~/kernel26/fglrx.diff .

diff --git linux-2.6.30/arch/x86/mm/tlb.c linux-2.6.30/arch/x86/mm/tlb.c
index 61ddfa0..3d26c0b 100644
--- linux-2.6.30/arch/x86/mm/tlb.c
+++ linux-2.6.30/arch/x86/mm/tlb.c
*************** void flush_tlb_page(struct vm_area_struc
*** 274,279 ****
--- 274,280 ----

   preempt_enable();
  }
+ EXPORT_SYMBOL(flush_tlb_page);

  static void do_flush_tlb_all(void *info)
  {

3.修改 PKGBUILD,添加 fglrx.diff 这个文件,并且在原来的 patch 那行下添加下面一行:

3.Add the file fglrx.diff to PKGBUILD, and add a new line below the exsiting patch line:

patch -Np1 -i ${srcdir}/fglrx.diff || return 1

4.运行 makepkg,等待,然后用 pacman -U 安装。

4.Run makepkg. After a long time, use 'pacman -U' to install it.

5.重启,发现在 /lib/modules 里面,出现了 2.6.30-ARCH-g9621145-dirty 这个文件夹(不知道大家出现的名字一不一样)。

5.Reboot, and you'll find a new directory named 2.6.30-ARCH-g9621145-dirty (I'm not sure if everyone gets the same name).

6.到 AUR 里下载 的 Tarball,解压到 ~//。

6.Download the tarball which contains PKGBUILD from AUR , extract it to ~/catalyst or somewhere.

7.修改 PKGBUILD 的 _kernver 为 2.6.30-ARCH-g9621145-dirty,或者你自己的文件夹名。

7.Change _kernver to 2.6.30-ARCH-g9621145-dirty, or the different name you got.

8.修改版本号、MD5 等量。

8.Change the Version, MD5, etc. to the new version.

9.把 # Fix 2.6.29 kernel 下面的两行改为:

9.Change the following two lines of '# Fix 2.6.29 kernel' to:

  cd ${srcdir}/archive_files/common/lib/modules/fglrx/build_mod  patch -p0 <${srcdir}/2.6.30.diff || return 1

10.将上面帖子的附件解压,存为 ~/catalyst/2.6.30.diff,然后 makepkg,pacman -U。

10.Get the patch from github, and save to ~/catalyst/2.6.30.diff, and complie and install catalyst.

上面说的就是整个动手的过程,以后内核更新或者 Catalyst 更新,可以使用这个方法自行修改。如果你懒得自己一步一步来,也可以从 github 里面下载我做好的 PKGBUILD 等文件,目前版本为 kernel26 2.6.30-4, catalyst 9.6-1,不保证更新。

You can download all the files I've modified from github, but It may not be the newest.

好了,折腾的过程就是这么多,目前用起来还可以,不过 Compiz 下性能仍是不佳,凑合着用吧……