我的系统认为它正在快速启动。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将会损坏并且无法使用。
- 准备一个 ubuntu USB 棒,并对硬盘进行完整备份。
- 启动 PC,进入主板设置,禁用 CSM 并启用 UEFI 模式(实际上,我的设置是将“安全启动”从“禁用”更改为“设置”模式)。使用此设置,grub 和 linux 将无法启动(但此时仍然可以恢复)。
- 插入 USB 驱动器并启动 ubuntu。(不要选择安装 ubuntu。)
- 在实时 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
)。按照说明操作。
- 此时你应该检查 ubuntu 是否确实在 UEFI 模式下启动。一种检查方法是
4-重新启动,移除 USB 记忆棒。