我已经从内核 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)在用户空间运行。
内核空间可以(或不能)访问用户空间无法访问的各种功能。
内核模块总是在内核空间中执行,如果有缺陷或错误,则会导致系统冻结。
用户空间受到“保护”,有缺陷的模块或应用程序不太可能导致系统崩溃。