Ubuntu 启动时间过长

Ubuntu 启动时间过长

所以我从 USB 上安装了 Ubuntu 12.10,同时安装了 Windows。当我启动 Ubuntu 时,它会在紫色屏幕前停留大约 10 分钟,没有光标,什么都没有,然后进入黑屏,但有光标,最后是登录屏幕,它会冻结大约 10 分钟。登录后,屏幕也会在空白壁纸上冻结 10 分钟。最后,在 Ubuntu 启动后,一切都运行得非常慢。Firefox 需要几分钟才能启动,每隔 10 秒左右就会冻结一次。我有一台英特尔奔腾 2.93 Ghz 双核处理器、4 GB 内存和 Geforce GTS250。

答案1

诊断启动缓慢的第一步是查看的输出dmesgdmesg显示内核环形缓冲区的内容,该缓冲区包含从控制权传递给 Linux 内核到您的 syslog 守护进程接管这些日志记录任务期间内核记录的状态消息。

为了方便浏览,要将 dmesg 的输出保存到文件中,请执行dmesg > dmesg.txt。现在,dmesg.txt您当前的目录中包含内核日志。

读取 dmesg:dmesg 输出的每一行都以类似 的序列开头[ 0.106607]。这是“T-plus”格式的时间戳:它是内核启动后的秒数。

要识别您的速度变慢,请寻找时间戳从一行“跳跃”到下一行的点(提示:您还可以使用dmesg -ddmesg 在时间戳后的尖括号中打印从一个时间戳到下一个时间戳的时间差):

[    3.201806] usb 2-4: >New USB device strings: Mfr=2, Product=3, SerialNumber=4
[    3.201810] usb 2-4: >Product: Android
[    3.201813] usb 2-4: >Manufacturer: Android
[    3.201816] usb 2-4: >SerialNumber: 00093f054d0a2f
[   43.254818] EXT4-fs (sda5): orphan cleanup on readonly fs
[   43.254827] EXT4-fs (sda5): ext4_orphan_cleanup: deleting unreferenced inode 10747985
[   43.254879] EXT4-fs (sda5): ext4_orphan_cleanup: deleting unreferenced inode 10748275
[   43.254892] EXT4-fs (sda5): ext4_orphan_cleanup: deleting unreferenced inode 10748394

这里我们看到从 T+3 秒跳到 T+43 秒,这意味着在 40 秒内内核没有记录任何内容,大概是无所事事地等待着发生某事。这是在它识别出插入的 Android 设备之后发生的,因此首先,我们可能想要尝试在启动期间拔掉该 Android 设备。不过,这可能是一个转移注意力的借口——延迟可能是由接下来发生的文件系统清理引起的。

紧接着是:

[   43.254959] EXT4-fs (sda5): ext4_orphan_cleanup: deleting unreferenced inode 10748175
[   43.254969] EXT4-fs (sda5): 8 orphan inodes deleted
[   43.254970] EXT4-fs (sda5): recovery complete
[   52.161162] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null)
[  451.530476] Adding 51097596k swap on /dev/sda2.  Priority:-1 extents:1 across:51097596k
[  451.540572] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  455.117113] udevd[430]: starting version 175
[  458.734692] lp: driver loaded but no devices found

哇,从 T+52 秒到 T+451 秒的差距。我们注意到,延迟之前发生的最后一件事是挂载文件系统。

经过一番研究(用谷歌搜索‘slow boot dmesg“mounted filesystem with ordered data mode”’)得到了一个有希望的线索:未修复的错误与udev这指的是出现此消息后立即在启动时进行长时间的等待!

浏览该帖子,它看起来像一个解决方法已经建立:

它包括在 /lib/udev/rules.d/85-lvm2.rules 中的 vgchange 命令中添加 --noudevsync 参数。然后使用 update-initramfs -u 重新生成 initramfs

因此我们会做这样的事:

sudo nano /lib/udev/rules.d/85-lvm2.rules

找到类似于的摘录/sbin/lvm vgchange -a y并将其更改为/sbin/lvm vgchange --noudevsync -a y。可能需要将相同的选项附加到/sbin/lvm vgscan调用中。

现在执行,sudo update-initramfs -u成功后重新启动。

相关内容