两个文件之间的差异

两个文件之间的差异

我已经从内核 PPA启动 PC 并安装了一个最小 GUI。之后,我检查了正在运行的内容并注意到驱动程序nouveau正在加载,但是当我安装 GUI 时,我并没有明确选择安装 Ubuntu 软件包xserver-xorg-video-nouveau

我曾经modinfo检查过正在加载的模块,这是输出: /lib/modules/4.15.0-041500-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko

我搜索了 Ubuntu 提供的软件包的内容Ubuntu 软件包目录并列出了这些文件:

/usr/lib/xorg/modules/drivers/nouveau_drv.so
/usr/share/bug/xserver-xorg-video-nouveau/script
/usr/share/doc/xserver-xorg-video-nouveau/NEWS.Debian.gz
/usr/share/doc/xserver-xorg-video-nouveau/README.Debian
/usr/share/doc/xserver-xorg-video-nouveau/changelog.Debian.gz
/usr/share/doc/xserver-xorg-video-nouveau/copyright
/usr/share/man/man4/nouveau.4.gz

尽管我显然正在使用该驱动程序,但我的系统中却没有此文件:/usr/lib/xorg/modules/drivers/nouveau_drv.so

那么这两个文件之间有什么区别呢?

答案1

两个文件之间的差异

差异存在于多个层面。对于这个有限的答案,我们描述了尺寸差异和应用差异。

尺寸差异

$ ll /usr/lib/xorg/modules/drivers/nouveau_drv.so
-rw-r--r-- 1 root root 221200 Jul  6  2017 /usr/lib/xorg/modules/drivers/nouveau_drv.so
$ ll /lib/modules/4.14.20-041420-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko
-rw-r--r-- 1 root root 3646510 Feb 16 15:53 /lib/modules/4.14.20-041420-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko

内核 Nouveau 模块比 Xorg 驱动程序大 16 倍。这意味着内核模块可以做更多的事情。

附加 Xorg 驱动程序某些系统(尤其是笔记本电脑)会有:

在 Debian 中,X.Org 服务器的 2D 图形驱动程序是单独打包的,名为 xserver-xorg-video-*。[7] 安装后,2D 图形驱动程序文件位于 /usr/lib/xorg/modules/drivers/ 下。软件包 xserver-xorg-video-nouveau 安装 nouveau_drv.so,大小为 215 KiB,专有 Nvidia GeForce 驱动程序安装一个名为 nvidia_drv.so 的 8 MiB 大小的文件……

nvidia_drv.so的37倍nouveau_drv.so

应用程序差异

内核 Nouveau 模块是一个.ko文件,Xorg 驱动程序是一种.drv.so文件类型。这个问题询问这两种文件类型有什么区别。最好的答案(在我看来)是:

用外行人的话来说:

内核模块(ko)在内核空间运行,用户模块(so)在用户空间运行。

内核空间可以(或不能)访问用户空间无法访问的各种功能。

内核模块总是在内核空间中执行,如果有缺陷或错误,则会导致系统冻结。

用户空间受到“保护”,有缺陷的模块或应用程序不太可能导致系统崩溃。

相关内容