很早就听说2.6.38内核的小补丁,大改进,但一直懒的更新内核。
最近一冲动,把系统全部更新,中间遇到点问题,后来算是解决了。
做下记录,希望能给其他人带来帮助。
更新系统命令,仅作个人记录,备查
- emerge -av --update --deep --newuse world
中间会遇到各种问题,一般是各种依赖,不细说了
- emerge --depclean
- revdep-rebuild
更新过程中到ati-drivers的时候,编译不过去。
- /opt/portage/x11-drivers/ati-drivers-11.2/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: In function ‘fglrx_pci_suspend’:
- /opt/portage/x11-drivers/ati-drivers-11.2/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:851:9: error: implicit declaration of function ‘acquire_console_sem’
- /opt/portage/x11-drivers/ati-drivers-11.2/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:873:9: error: implicit declaration of function ‘release_console_sem’
- /opt/portage/x11-drivers/ati-drivers-11.2/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: At top level:
google之。找到问题所在,>acquire/release_console_sem已经变为console_lock/unlock,
处理方式么,我先找到个补丁,手动改了源文件。补丁见
的4楼,
当然更简单的方式是用sed了。
- sed -i 's/acquire_console_sem/console_lock/;s/release_console_sem/console_unlock/' firegl_public.c
但是我不会修改gentoo的ebuild,每次emerge都会重新解压,不会用我更改的文件编译。
我只好用笨办法了。看来要懂点ebuild了,有哪位高手知道可以不改ebuild的办法,还请多指教
笨办法就是手动执行
- # bash ati-driver-installer-11-2-x86.x86_64.run
安装完毕,但是它不会生成内核模块,看下log就知道,内核模块就要手动编译了。也很简单
进入/lib/modules/fglrx/build_mod,使用上面介绍的方法修改源代码后执行bash make.sh,
再根据指示到上层目录执行bash make_install.sh,内核模块就安装好了。ati-config --initial后重启试试吧。
阅读(1199) | 评论(0) | 转发(0) |