我目前正在尝试为专有设备重建内核。为此,我需要为设备生成内核配置。虽然我可以通过反复试验来做到这一点,但最好看看我是否可以从正在运行的主机中提取配置。
话虽如此,正在运行的内核不是用编译的CONFIG_IKCONFIG(因此也不CONFIG_IKCONFIG_PROC是)。这意味着没有/proc/config.gz提取。
此外,他们也没有费心将配置打包/boot。因此,通常存储内核配置的两个常见位置是不走运的。
大多数东西都是静态编译到这个内核中的:
# cat /proc/modules
linux_user_bde 12327 0 - Live 0xf8536000 (PO)
linux_kernel_bde 29225 1 linux_user_bde, Live 0xf8524000 (PO)
pciDrv 1448 0 - Live 0xf8510000 (O)
iTCO_wdt 4456 0 - Live 0xf83fb000
iTCO_vendor_support 2003 1 iTCO_wdt, Live 0xf83f7000
i2c_dev 5443 0 - Live 0xf83f2000
i2c_i801 9421 0 - Live 0xf83eb000
i2c_core 20859 3 i2cscan,i2c_dev,i2c_i801, Live 0xf83e0000
igb 148294 0 - Live 0xf83ae000 (O)
dca 4665 0 - Live 0xf804c000
# …Run Code Online (Sandbox Code Playgroud) 为了解决一个问题,我正在查看我的内核配置设置:CONFIG_SECCOMP,CONFIG_HAVE_ARCH_SECCOMP_FILTER和CONFIG_SECCOMP_FILTER.
第一个在内核的配置文件中显示为:CONFIG_SECCOMP=y但其他两个根本不存在。这让我想知道如何解释..
内核配置中缺少的设置是否应该被解释为<setting>=n或被defaults使用?
我想在我的系统上使用 LZMA 压缩的内核模块。不幸的是,Canoncial 在内核和用户空间工具中都禁用了该功能。这是我到目前为止所做的:
使用以下命令编译并安装当前的14.04.05-LTS 内核(v4.4.19):
CONFIG_MODULE_COMPRESS=y
CONFIG_MODULE_COMPRESS_XZ=y
Run Code Online (Sandbox Code Playgroud)
安装后,我现在可以.ko.xz在/lib/modules/4.4.19-37.56+/kernel/.
将kmod_22包从 Xenial (16.04) 向后移植到配置了该--with-xz选项的Trusty (14.04) 。这似乎也有效。
运行update-initrams -u -k 4.4.19-37.56+。
到目前为止有效的方法:
对未压缩模块的任意操作(如 DKMS 构建的模块):
$ modinfo nvidia_370
filename: /lib/modules/4.4.19-37.56+/updates/dkms/nvidia_370.ko
[…]
Run Code Online (Sandbox Code Playgroud)按完整路径显示压缩模块:
modinfo /lib/modules/4.4.19-37.56+/kernel/fs/jfs/jfs.ko.xz
Run Code Online (Sandbox Code Playgroud)通过完整路径加载没有(缺少)依赖项的压缩模块:
insmod /lib/modules/4.4.19-37.56+/kernel/fs/jfs/jfs.ko.xz
Run Code Online (Sandbox Code Playgroud)卸载这样的模块:
rmmod jfs
Run Code Online (Sandbox Code Playgroud)什么不起作用:
卸载与modprobe -r。
任何其他只有包名但没有路径的操作,例如:
# insmod jfs
insmod: ERROR: could not load module jfs: No such file or directory
# modprobe jfs
modprobe: FATAL: Module jfs not found …Run Code Online (Sandbox Code Playgroud)我试图用几个 Nvidia GTX 980 卡更新系统的驱动程序,但不知何故我搞砸了,现在当我用 Nvidia 运行安装程序时遇到了这个错误:
ERROR: An NVIDIA kernel module 'nvidia-uvm' appears to already be loaded in your kernel. This may be because it is in use (for example, by the X server), but may also happen if your kernel was configured
without support for module unloading. Please be sure you have exited X before attempting to upgrade your driver. If you have exited X, know that your kernel supports module unloading, and still
receive this message, then …Run Code Online (Sandbox Code Playgroud) 我对 Linux 很感兴趣,并且已经研究了一段时间。我刚刚学会了从源代码编译 Linux 内核,并使用 Grub 引导它,这会让您获得内核的 shell。
现在,一旦内核加载到内存中,它就会搜索init加载它。我的议程是调出一个外壳(普通用户可以使用 - 类似bash)。
那么,我怎样才能把它带进来?
我是否需要配置 init 来加载 bash shell 或者我可以做些什么?
我正在构建我自己的发行版,我只需要发行版有一个 shell (bash) 而没有别的。
我想将 amdgpu 驱动程序列入黑名单。我打开/etc/modprobe.d/blacklist.conf并添加了以下行:
blacklist amdgpu
Run Code Online (Sandbox Code Playgroud)
然后我重新启动并运行lsmod | grep amdgpu:
$ lsmod | grep amdgpu
amdgpu 1564672 23
i2c_algo_bit 16384 1 amdgpu
ttm 98304 1 amdgpu
drm_kms_helper 151552 1 amdgpu
drm 352256 11 amdgpu,ttm,drm_kms_helper
Run Code Online (Sandbox Code Playgroud)
为什么模块还在加载?
我的桌面运行的是 Kubuntu 17.04,我有一台 Radeon R9 270X。
当我没有那么多驱动程序时,我想知道为什么modules.dep中有这么多条目?我有一个运行 Ubuntu 16.04 的普通 Dell Latitude E7450,我的 modules.dep 列出了数百个依赖项。真的有那么多必要吗?所有这些都不能是驱动程序,那么作为模块实现并由 modules.dep 列出的还有什么?
我一直在尝试获得一个 FreeBSD 机器(运行 FreeNAS)来控制它的粉丝。即使系统温度很低,它也只想高速运行它们。lm-sensors 包可以在 Linux 上执行此操作,但在 FreeBSD 上不可用。
我在这里找到了这个类似的问题,但没有回应。
是否有我可以加载的内核模块来在 FreeBSD 上执行此操作?
我试图在 Fedora 28 上访问 SD 卡,但没有任何成功。系统信息如下:
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: Fedora
Description: Fedora release 28 (Twenty Eight)
Release: 28
Codename: TwentyEight
Run Code Online (Sandbox Code Playgroud)
我无法使用两个不同的读卡器访问不同的 SD 卡。尽管在 macOS 和 Windows 上都可以访问,但它们都没有显示在 Nautilus 文件浏览器、桌面或其他明显的地方。
系统根据lsusb输出识别读卡器:
$ lsusb -v
# some other USB devices
Bus 001 Device 005: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x058f Alcor Micro Corp.
idProduct 0x6362 …Run Code Online (Sandbox Code Playgroud) 在这篇文章中,有一些关于为什么在“used by”列中lsmod显示-2的解释。这个想法是CONFIG_MODULE_UNLOAD没有设置内核配置选项。
但是,如果在我当前的内核中设置时仅lsmod显示-1一个特定模块CONFIG_MODULE_UNLOAD怎么办?如何调试这个混乱?
kernel-modules ×10
linux-kernel ×4
ubuntu ×4
linux ×3
drivers ×2
automounting ×1
compression ×1
fedora ×1
freebsd ×1
kernel ×1
mount ×1
nvidia ×1
sd-card ×1