新安装的 16.04 启动 3.13.0-96,尽管它尚未出现在任何已挂载的文件系统上

新安装的 16.04 启动 3.13.0-96,尽管它尚未出现在任何已挂载的文件系统上

从 mini.iso 全新安装 16.04。基本安装后,我使用 apt-get 安装 xorg、openbox、thunar 等,设置一些组,并重置 tty 字体。没有 DM。除了 Openbox 本身,没有其他 DE。我使用 LILO 是因为影响 grub2 的 OS-prober 错误对于安装了许多 OS 的系统来说简直是一场噩梦,包括一些可能存在也可能不存在的外部媒体。当我快要绝望的时候,我会回到 grub2,所以如果可以避免,我们就不要去那里。我也看到过关于 grub2 类似问题的讨论,但没有一个解决方案对我有用。这似乎是 16.04 中常见的一类类似问题的示例。 LILO 在 14.04 和 Win 操作系统(我想是 7 - 我只启动过一两次)的 3 个版本安装中运行良好,但在 16.04 的新安装中,它启动时在 tty7 中显示了一个令人愉快的大彩色字体,并在输出以下信息后挂起:“已开始更新 UTMP 有关系统运行级别更改的信息”有时会在此之前,有时会在此之后,会出现输出“[电子邮件保护]“其中 N 是 1 - 6 之间的整数(含 1 - 6)。我不确定 N 是否一致。有时此消息会重复出现,并带有其他 N 值,即 1-6 之间的其他整数。我认为这仅当我使用 cntrl-alt-FN 访问这些 tty 时才会出现。也许 16.04 正在尝试启动 x 会话,尽管我尚未告诉它这样做,但由于某种原因在此步骤失败。这是否可以解释它专注于 tty7,而 tty1 中似乎正在进行正常的非图形启动?无论如何,挂起后,我发现 tty1 中似乎出现了正常非图形启动过程的结束,据我所知,并出现登录提示。我可以正常登录。Startx 正常工作。起初它没有,但那是因为 ~/.Xauthority 归 root:root 所有,我已修复了这个问题。事实上,我检查过的所有东西似乎都工作正常,只是内核不对。我已经使用以下两个命令确认了这一点:uname -r & cat /proc/version 。最奇怪的是,3.13.0-96 并不存在于我期望此系统能够访问的任何地方。Mount 只显示已安装的 / 分区。Fstab 只告诉它安装该一个分区。我没有使用交换或启动分区。/boot 只包含您期望的 4 系列内核。所以除非它将其隐藏在文件系统的其他位置,否则它必须安装其他分区之一足够长的时间以至少读取 3.13.0-96 内核,但 mount 并未显示这一点。有一次我认为这是因为我有一些系统使用通用启动分区,而其他系统使用启动目录,并且这会混淆 LILO,具体而言是 lilo 命令,它读取 /etc/lilo.conf,并且显然会解析文件系统根目录中的符号链接(如 vmlinuz)并将其目标存储在某处。我假设这是因为我除了指向特定内核的条目外,还有一些条目指向符号链接,而指向符号链接的条目在内核更新后不起作用,直到我运行 lilo,然后它们才能工作。无论如何,我更改了它,更改了所有 fstab,将启动分区中的内容复制到需要它的系统上的启动目录中,删除了启动分区,运行了 lilo,3 个 14.04 上的一切都运行正常,但 16.04 仍然启动 14.04 内核。

这是我安装 16.04 的第 117 次了。如果没有人能解决这个问题,我可能会再试一次,在安装任何东西之前详细检查它的行为。但我准备放弃了。感谢您的阅读。任何想法都会受到赞赏。即使是不成熟的想法,因为我已经尝试过所有合理和不成熟的想法,并且正在研究原始想法。<|;-)

= = = = = = =

更新:

在一些地方,人们非常重视“分数”之类的东西,回答自己的问题会被视为作弊或粗鲁。所以,我不会这么做。这里的习俗是什么?不管怎样,我解决了这个问题。通常,阐明问题可以澄清你对它的思考,我想这就是发生的事情。那么,我应该告诉别人,以便人们从搜索引擎中找到这个答案吗?还是留给别人来得分?或者等 24 小时什么的?

答案1

问题是我误解了 lilo.conf 的语法。每节中指定的路径与作为 root 给出的文件系统的根目录无关。它们与包含安装和有效 lilo.conf 的文件系统的根目录有关。换句话说,无论哪个操作系统“负责”lilo。

具体来说,它们是运行命令“lilo”时有效的路径,无论挂载点是 fstab 中的某个东西还是任意的临时东西。因此,例如,如果您将另一个系统的根目录挂载为“/mnt/othersys”,然后运行命令“sudo lilo”,则其他系统的节的路径需要以“/mnt/othersys/”开头。如果下次更新内核时,您以不同的方式挂载它,例如挂载为“/mnt/ubuntu1604”,并且您未能更改 lilo.conf 以反映这一点,它将无法工作。如果路径恰好指向某处,就像我的情况一样,有一个与内核名称匹配的文件(就像我的情况一样,我将它们指向包含我启动到的操作系统的文件系统的根目录,因为我认为它们与指定的根目录相关,并运行“sudo lilo”,目标是/中的符号链接)它似乎会成功,但存储的启动信息将指向错误的内核和映像。

所有这些都是因为命令“lilo”会找到在命令运行时安装的文件系统中指定的映像和内核文件的物理位置(或在现代驱动器上传递的位置,这些驱动器拒绝让操作系统了解其内部工作),并存储这些物理位置(再次说明,不是真的,但无论如何,只有 HD 的内部机制才能转换)而不是路径/文件名位置。所以实际上,据我所知,lilo.conf 在 lilo 命令运行之间不执行任何操作。启动所需的信息存储在其他地方。Lilo.conf 只是 lilo 生成该信息的指南。

相关内容