Fedora中的kmod与akmod
fedora吧
全部回复
仅看楼主
level 10
一楼,度娘。
2012年06月18日 23点06分 1
level 10
Linux Kernel有一大特性就是模块化,通过kernel module(内核模块,Fedora中缩写作kmod)来扩展内核功能(cf. what is a kernel module?)。最常见的一类内核模块就是驱动程序(driver)。由于许可证或使用规模等原因,一些硬件的驱动无法进入kernel,只能通过内核模块的形式来加载使用。在Fedora中如果你启用了rpmfusion-nonfree源,你会看到大量kmod-打头的软件包,大多都是rpmfusion帮我们编译、打包好的各类私有驱动(比如nvidia、ati的显卡驱动,broadcom的网卡驱动等等)。但是,你也许会注意到,几乎每一个kmod-*软件包都有一个对应的akmod-*软件包,而很多“私有驱动安装教程”都是直接让你把两个都装上。那么,这两个到底有什么区别呢?
2012年06月18日 23点06分 2
level 10

让我们以(a)kmod-wl(broadcom无线网卡驱动)为例,看看两个包的summary:
kmod-wl: Metapackage which tracks in wl kernel module for newest kernel
akmod-wl: Akmod package for wl kernel module(s)
2012年06月18日 23点06分 3
level 10

再看一下子包,akmod-wl没有子包,而kmod-wl则有大量的子包,和不同版本的内核一一对应(e.g. kmod-wl-2.6.38.7-30.fc15.i686.PAE.i686)。另外,akmod-*依赖akmods软件包,而这个软件包的用途则是:“Automatic kmods build and install tool”。
这下明白了吧?akmod是能够自动编译、安装的kmod。事实上,akmod-foo的rpm包中只包含了一个src包和一个平台spec文件,并没有任何编译好的二进制文件。akmod-foo通过内核安装后脚本(postinst),在每次安装了新内核后检查新内核是否有foo模块,如果没有则调用akmods从src里编译并安装foo模块,以此来及时为新内核提供相应的模块。这和debian系的dkms是一样的(Ubuntu下的私有驱动都是通过dkms来安装的)。
由于内核模块是安装在某个特定的内核上的,当更新内核后必须重新给新内核安装内核模块,因而如何实现自动化的模块安装、管理一直是一个令人头痛的问题。老方法是通过kmod-*这样的metapack来解决,每当出现新内核后,志愿者们为其编译、打包新的kmod,并把这个新的kmod作为kmod-* metapack的子包添加到源中,利用yum update的过程自动将新的kmod下载安装。不过这样的方法有两个问题:一是志愿者们打包新包总是需要一些时间,会有一些延迟;二是如果新内核是用户自定义的而非官方源提供的,就没有相应的kmod了。
解决这些问题的银弹就是akmods系统,通过上文所述的方法来实现自动安装,可以做到自动、及时为所有新内核装上模块。akmods系统从Fedora 9之后开始使用,akmod替代kmod是大势所趋,所以我们在安装私有驱动的时候其实只需要装上相应的akmod包即可了,而不再需要kmod。

2012年06月18日 23点06分 4
level 10
所以,如果是N卡的话,就不要费尽心计的安装什么开源驱动了,能装上一个开源显卡驱动,在Linux上的技术水平也不会提高多少,Linux的学习,还是要一部一个脚印。
2012年06月18日 23点06分 5
level 4
首页的三个精品全是楼主的,高手啊,会火?前湿?
2012年06月19日 05点06分 9
其实大鸟老鸟都猫着呢,等到有大家谁都解决不料的问题的时候他们就会跳出来,大声喊 千年等一回,我无悔诶~~~~
2012年06月19日 13点06分
2012年06月19日 13点06分
@盟军特战队 要不要这么6
2016年11月24日 09点11分
2016年11月24日 09点11分
level 11
厉害。。。
2012年06月19日 13点06分 10
level 11
我的nvidia独显装不上呢,怎么办?
2012年06月21日 01点06分 11
请问你安装的哪个包啊,如果是从nvidia下载的,我无能为力。 如果是从rpmfusion上下载的,最好先安装rpmfusion源,然后在桌面工具中安装。 出错请贴出错误日志和提示消息,你之说一句装不上让我们很为难。
2012年06月21日 02点06分
@盟军特战队 非常感谢,我也没想要装上,独显在linux下也不会什么用。我已经能echo OFF > switch关闭就满足了。
2012年06月25日 03点06分
level 4
楼主,我用的是4.0.8内核,无线网卡bcm43142开启不了,怎么安装驱动呢?
2015年08月01日 05点08分 12
1