使用 Samsung 850 Pro 在 Ubuntu 16.04 上启动缓慢

You*_*Git 9 boot grub2 ssd bootloader 16.04

更新 9

我决定尝试一个实验。我从台式机上卸下了 SSD,并暂时将其放入我的戴尔 Latitude 笔记本电脑中。瞧,它加载initrd速度快了一个数量级,启动时间缩短了6 秒……

我现在有点困惑……也许 GRUB 的主板芯片组有问题?

更新 8

所以我注意到 HDD 活动灯的一些有趣之处。加载 时initrd,几乎就好像以 10% 的占空比或其他方式对灯进行 PWM。这让我想知道 GRUB 的读取是否没有优化,也许就像它在执行操作系统调用来读取每个字节而不是将图像作为字节流读取?

在此处输入图片说明

更新 7

似乎加载初始 ramdisk 是问题的很大一部分。

在 GRUB 中,我按下C手动命令提示符。然后,我一次一次地输入默认配置中的每一行(输入这些 UUID 很痛苦!),并记下命令完成所用的时间。这是我发现的:

  • 大多数命令瞬间完成
  • 加载内核的命令大约需要一秒钟
  • 加载初始 ramdisk 的命令耗时 7 秒

输入配置文件中的所有行后,我继续运行boot. 从我按 Enter 到登录屏幕出现的时间,大约需要 7.5 秒。

有趣的是它加载的 initrd 图像是 36MB。因此,如果加载需要 7 秒,那么它的读取速度仅为 5MB/秒!

我塔上的磁盘活动指示灯在整个 7 秒内一直亮着......

还有一个来自维基百科页面关于 initrd的有趣片段:

其他 Linux 发行版(例如 Fedora 和 Ubuntu)生成更通用的 initrd 映像。它们仅以根文件系统的设备名称(或其 UUID)开头,并且必须在启动时发现其他所有内容。在这种情况下,软件必须执行复杂的级联任务才能挂载根文件系统

更新 6

Nathan Osman 在聊天中请求单用户模式下的启动时间。

从我F10在 GRUB 中打到提示出现的时间,需要 13 秒。

此外,我在聊天中与 Zanna 和 Rinzwind 交谈,从按下电源按钮开始,他们都有 8 秒的启动时间。我的 20 秒来自 GRUB。如果算上POST时间,会更长!

更新 5

Ubuntu 可以以 550MB/秒的最大速度读取我的 SSD...

在此处输入图片说明

更新 4

因此,我quiet splash $vt_handoff从笔记本电脑上 GRUB 的引导命令中删除了参数(请记住,这台笔记本电脑没有 SSD),并在引导过程中注意到了一件非常有趣的事情:

它在这条线上挂了 15 秒:

[    4.374390] init: plymouth-upstart-bridge respawnng too fast, stopped
Run Code Online (Sandbox Code Playgroud)

这是一张(低质量)图片:

在此处输入图片说明

不知道这有什么意义...


更新 3

我为我的另一台运行 14.04 的机器的启动计时(请记住,这台机器没有 SSD),从我在 GRUB 中按 Enter 键到出现登录屏幕,需要 40 秒。

按回车键后,它会在同一个空白紫色屏幕上停留 20 秒,之后 Ubuntu 动画加载,并在登陆登录屏幕之前又需要 20 秒。

我查看了 的输出dmesg,但我不太清楚它在哪里完成启动。我认为它在 25 秒时完成。这是最后几行:

[   24.916824] wlan0: associated
[   24.916852] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   25.215550] init: kdm main process (869) killed by TERM signal
[   25.441216] vboxdrv: module verification failed: signature and/or  required key missing - tainting kernel
[   25.445587] vboxdrv: Found 2 processor cores.
[   25.446142] vboxdrv: fAsync=0 offMin=0x18c offMax=0x960
[   25.446228] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'.
[   25.446230] vboxdrv: Successfully loaded version 4.3.36_Ubuntu (interface 0x001a000b).
[   25.476940] vboxpci: IOMMU not found (not registered)
[   33.174926] init: plymouth-upstart-bridge main process ended, respawning
[   36.495811] init: anacron main process (933) killed by TERM signal
Run Code Online (Sandbox Code Playgroud)

如果我解释正确,这似乎是一个普遍的 GRUB 问题。


更新 2

通过使用C在 GRUB 中按时访问的命令行将 GRUB 的背景颜色设置为绿色,我能够确认这是一个 GRUB 问题

当我按回车键时,在 Ubuntu 启动动画加载之前,我会看到一个空白的绿屏大约 15 秒......


更新

我认为问题在于 GRUB 加载内核映像需要很长时间。


我在我的三星 850 Pro 512GB SSD 上安装了 Ubuntu 16.04,我不明白为什么我的启动时间是 20 秒。(从我在 GRUB 中输入时开始)。请记住,我引用的 20 是登录屏幕的 17,然后是桌面的另外 3)

另外,不确定这是否相关,但是:

  • Ubuntu安装的是MBR模式,因为我鄙视UEFI。
  • 我安装了专有的 Nvidia 驱动程序

看看由 生成的图像systemd-analyze plot > bootimage2,我的启动显然花了 3 秒?

在此处输入图片说明

看着dmesg,我的启动显然花了 4 秒钟。但是我用秒表计时,花了 20 秒!(不包括 POST 时间)同样,请记住,我引用的 20 是登录屏幕的 17,然后是桌面的另外 3)

以下是启动顺序的过程:

  • 邮政
  • GRUB 加载
  • 当我按下 ENTER 时,我启动了我的秒表
  • 我得到一个空白的紫色屏幕约 15 秒
  • 我看到了两秒钟的 Ubuntu 启动动画
  • 我登陆登录屏幕
  • 我停止秒表
  • 我输入我的密码,按回车键,然后再次启动我的秒表。
  • 3秒后我登陆桌面
  • 我再次停止我的秒表。

这是来自dmesg http : //paste.ubuntu.com/23955108/的完整输出

这是输出的第一行systemd-analyze blame

   365ms dev-sda5.device
   327ms networking.service
   287ms accounts-daemon.service
   286ms ModemManager.service
   233ms systemd-logind.service
   216ms apport.service
   213ms grub-common.service
   209ms ondemand.service
   200ms irqbalance.service
   183ms speech-dispatcher.service
   178ms apparmor.service
   160ms gpu-manager.service
   148ms thermald.service
   148ms pppd-dns.service
   146ms systemd-user-sessions.service
   142ms alsa-restore.service
   140ms console-setup.service
   137ms rsyslog.service
   105ms NetworkManager.service
   104ms upower.service
   102ms avahi-daemon.service
   100ms systemd-udev-trigger.service
Run Code Online (Sandbox Code Playgroud)

这些人有同样的问题:

有任何想法吗?

Mih*_*hov 1

如果 GRUB 不在 SSD 上(如果在安装过程中正确配置的话应该如此),那么仅将 SSD 放在那里就需要 GRUB 时间来识别它,但它不会以任何方式减少启动时间,实际上恰恰相反。您应该做的是通过更改 BIOS 启动顺序使计算机从 SSD 启动。请注意,您还必须在 SSD 上重新安装 GRUB。尽管在某些情况下(例如我的笔记本电脑),您无法从 BIOS 中选择 SSD 作为启动设备,但您只能转到 HDD,加载 RAM,然后转到 SSD。

这也是我认为会发生的情况,但我不完全了解您的笔记本电脑或台式机配置,所以这就是我能提供的帮助。

希望这可以帮助。:)