密码输入后,Ubuntu 12.04桌面加载速度非常慢

好吧,我有一台运行在Core i7笔记本电脑上的Ubuntu 12.04,带有SSD磁盘。 笔记本电脑是双启动。 我在密码输入和桌面显示之间经历了非常大的延迟。 通常,该过程如下所示:

  • Grub快速加载。
  • 我从列表中选择Ubuntu。
  • 密码提示加载速度快。
  • 我输入了我的用户的密码。 电脑有点挂起。 Wifi正在闪烁,但硬盘驱动器指示灯不会闪烁很多。 这大约需要30-40秒。
  • 桌面加载闪存

我过去经历过这个问题,使用标准硬盘。 然后我按照我见过的post中的建议删除了UbuntuOne。 这似乎有一段时间了。 然后我迁移到SSD。 计算机加载了一段时间,然后开始发生这种情况。 不过,我不认为它与SSD有关。

我正在添加一个启动图图像的链接:

http://ubuntu.miximages.com/boot/ew97ZO6.png

=======================

当我对此进行故障排除时,我注意到我的用户名在屏幕的右上角显示为[无效的UTF-8] 。 这些是桌面加载延迟时的情况。

有时,桌面设法快速加载。 在这种情况下,用户名正常显示。

[无效的UTF-8]似乎是一个已知的错误,但我无法找到有效的解决方案。

感谢您的时间。

=============================

我最终完全重新安装了操作系统。 这解决了这个问题。

这是一个由“George Georgovassilis”撰写的博客,它对阅读启动图表以及如何加快速度有了更多的了解……

衡量进展

Bootchart是一个很好的软件包,可以精确地协调整个启动过程,并创建时间和花费的图表。 所以第一步是获取bootchart:

sudo apt-get install bootchart 

重新启动后,您可以在/var/log/bootchart获得上述图表。 需要注意的是:第一张图表是非代表性的,因为ureadahead处于分析模式并且减慢了速度。 再次重新启动后,图表看起来会好得多。 这就是它的样子:

在此处输入图像描述

该图表显示了三个里程碑:X-Window管理器在启动后19秒启动,Gnome启动时间为41秒,桌面在59秒时可见,我也会考虑整个启动时间。 那是时候击败了。

并行化Ureadahead

Ureadahead大约需要10秒才能完成填充缓存,在此期间没有其他任何东西加载。 这对于常规的旋转硬盘是有意义的,因为并行启动的进程引起的频繁的头部运动会减慢速度。 但由于此安装是从SD卡启动的,因此可能值得探索一种并行运行ureadahead的方法。 我的第一个想法是将ureadahead放在脚本中并在后台启动它:

 /etc/init.d/bootopts #!/bin/sh (/sbin/ureadahead --daemon)& 

并更改/etc/init/ureadahead.conf来调用此脚本而不是/sbin/ureadahead

重启速度快3秒,在启动X和启动Gnome之间获得。 令人失望的是,新图表显示ureadahead仍在按顺序停止运行。 一些调查显示I / O调度程序认为SD卡是一个旋转设备,因此我正在更改bootopts脚本以通过添加以下内容来更正:

 echo 0 > /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/host6/target6:0:0/6:0:0:0/block/sdb/queue/rotational 

请注意,SD卡是/dev/sdb

重新启动后,图表如下所示:

在此处输入图像描述

好多了,ureadahead现在并行运行。 不幸的是,它使启动过程慢了1秒,主要是延迟X和Gnome。 但我觉得自己有所作为,所以我们不要放弃。

调整闪卡预告

闪存卡上带有简单hdparm -t -T的一些标记表明,顺序读取时间为14 MB /秒,因此比标称分类短2 MB /秒。 原因似乎是预读设置为256,将其减少到128最大为16 MB /秒。 因此,我的bootopts脚本的另一个补充:

 hdparm -a128 /dev/sdb 

更正I / O调度程序

再次重启,我又回到了56秒。 我怀疑I / O调度程序给ureadahead提供了与其他进程相同的优先级,它实际上不应该这样它应该隐藏在一个ionice后面,因此我修改了bootopts:

 (/usr/bin/ionice -c 3 /sbin/ureadahead --daemon)& 

这会将启动时间再提高2秒。 该图表显示闪存卡仍未完全使用,因此我按照这些说明禁用启动分区上的日记function,并且还禁用plymouthd这是动画的启动屏幕。 这就是诀窍,现在时间缩短到45秒:

在此处输入图像描述

[更新2011.05.22]我也在相反的方向做了一个实验,即用-c 1启动ionice,它对应于实时I / O,它将启动时间减少了一秒。 虽然起初这似乎违反直觉,因为并行运行的进程较少,乍一看它是有意义的,因为并行I / O引入了一些开销。

推迟服务

现在让我们将启动过程不需要的服务推迟到登录后。 我的候选人:

 mysqld nmbd smbd cupsd modem-manager bluetoothd alsa-store [update 2011.05.22] alsa-restore [update 2011.05.22] pulseaudio [update 2011.05.22] rsync [update 2011.05.22] apparmor - I apt-get removed that one [update 2011.05.22] plymouthd [update 2011.05.22] I deleted the /etc/init/plymouthd*.conf files - arguably this will affect logging and the ability of services to interact with the user in case something goes wrong. Use at your own risk ufw (firewall, there is a small security risk when setting up later) [update 2011.05.22] acpi-support 

所有这些都有upstart作业,可以通过将各个/etc/init/xyz.conf文件中的start事件更改为“stuff-that-c​​an-wait”之类的东西来推迟。 apport [更新2011.07.07]

然后/etc/init.d/stuff-that-can-wait的新脚本可以执行这些脚本。 我看起来像这样:

 #!/bin/sh /etc/init.d/mysql $1 /etc/init.d/samba $1 /etc/init.d/acpi-support $1 

当然不要忘记:

 chmod a+x /etc/init.d/stuff-that-can-wait 

我将它添加为一个upstart脚本,但可能更容易将它作为启动脚本添加到gnome会话(“启动应用程序”)

然后,我使用以下命令从/etc/rcX.d删除了类似的服务:

 update-rc.d -f servicename remove 

并将它们设置为upstart脚本( stuff-that-can-wait

并行运行init脚本

好post在这里[更新2011.05.22]本质上是将/etc/init.d/rc修改为

 CONCURRENCY=shell 

驯服笔记本电脑模式工具[更新2011.05.22]

还有更多工作要做:在启动顺序结束时,启动图显示了一个漫长的等待挂载(12秒),我位于/usr/lib/pm-utils/power.d/journal-commit。 我正在修改这个文件:

 #!/bin/sh exit0 

(我可能只是删除了它)

这个不仅大大减少了10秒的启动图,而且Unity Desktop的构建速度明显加快了。

还有比它应该更早开始的pulseaudio (参见推迟服务)

黑名单模块[更新2011.07.07]

此步骤消除了不必要的(对于我的设置)模块。 编辑/etc/modprobe.d/blacklist.conf并附加行

 blacklist rt2800pci blacklist rt2x00pci blacklist parport_pc blacklist vboxnetado blacklist vboxnetflt blacklist bvoxdrv blacklist joydev blacklist lp blacklist hp_accel 

并在/etc/modules注释lp module /etc/modules

这让我们有28秒的启动时间:

在此处输入图像描述

从这里复制和编辑→ http://georgovassilis.blogspot.com/2011/05/speeding-up-ubuntu-1104-boot-time.html

我希望这有帮助……祝你好运!