启动缓慢 18.04 (init ramdisk)

启动缓慢 18.04 (init ramdisk)

我的系统认为它正在快速启动。journlctl -k 报告:

-- 日志开始于 2018-10-24 星期三 20:44:45 CDT,结束于 2018-10-26 星期五 21:52:05 CDT。--
10 月 26 日 20:53:11 Neurosprite 内核:Linux 版本 4.15.0-38-generic (buildd@lcy01-amd64-023) (gcc 版本 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #41-Ubuntu SMP 10 月 10 日星期三 10:59
10月26日 20:53:11 Neurosprite 内核:命令行:BOOT_IMAGE=/vmlinuz-4.15.0-38-generic root=UUID=d22f3d07-d029-4bb9-8157-44c0a42bb7d5 ro
10月26日 20:53:11 Neurosprite 内核:KERNEL 支持的 CPU:
10月26日 20:53:11 Neurosprite 内核:Intel GenuineIntel
10月26日 20:53:11 Neurosprite 内核:AMD AuthenticAMD
10月26日 20:53:11 Neurosprite 内核:Centaur CentaurHauls
10 月 26 日 20:53:11 Neurosprite 内核:x86/fpu:x87 FPU 将使用 FXSAVE
10月26日 20:53:11 Neurosprite 内核:e820:BIOS 提供的物理 RAM 映射:
10月26日 20:53:11 Neurosprite 内核:BIOS-e820:[mem 0x0000000000000000-0x000000000009f7ff] 可用
10月26日 20:53:11 Neurosprite 内核:BIOS-e820:[mem 0x000000000009f800-0x000000000009ffff] 保留
10月26日 20:53:11 Neurosprite 内核:BIOS-e820:[mem 0x00000000000f0000-0x00000000000fffff] 保留
10月26日 20:53:11 Neurosprite 内核:BIOS-e820:[mem 0x0000000000100000-0x00000000cfdeffff] 可用
10月26日 20:53:11 Neurosprite 内核:BIOS-e820:[mem 0x00000000cfdf0000-0x00000000cfdf0fff] ACPI NVS
10 月 26 日 20:53:11 Neurosprite 内核:BIOS-e820:[mem 0x00000000cfdf1000-0x00000000cfdfffff] ACPI 数据
10月26日 20:53:11 Neurosprite 内核:BIOS-e820:[mem 0x00000000cfe00000-0x00000000cfefffff] 保留
10 月 26 日 20:53:14 Neurosprite 内核:IPv6:ADDRCONF(NETDEV_UP):enp3s0:链接尚未准备好
10月26日 20:53:16 Neurosprite 内核:r8169 0000:03:00.0 enp3s0:链接
10 月 26 日 20:53:16 Neurosprite 内核:IPv6:ADDRCONF(NETDEV_CHANGE):enp3s0:链接已准备就绪
10 月 26 日 20:53:18 Neurosprite 内核:usblp0:已删除
10月26日 20:53:18 Neurosprite 内核:usblp 8-2:1.0:usblp0:USB 双向打印机 dev 2 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0028
10 月 26 日 20:53:19 Neurosprite 内核:资源健全性检查:请求 [mem 0x000c0000-0x000fffff],跨越超过 PCI 总线 0000:00 [mem 0x000c0000-0x000dffff windo
10 月 26 日 20:53:19 Neurosprite 内核:调用者 os_map_kernel_space.part.7+0xda/0x120 [nvidia] 映射多个 BAR
10 月 26 日 20:53:25 Neurosprite 内核:rfkill:输入处理程序已禁用

也就是 12 秒。查看 systemd-analyze blame 我发现:

          7.102 秒[电子邮件保护]
          2.349s NetworkManager-等待-在线.服务
          1.594s dev-sdb5.device
           732ms fwupd.服务
           709ms snapd.服务
           558ms lvm2-pvscan@8:50.服务
           488ms udisks2.service
           316ms systemd-journal-flush.service
           304ms openvpnas.service
           294ms dev-loop0.device
           283ms dev-loop2.device
           271ms dev-loop1.device
           266ms dev-loop8.device
           264ms systemd-logind.service
           260ms dev-loop6.device
           259ms dev-loop3.device
           257ms dev-loop9.device
           250ms dev-loop13.device
           246ms dev-loop4.device
           237ms dev-loop5.device
           236ms dev-loop10.device
           234ms NetworkManager.service
           230ms dev-loop11.device
           229ms dev-loop7.device
           226ms dev-loop12.device
           177ms dev-mapper-centos\x2dswap.swap
           161ms systemd-udevd.service
           157ms snap-gnome\x2dsystem\x2dmonitor-57.mount
           156ms snap-core-5662.mount
           147ms systemd-resolved.service
           146ms networkd-dispatcher.service

与 12 秒一致。不过,这一切开始之前需要超过 5 分钟的时间!

从 /etc/default/grub 中删除“splash”和“quiet”后,我在紫色背景上看到 2 行

正在加载 linux-4.15.0-38-generic...
正在加载初始 ramdisk...

五分钟后它就真正启动了。

系统是全新安装在 SSD 上的。一旦运行,它运行得很快。直到问题解决后,启动日志才开始。

这与其他人列出的问题不同 - 它不会挂起,而且实际启动时会很快。它只是 5 分钟内无法启动。有人知道为什么吗?

谢谢,迈克

答案1

经过进一步挖掘,我发现了这篇文章:https://unix.stackexchange.com/questions/89923/how-does-linux-load-the-initrd-image因为 BIOS 一次只能看到 1 MB,而 initrd 是 66 MB,所以它需要很长时间才能读取一个块,切换到 32 位或 64 位模式,移动它并切换回 16 位模式以读取下一个块。12.04 initrd 只有 14 MB,所以它看起来更快。

是时候换一台使用 UEFI 的新电脑了,这样它就可以自动看到更大的磁盘和内存。现在,我只能等待——没有办法让它更快(除了重写 BIOS!!)至少我对我的电脑的工作原理有了更多的了解。

答案2

我的电脑上也出现过这个问题。从 BIOS 传统模式 (CSM) 切换到 UEFI 解决了这个问题。这很危险,所以如果你能忍受加载时间的话,我不建议你这么做。

我认为现在大多数计算机都支持 UEFI(至少从 Windows 8 时代或更新版本开始的所有计算机都支持 UEFI),但您可能以传统模式安装了 Linux。

步骤如下:

最后警告:如果您不理解所有的说明,请不要尝试此操作,如果您中途失败,PC将会损坏并且无法使用。

  1. 准备一个 ubuntu USB 棒,并对硬盘进行完整备份。
  2. 启动 PC,进入主板设置,禁用 CSM 并启用 UEFI 模式(实际上,我的设置是将“安全启动”从“禁用”更改为“设置”模式)。使用此设置,grub 和 linux 将无法启动(但此时仍然可以恢复)。
  3. 插入 USB 驱动器并启动 ubuntu。(不要选择安装 ubuntu。)
  4. 在实时 USB Ubuntu 会话中(注意:您需要互联网才能工作):
    • 此时你应该检查 ubuntu 是否确实在 UEFI 模式下启动。一种检查方法是ls /sys/firmware/efi。如果该文件夹存在,则表示你处于 UEFI 模式。如果不存在,请重新启动并检查主板设置。
    • 在分区编辑器中,缩小第一个分区,使剩余空间为 200MB,然后将其向右移动 200MB。这需要花费大量时间,因为它实际上只会移动分区的所有字节。这也相当危险,因为在此过程开始和结束之间,文件系统很可能处于损坏状态。
    • 在同一个分区编辑器中,在卷的开头创建一个分区,并使用以下设置:
      • 文件系统是FAT32
      • 大小为200MB
      • 启动标志已启用
    • 安装并运行 boot-repair ( sudo add-apt-repository ppa:yannubuntu/boot-repair;sudo apt-get update;sudo apt-get install -y boot-repair;boot-repair)。按照说明操作。

4-重新启动,移除 USB 记忆棒。

相关内容