我正在 LAN 上设置一个新的 NFS 客户端,该 LAN 有一个运行 nfs4 的工作 NFS 服务器(Ubuntu 12.04)。其他客户端都按预期工作。
在这个新客户端上,我在 Acer Chromebook 上运行带有内核 3.4.0 (Kubuntu 12.04) 的 ChrUbuntu。我安装了 nfs-common。但是,mount 命令返回错误mount.nfs4 no such device。并# modprobe nfs返回Fatal: module nfs not found。谷歌没有为我提供任何解决方案。
挂载命令如下:
sudo mount -t nfs4 -o _netdev,noatime,auto,rw myserver:/home/user/shared /home/user/mountpoint
Run Code Online (Sandbox Code Playgroud)
modprobe 命令是:
sudo modprobe nfs
Run Code Online (Sandbox Code Playgroud)
而 nfs-common 是此版本存储库中的最新版本:1:1.2.5-3ubuntu3.1
我经常从 live usb/CD 安装 Linux 发行版。为此,我希望能够在没有任何互联网连接的情况下设置我的无线网络。我有一个 Broadcom 芯片组:
$ lspci -k
04:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n
Run Code Online (Sandbox Code Playgroud)
我下载了bcmwl-kernel-source软件包及其依赖项 ( dkms)。我可以离线安装它们并使我的 wifi 正常工作。但是我想了解它是如何工作的。
.ko模块文件夹中有一个文件列表:
$ ls /lib/modules/`uname -r`/kernel/net/wireless/
cfg80211.ko lib80211_crypt_tkip.ko lib80211.ko
lib80211_crypt_ccmp.ko lib80211_crypt_wep.ko
Run Code Online (Sandbox Code Playgroud)
我备份了它们并删除了它们
$ rm /lib/modules/`uname -r`/kernel/net/wireless/*.ko
$ reboot
Run Code Online (Sandbox Code Playgroud)
重新启动后,wifi不再工作。这些.ko文件似乎是完成wl工作的重要文件。
我尝试重新加载,wl但它不再被识别:
$ modprobe wl
modprobe: ERROR: ../libkmod/libkmod-module.c:180 kmod_module_parse_depline() ctx=0x7f9f5375d010 path=/lib/modules/3.13.0-35-generic/kernel/net/wireless/lib80211.ko error=No such file or directory
modprobe: ERROR: ../libkmod/libkmod-module.c:180 kmod_module_parse_depline() ctx=0x7f9f5375d010 path=/lib/modules/3.13.0-35-generic/kernel/net/wireless/lib80211.ko error=No such file or directory
modprobe: ERROR: could …Run Code Online (Sandbox Code Playgroud) 有人可以告诉我为什么下面的命令
modprobe -n -v dccp_ipv4
Run Code Online (Sandbox Code Playgroud)
返回两个结果 ?
install /bin/true
install /bin/true
Run Code Online (Sandbox Code Playgroud)
为什么会这样
modprobe -n -v dccp_ipv6
Run Code Online (Sandbox Code Playgroud)
返回三?
install /bin/true
install /bin/true
install /bin/true
Run Code Online (Sandbox Code Playgroud)
我使用的是 CentOS Linux 版本 7.3.1611(核心),在 /etc/modprobe.d 中我有许多文件,其中有一个来自 CIS 的建议的文件。该文件包含(除其他外):
install dccp_ipv4 /bin/true
install dccp_ipv6 /bin/true
Run Code Online (Sandbox Code Playgroud)
以上两个是 /etc/modprobe.d 中的文件中唯一出现的情况
此外,一个
modprobe -n -v udf
Run Code Online (Sandbox Code Playgroud)
也返回两行:
insmod /lib/modules/3.10.0-514.21.2.el7.x86_64/kernel/lib/crc-itu-t.ko
install /bin/true
Run Code Online (Sandbox Code Playgroud)
/etc/modprobe.d 中的 CIS 文件内容为:
install udf /bin/true
Run Code Online (Sandbox Code Playgroud)
那么,为什么要使用 insmod 行呢?
我问这个问题是因为漏洞扫描器只需要一行输出(在本例中为 install /bin/true)
我们知道 sysctl 命令可以通过以下方式更改内核参数:
# sysctl -w kernel.domainname="example.com"
Run Code Online (Sandbox Code Playgroud)
或直接编辑/proc/sys目录中的文件。对于持久更改,必须将参数写入/etc/sysctl.d/<moduleName>.conf文件,如下所示:
# echo kernel.domainname="example.com" > /etc/sysctl.d/domainname.conf
Run Code Online (Sandbox Code Playgroud)
但是,我们也可以使用 modprobe 命令更改内核参数:
# modprobe kernel domainname="example.com"
Run Code Online (Sandbox Code Playgroud)
然后是/etc/modprobe.d目录中的 modprobe.conf 文件,它存在于多个位置:/etc/modprobe.d和/usr/lib/modprobe.d. 它包含多个.conf文件,可以在模块的相应 conf 文件中提供选项,如下所示:
options kernel domainname="example.com"
Run Code Online (Sandbox Code Playgroud)
那么,每种方法之间有什么区别呢?在什么具体情况下应该使用哪种方法?
我使用的是 Ubuntu 18.04。我正在尝试在启动时加载模块;有问题的模块是 iTCO_wdt。关于将内核模块列入黑名单有很多问题,但我正在尝试将其中一个列入白名单。
以下是我尝试在启动时加载模块所遵循的步骤:
iTCO_wdt到 /etc/modules (符号链接到 /etc/modules-load.d/modules.conf)blacklist iTCO_wdt/etc/modprobe.d/blacklist-watchdog.conf 中的行我认为这已经足够了,但 syslog 仍然显示该模块已被列入黑名单:
systemd-modules-load[331]: Module 'iTCO_wdt' is blacklisted
Run Code Online (Sandbox Code Playgroud)
经过一番调查,我发现该模块也在 /lib/modprobe.d 中的几个维护者安装的黑名单文件中被列入黑名单:
systemd-modules-load[331]: Module 'iTCO_wdt' is blacklisted
Run Code Online (Sandbox Code Playgroud)
我发现每个文件确实影响了 modprobe 行为,这令人惊讶,因为当 linux_4.15.0.23-generic 是当前内核时,我不希望 linux_4.15.0.20-generic.conf 文件影响机器的行为。
注释掉blacklist iTCO_wdt每个文件中的行并重新启动后,模块会自动加载,这是所需的行为。
因此,正如我所见,有几种方法可以使模块加载,即使它被 /lib/modprobe.d 文件列入黑名单:
blacklist iTCO_wdt每个文件中的行问题是未来的更新可能会安装新的 /lib/modprobe.d 黑名单文件,这可能会将 iTCO_wdt 重新列入黑名单。考虑到这一点,我最好的选择似乎是最后一个,尽管我真的不喜欢它,因为它依赖于我自己的脚本而不是内置的模块加载系统。
考虑到我不想在每次内核更新后编辑 /lib/modprobe.d 文件,在模块加载系统中将 iTCO_wdt 模块永久列入白名单的最佳方法是什么?
我正在尝试在 Arch Linux 机器上设置 ADSL 连接。我阅读了Internet Access上的 Arch wiki 文章,但我仍然感到困惑——如何将我的网卡添加到modprobe文件中?
我这里有一个 Ubuntu 版本,它是从 USB 启动的 Live 版本。我不想将它安装在硬盘上,因为仅在 Ubuntu 上测试一个小东西就太多了。
所以我启动了 Ubuntu 并使用以下命令为 GPU(Tesla C2050)安装了 nvidia 驱动程序(来自 nvidia):
sudo apt-add-repository ppa:xorg-edgers/ppa -y
sudo apg-get update
sudo apt-get install nvidia-346
Run Code Online (Sandbox Code Playgroud)
由于 Ubuntu 是作为 Live-version 启动的,一开始,nouveau驱动程序被激活。我想停用它(也许通过rmmod或类似的东西),所以只有nvidia驱动程序被激活,GPU 正在使用nvidia驱动程序。
怎么可能?我可以在不重新启动整个系统的情况下做什么(因为所有安装/删除/更改的软件包都将消失)?
我可以通过 SSH 访问 Ubuntu。
我读到我可能有助于输入命令,sudo update-initramfs -u但该命令生成了输出update-initramfs is disabled since running on read-only media
sudo modprobe vboxdrv
modprobe: FATAL: Module vboxdrv not found in directory /lib/modules/4.10.0-35-generic
Run Code Online (Sandbox Code Playgroud)
重新安装了 dkms 但我仍然得到
未安装内核驱动程序 (rc=-1908)
VirtualBox Linux 内核驱动程序 (vboxdrv) 未加载或 /dev/vboxdrv 存在权限问题。请重新安装 virtualbox-dkms 包并通过执行加载内核模块
'modprobe vboxdrv'
冉 find /lib/modules/$(uname -r) -name vboxdrv.ko
输出:
beastly@Beastly:~$ find /lib/modules/$(uname -r) -name vboxdrv.ko
beastly@Beastly:~$
Run Code Online (Sandbox Code Playgroud)
冉
beastly@Beastly:~$ sudo apt-cache policy virtualbox
Run Code Online (Sandbox Code Playgroud)
输出:
virtualbox:
Installed: 5.1.30-dfsg-1
Candidate: 5.1.30-dfsg-1
Version table:
*** 5.1.30-dfsg-1 500
500 http://us.archive.ubuntu.com/ubuntu artful/multiverse amd64 Packages
100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)
冉
beastly@Beastly:~$ dkms status
Run Code Online (Sandbox Code Playgroud)
输出:
virtualbox, 5.1.30, 4.13.0-16-generic, x86_64: installed
Run Code Online (Sandbox Code Playgroud)
冉
beastly@Beastly:~$ (uname -r) …Run Code Online (Sandbox Code Playgroud) 我最近买了一个新键盘,它很便宜,而且是一个不知名的品牌,但我并不特别担心。我发现在linux上用这个键盘按shift、super、left-ctrl或left-alt没有什么区别,它总是把它当作shift。我做了一些研究,结果发现问题出在键盘使用的芯片组上。我读到解决问题的唯一方法是为键盘编写一个驱动程序,但是,在处理它时,我发现运行sudo modprobe usbmon然后以 sudo 打开wireshark,意外地解决了问题...有人知道为什么这会发生吗?是否有更简单的方法来触发此更改?
更具体:
我需要在 Linux 上创建第二个单独的虚拟接口。
我选择dummy。并执行以下步骤:
$ cat /etc/modules-load.d/dummy.conf
# Load dummy.ko at boot
Run Code Online (Sandbox Code Playgroud)
假的
$ cat /etc/sysconfig/network-scripts/ifcfg-ethdummy1
NAME=ethdummy1
DEVICE=ethdummy1
MACADDR=00:22:22:ff:ff:ff
IPADDR=10.10.10.1
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=no
Run Code Online (Sandbox Code Playgroud)
似乎一切正常。但在网上我看到人们也这样做:
$ cat /etc/modprobe.d/dummy.conf
install dummy /sbin/modprobe --ignore-install dummy; /sbin/ip link set name ethdummy1 dev dummy0
Run Code Online (Sandbox Code Playgroud)
这条线有什么意义?谢谢。