我安装 wifi dkms 模块,删除软件包,然后再次安装它,因为我无法 modprobe -r 它,重新安装后,我仍然不能,而 wifi 一直工作。需要明确的是,我已经卸载了 wifi 驱动程序,但 wifi 仍然可以使用。
运行lspci -k | grep Adapter
没有显示任何内容,也没有无线而不是适配器。
答案1
这其实和不同的文件删除语义有关。
在例如Windows 系统上,您通常无法删除正在使用的文件。但在类 Unix 系统上,文件系统通常遵循 POSIX 标准文件系统语义。这意味着当您删除正在使用的文件时:
- 删除命令必须成功返回
- 文件名将立即从目录中删除,如有必要,可以立即替换为同名的新文件
- 文件的实际内容将保留在磁盘上,直到使用该文件的任何内容实际上停止使用它;此时,文件系统将自动完成删除操作。
- 例外:如果该文件有多个硬链接(=同一个文件实际上有超过一个文件名),然后只有单个硬链接(=那个特定的文件名) 文件将被删除。实际文件只会在以下时间后被删除全部硬链接被删除和没有任何东西再使用该文件。
对于习惯了类似 Windows 文件删除语义的人来说,这可能是令人兴奋的。它实际上使更新当时可能正在使用或未使用的软件之类的事情变得更加容易,但如果您没有意识到,它也可能会导致一些意外。
例如,如果由于某个程序将越来越多的数据写入一个大文件而导致磁盘空间不足,则删除该文件不会为您恢复任何磁盘空间,直到该程序实际关闭该文件(或停止)。相反,在这种情况下尽快再次释放磁盘空间而不终止程序的正确方法是截短将文件长度为零而不删除它。
背景:在 POSIX 风格的文件系统上,特定文件的主要的、保证唯一的标识符是不是文件名,但是索引节点号文件的。您可以将其视为该文件的一种社会保障 ID 号。目录可以被认为是一种特殊类型的文件,它将文件名与 inode 编号相关联,以方便无法像计算机那样处理数字的人类。
从计算机的角度来看,任何硬链接都只是一个普通的旧目录条目:每个文件通常至少有一个硬链接。
从人类的角度来看:
- 具有两个(或更多)硬链接的文件同时具有两个(或更多)名称。这些名称可以位于不同的目录中,但必须位于同一文件系统中,因为只有在单个文件系统中才能保证 inode 编号的唯一性。
- 仅具有一个硬链接的文件是常规文件,并且是正常情况。
- 具有零硬链接的文件只能由那些已经打开该文件的程序访问,并且一旦没有人再打开该文件,文件系统驱动程序就会删除其数据。
另一方面,Linux 内核模块的加载和卸载遵循更熟悉的语义“您无法卸载当前正在使用的模块”。
与 POSIX 标准文件系统语义一起,这意味着如果不先关闭 WiFi 适配器,则无法卸载模块的当前版本。但是您可以用新版本替换磁盘上的模块文件,并且在下次重新启动时,将自动使用新版本。 (确保在重新启动之前重新生成 initramfs 将确保旧版本的模块不会保留在 initramfs 文件中。)