我如何才能知道我的内核是用什么设置编译的?
我想了解这背后的概念。我想知道如何找出哪个设备使用哪个模块。
例如:现在,我想找出我的内核正在运行哪个 wifi 模块,因为这是我的英特尔公司 Wireless-N 7260 网卡随机死机
我试过了:make menuconfig
但这仅显示:
make: *** No rule to make target `menuconfig'. Stop.
或者我可以用 sysctl 找出该模块吗?这是输出sysctl -a
答案1
您可以使用以下命令快速列出内核编译期间使用的所有标志:
cat /boot/config-`uname -r`
在 14.04 系统上,软件包提供了 Intel 7260 固件linux-firmware
,您可以检查其文件列表。
答案2
查看内核设置对于理解这个概念并没有真正的帮助:
cat /boot/config-`uname -r`
这仅显示在编译内核时使用了哪些设置,除非您想编译自己的内核,否则现在无法更改这一点。
您想查看 的输出lsmod
,其中显示了所有已加载的模块。在那里您可以猜测,哪个模块可用于哪个设备,在这个例子中,它是“iw:
$ lsmod|grep iw
iwlmvm 184162 0
mac80211 582807 1 iwlmvm
iwlwifi 161370 1 iwlmvm
cfg80211 447796 3 iwlwifi,mac80211,iwlmvm
您可以查看每个模块的详细信息modinfo <modulename>
lspci
您可以使用(或)查找设备名称和 ID,lsusb
例如:
$ lspci|grep -i wireless
01:00.0 Network controller: Intel Corporation Wireless 7260 (rev 6b)
然后搜索设备 ID 字符串7260在已加载模块的详细信息中,在这种情况下您可以成功:
$ modinfo iwlwifi|grep 7260
firmware: iwlwifi-7260-7.ucode
然后使用以下方法找到固件文件
$ locate iwlwifi-7260-7.ucode
/lib/firmware/iwlwifi-7260-7.ucode