在服务器上当前的 Ubuntu 存储库中,“pool”部分中的主文件夹包括“main”、“multiverse”、“universe”等,此外还有“restriced”文件夹。在此“restricted”部分中,子文件夹“l”非常大,例如 20.04 focal 占用 78GB。由于我使用由“apt-mirror”创建的离线存储库,因此我想减少离线服务器上的磁盘空间要求(多个版本加起来)。
查看 20.04 版“restriced/l”文件夹中的文件,几乎所有文件的名称中都有“nvidia”,所以我认为它们与图形驱动程序有关。大约一半的文件夹是“签名”文件夹,而且相当小,但每个“签名”文件夹都有一个“模块”文件夹,这个文件夹相当大。所有文件夹都包含几乎相同的数据,标题变化显示了这些基本类型
pool/restriced/l/linux-restricted-modules
pool/restriced/l/linux-restricted-modules-aws
pool/restriced/l/linux-restricted-modules-azure
pool/restriced/l/linux-restricted-modules-hwe
pool/restriced/l/linux-restricted-modules-gcp
pool/restriced/l/linux-restricted-modules-oem
pool/restriced/l/linux-restricted-modules-oracle
有趣的是,在“restricted/n”下还找到了 nvidia 驱动程序。这似乎是原始的 nvidia 驱动程序。
我猜想这些模块指的是驱动程序的二进制内核模块,但我不知道它们何时以及为什么在“n”部分中的原始 nvidia 驱动程序文件旁边需要它们。多年来,我遇到的任何图形驱动程序问题都只涉及那些原始驱动程序。另一个猜测是,这些模块仅适用于云安装,正如名称“aws”、“azure”所暗示的那样。但我不知道“gcm”、“hwe”、“oem”和“oracle”应该指的是什么。我在 Google 上搜索了“linux-restricted-modules”,但主要得到的是文件列表,几乎没有任何解释。
所以我的问题是:restriced/l”部分中的那些文件的用途是什么?当我从离线存储库中删除它们时会有什么后果?
显然,我不会在离线系统中使用任何与云相关的服务。但是“linux-restricted-modules”建议通用使用,也许任何 nvidia 安装都需要它?
编辑:我将使用专有的 nvidia 驱动程序,因此这些模块与 nvidia 硬件的任何关系都是相关的。一般来说,我想了解这些软件包的用途以及我何时需要它们。我宁愿在删除之前了解我删除了什么。
答案1
对于“受限”软件源的官方描述是“设备专有驱动程序”。
这些软件包不是开源的,而是由硬件供应商根据受限(但免费)许可证发布的。这些许可证通常含糊其辞,称不得对软件进行逆向工程,只能将其用于该供应商的设备。
通常,除非您的设备具有特定的受限驱动程序,否则您的系统上不会有任何受限内容。因此,如果您有 nvidia 驱动程序,则您的系统中可能有一个需要它们的相应 nvidia 设备。
如果您手动安装来自 nvidia 的驱动程序,而不是使用 Ubuntu 受限 repo 中的(极其相似的)专有驱动程序,那么 repo 中的驱动程序基本上是多余的。
至于您列出的目录的用途——它们不是按类型或类别组织的。它们是按软件包名称前缀组织的。所有当前的 Linux 文件系统在包含数千个文件的目录中都存在性能问题,因此子目录树的划分纯粹是为了将文件分成更小的组,因此每个目录最多有数百个文件。如果您想知道特定软件包的用途,则必须查看其描述。除了“驱动程序”之外,几乎无法准确描述每个目录,因为每个目录中都有多个不相交的东西。