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

更新9

我决定尝试一下实验。 我从桌面上移除了SSD,暂时将其放入戴尔Latitude笔记本电脑中。 瞧,它加载的initrd速度提高了一个数量级,在开机时间缩短了6秒 ……

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

更新8

所以我注意到有关HDD活动灯的一些有趣内容。 加载initrd ,几乎就好像光以10%的占空比或其他方式进行PWM调制。 这让我想知道GRUB的读取是否未被优化,可能是因为它正在进行OS调用以读取每个字节而不是将图像作为字节流读取?

在此处输入图像描述

更新7

看来加载初始ramdisk是问题的很大一部分。

在GRUB内部,我按C键进行手动命令提示。 然后我继续从我的默认配置中一次输入一行(输入那些UUID很痛苦!) ,并记下命令完成时的时间。 这是我发现的:

  • 大多数命令都是即时完成的
  • 加载内核的命令大约需要一秒钟
  • 加载初始ramdisk的命令花了7秒

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

令人感兴趣的是它加载的initrd映像是36MB。 因此,如果加载需要7秒钟, 那么它只能以5MB /秒的速度读取它!

我的塔上的磁盘活动灯亮了整整7秒……

另外,这是维基百科页面中关于initrd的一个有趣的片段:

其他Linux发行版(如Fedora和Ubuntu)生成更通用的initrd映像。 这些只从根文件系统(或其UUID)的设备名称开始,并且必须在引导时发现其他所有内容。 在这种情况下,软件必须执行复杂的级联任务才能安装根文件系统

更新6

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

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

此外,我在聊天时与Zanna和Rinzwind交谈,他们在点击电源按钮时都有8秒的启动时间。 我的20秒来自GRUB。 如果我计算了POST时间,它会更长!

更新5

Ubuntu可以以550MB /秒的最高速度读取我的SSD …

在此处输入图像描述

更新4

所以我从笔记本电脑上的GRUB中的boot命令中删除了quiet splash $vt_handoff参数(请记住这台笔记本电脑没有SSD) ,并且在启动过程中发现了一件非常有趣的事情:

它挂在这条线上15秒:

 [ 4.374390] init: plymouth-upstart-bridge respawnng too fast, stopped 

这是(低质量)图片:

在此处输入图像描述

不知道那是什么意思……


更新3

我计划运行14.04的其他一台机器的启动(请记住,这台机器没有SSD) ,从我点击进入GRUB直到登录屏幕出现,需要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 

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


更新2

通过使用在GRUB中按C访问的命令行,我可以通过将GRUB的背景颜色设置为绿色来确认它是GRUB问题

当我按下回车键时,在Ubuntu启动动画加载之前,我得到一个空白的绿色屏幕〜15秒…


更新

我认为问题是GRUB需要很长时间才能加载内核映像。


我在我的Samsung 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到桌面)

这是启动顺序的方式:

  • POST
  • 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 

这些人有同样的问题:

  • https://ubuntuforums.org/showthread.php?t=2325045
  • https://www.bleepingcomputer.com/forums/t/598260/booting-ubuntu-temporarily-stuck-on-a-purple-screen/
  • 甚至连ARCH的人都有这个问题……

有任何想法吗?

如果GRUB不在SSD上(如果在安装期间正确配置它应该如此),那么只需拥有SSD将花费GRUB时间来识别它,但它不会以任何方式减少启动时间,实际上恰恰相反。 您应该做的是通过更改BIOS启动顺序使计算机从SSD启动。 请注意,您还必须在SSD上重新安装GRUB。 虽然在某些情况下像我的笔记本电脑那样你无法从BIOS中选择SSD作为启动设备,但是你不得不去硬盘驱动器,加载RAM,然后转到SSD。

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

希望这可以帮助。 🙂