启动时间优化方案

来源:互联网 发布:惠州淘宝培训 编辑:程序博客网 时间:2024/04/25 02:18

一、直接的优化思路:
1. Kernel(vmlinuz)优化,kernel(vmlinuz)在2.39s启动完成,2.39秒已经比较小了,优化空间不大,可以把usb等驱动 编译为ko,不要在initrd中加载。
2. 优化initrd,减少initrd体积,initrd压缩格式默认是33MB,去掉一些ko,可以到20MB左右。未压缩可以减少到 50MB,initrd不用压缩。
3. 优化initrd初始化脚本。initrd中有udevd服务,framebuffer脚本需要等待udevadm settle完成,此处较花费时间,出问题概率较高。
13s的黑屏时间问题可能出在这里,建议 提供 一个debug方 式,然后提供 给dmesg已经测试数据。
dmesg > log
lspci -nn > lspci-nn.txt 
lspci -mn > lspci-mn.txt
lspci -xxx > lspci-xxx.txt
lspci -vvv > lspci-xxx.txt
lsusb -t > lsusb-t.txt
lsusb -v > lsusb-v.txt
tar -zcvf firmware.tgz /sys/firmware
二、linux bootlogo方案
linux bootlogo是kernel中vesafb实现logo显示,然后切换为s3gfb进行开机动画, 切换中间有黑屏。
需要设计一个Logo。
vesafb可以支持物理分辨率 1360x768,但 还不知道 linuxbootlogo是否支持,可以准备800x480等几个分辨率的图片分别试试 看。
这个方案作为优先方案

---------------------------------------------------------------------------------------------------------------------------------------------

比较了一下多台Notebook的dmesg,有额外1.5s花在了 EHCI (pci)。
[    0.470517] pci 0000:00:01.0: Boot video device
[    0.470524] pci 0000:00:03.0: disabling DAC on VIA PCI bridge
[    2.068019] pci 0000:00:10.7: EHCI: BIOS handoff failed (BIOS bug?) 01010001
[    2.073214] pci 0000:00:12.0: xHCI BIOS handoff failed (BIOS bug ?) 01010401
很多主板都有此问题。https://bugzilla.kernel.org/show_bug.cgi?id=12148

#Kernel的其它优化稍后再更新,,计划修改:

把acpi_battery,isapnp, xhci/ehci/uhci/ohci从builtin改为modules,尽可能在开机动画开始再加载。
具体实现:
1. 修改 /etc/initramfs-tools/initramfs.conf 文件中的 modules=most 一行,改为以下内容:
        MODULES=dep
2. 执行 update-initramfs -u -k 3.8.13.13-cdos 更新 initrd
3. 重启机器
对于LiveCD安装盘:
       由于安装盘iso需要适应包括 网络安装、优盘安装、光盘安装等多种场合,而上面提到的修改方式是根据当前硬件配置生成initrd,因此不适合与LiveCD的构建。
       可以在LiveCD的执行安装过程的后期脚本中,执行上面的步骤,来实现对initrd的优化。

------------------------------------------------------------------------------------------------

(一) 部分服务禁止启动

 /etc/init 

plymouth-log.conf

ubiquity.conf 

ureadahead.conf 

ureadahead-other.conf 

control-alt-delete.conf

dmesg.conf

rsyslog.conf

等服务文件可以直接删除。 

也可以在/etc/rc.local 脚本中添加

update-rc.d -f demsg remove

update-rc.d -f rsyslog remove

update-rc.d -f plymouth remove

update-rc.d -f ureadahead remove

update-rc.d -f ubiquity remove

等停止服务。方便用户通过update-rc.d -f demsg default 重新添加(经验证这样添加不上)

(二)延后部分进程的启动

/etc/xdg/autostart/ 

Bluetooth-applet.desktop

Cinnamon-screensaver.desktop

Ios_device_remove.desktop

Mint-xhost-plus.desktop

Plulseaudio-kde.desktop

Vino-server.desktop

Capslock.desktop

Fcitx-autostart.desktop

Mint-ctrl-alt-blckapace.desktop

Print-applet.desktop

Switcher-mode.desktop

Wps-office-autostart.destkop

等应用可以利用: X-GNOME-autostart-Delay=2020是指秒,可以改)

这个tag进行延时启动。特别是wps这个应用,在启动中占用大量的IOCPU 严重影响桌面的启动。

 (三)部分进程提前或者并行运行

1, mdm提前运行

    修改/etc/init/mdm.conf start 条件为local-filesystems

2, 替换mdm greeter 为轻量级

  /etc/mdm/mdm.conf[daemon]增加

greeter=/usr/lib/mdm/mdmlogin

3, 去除非必要Xsession启动加载项

1.删除/etc/X11/Xsession.d/90qt-a11y

2.删除/etc/X11/Xsession.d/90x11-common_ssh-agent

3.删除/etc/X11/Xsession.d/70im-config_launch

4.删除/etc/X11/Xsession.d/60xdg-user-dirs-update

PS:输入法组件需要后续启动。

4, 提高会话组件并行化加载程度

修改cinnamon,cinnamon-settings-daemon,nemodesktop文件,

设置X-GNOME-Autostart-Phase=Initialization(其中nemo-autostart.desktopubuntu-system-adjustments复写)。

 (四)使用e4rat

 使用e4rat收集整理开机过程使用的文件并进行预加载

1, 在我们发行版116H 上安装: sudo dpkg -i cdos-e4rat_1.0.0_i386.deb ,安装完成后重新启动
2,  进入系统后,再次重新启动
3,  进入系统后, 按平常用户一样使用几分钟后(2-3分钟) ,重新启动
     A: ps -aux|grep e4rat-realloc 进程是否存在    等到e4rat-realloc 完全退出,再重新启动
4, 进入系统后重新启动
5, 进入系统后重新启动

可根据需要调整/etc/e4rat.conftimeout的时间,这个时间控制收集启动过程使用到的文件的多少。可以将/etc/xdg/autostart中的应用延后启动,这样e4rat timeout的时间内不会收集这些应用的文件。

(五) 附件清单

  1, e4rat 安装包  cdos-e4rat_1.0.0_i386.deb

  2, test.tar.gz 中 /etc/xdg/autostart/ 下改动后的desktop文件

  3, e4rat编译帮助

  4e4rat源码

  

启动时间:与硬盘速度正相关

双系统时间缩短

与系统设置的硬盘大小负相关

0 0
原创粉丝点击