fstab 中没有条目,但分区在启动时挂载

fstab 中没有条目,但分区在启动时挂载

我在嵌入式设备上使用 ubuntu(带有 4.4.113 内核的 ubuntu 16.04.4 LTS),并且我在 fstab 中只看到一个条目

/dev/mmcblk0p7  /   ext4    errors=remount-ro,noatime,nodiratime    0   1

当我检查使用“mount”命令安装的分区时,我看到安装了很多分区。现在以某种方式自动安装的相关分区是

/dev/mmcblk0p5 on /lib/modules type ext4 (ro,relatime,data=ordered)

我无法弄清楚当 /etc/fstab 中没有条目时它是如何安装的?

答案1

Ubuntu 16.04 使用systemd它可以为您挂载文件系统。 Ubuntu实际上不再采用/etc/fstab传统的方式,在系统启动时systemd会检查每一行/etc/fstab并为每个条目创建一个mount systemd服务。您应该能够运行来查看正在管理的systemctl status *.mount每个安装的状态。systemd

答案2

所以你有 Ubuntu,但有一些自定义启动脚本。

我猜想挂载很可能是.service/etc/systemd/system/. (根据其他评论,听起来您没有.mount相应的文件 - 也就是说,您没有文件lib-modules.mount)。

但安装可能会从许多其他地方开始。它也可能位于.service中的一个文件中/lib/systemd/system,其中包含许多您必须查看的文件。它们可能mount通过运行单独的脚本来间接运行,因此不能保证快速grep mount *.service找到您要查找的内容。


或者您的供应商可能已记录了对其嵌入式“Ubuntu”映像的自定义修改。

如果没有,有一组方法可以搜索不是来自 Ubuntu 的已修改/创建的文件。

1..deb没有 apt 源安装的软件包

要搜索没有源直接安装的 .deb 软件包,请运行aptitude search ?obsolete。 (这还将显示软件包是否是从 apt 源安装的,但不再可以从 apt 源获得。这些软件包将被视为“过时”)。

--https://raphaelhertzog.com/2011/02/07/debian-cleanup-tip-2-get-rid-of-obsolete-packages/

如果您发现一些可疑的包名称,那么您可以列出它们的文件。例如,对于已安装的软件包 foo,请运行dpkg-query -L foo)。反之亦然,如果您发现可疑文件并想要调查拥有该文件的包,请运行dpkg-query -s /path/to/file.

2. 从不称自己为“Ubuntu”的 apt 源安装的软件包

要搜索从已启用的 apt 源安装的软件包(该源标榜自己不是 Ubuntu),您可以运行aptitude search '?narrow(?installed, !?origin(Ubuntu))!?obsolete'.

您还可以通过首先查看源列表来检查警告,使用apt-cache policy.源的来源显示为o=Ubuntu

--https://raphaelhertzog.com/2011/02/14/debian-cleanup-tip-3-get-rid-of-third-party-packages/

作为比较,在 16.04 上,默认的官方来源可能如下所示:

###### Ubuntu Main Repos
deb http://uk.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse 

###### Ubuntu Update Repos
deb http://uk.archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse 
deb http://uk.archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse

(很难找到合适的文档,所以我从流行的实用程序中获取了它们,https://repogen.simplylinux.ch)。

或者反过来:要搜索与可疑包 foo 关联的源,请运行apt-cache policy foo

3.已安装的包文件被(不当)修改

要检查已安装软件包中文件的修改情况(有充分的理由不修改这些文件,但这是可能的),请安装debsums并运行debsums -c.

--https://raphaelhertzog.com/2011/02/21/debian-cleanup-tip-4-find-broken-packages-and-reinstall-them/

4. 未作为包的一部分安装的文件

可以编写脚本来搜索由 apt 包管理之外的其他程序创建的文件。这几乎肯定会出现一些误报。我为此目的查找了一个示例脚本:

(
  export LC_ALL=C
  comm -23 <(find /etc /lib /bin /sbin /usr -type f | sort) \
           <(sort -u /var/lib/dpkg/info/*.list)
)

但是,如果噪音太大,也许最好尝试该cruft命令,该命令显然具有相同的功能,但知道一些可以安全忽略的文件。 cruft -d "/etc /lib /bin /sbin /usr" --ignore "/usr/local"

--https://raphaelhertzog.com/2011/02/28/debian-cleanup-tip-5-identify-cruft-that-c​​an-be-removed-from-your-debian-system/

此处搜索的目录列表有点需要判断。希望 /etc、/usr 和 /lib 应该涵盖大多数 Ubuntu 系统上的引导脚本,例如任何 systemd 配置或 sysvinit 脚本。请注意,就您的情况而言,您希望找到一个非常早期的引导脚本,排除了一些可能的位置。的安装/lib/modules需要很早就完成,因此可以从中加载内核模块。udev启动前需要安装。

(另一方面,这增加了 initrd 中存在一些可怕的 hack 的可能性。所以我想要留意 initrd 生成器的修改或替换 - 我认为它被称为initramfs-tools)。


非常感谢 Raphaël Hertzog,他撰写了本答案中链接的非常有用的一系列博客文章。

相关内容