因此,我从 U 盘和 Windows 安装了 Ubuntu 12.10。当我启动 Ubuntu 时,它在紫色屏幕上花费了大约 10 分钟,没有光标,什么也没有,然后它进入黑屏但有一个光标,最后是登录屏幕,它保持冻结状态大约 10 分钟。登录后,屏幕也会在空白壁纸上冻结 10 分钟。最后在 Ubuntu 启动后,一切都运行得很慢。Firefox 需要几分钟才能启动并每隔 10 秒冻结一次。我有一个 Intel Pentium 2.93 Ghz 双核处理器,4 Gigs 内存,Geforce GTS250。
诊断启动缓慢的第一步是查看dmesg. dmesg显示内核环形缓冲区的内容,其中包含内核或多或少记录的状态消息,从控制权传递给 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
Run Code Online (Sandbox Code Playgroud)
在这里,我们看到从 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
Run Code Online (Sandbox Code Playgroud)
哇,从T+52秒到T+451秒的差距。我们注意到在延迟之前发生的最后一件事是文件系统被挂载。
一些研究(在 Google 上搜索“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并将其更改为 read /sbin/lvm vgchange --noudevsync -a y。可能需要将相同的选项附加到/sbin/lvm vgscan调用中。
现在执行sudo update-initramfs -u并在成功后重新启动。
| 归档时间: |
|
| 查看次数: |
9744 次 |
| 最近记录: |