减少linux启动时间 减少bios启动时间
如果我们的内核是好的,为什么我们需要每次重启内核做重新验证呢?所以我们可以去掉内核验证来提高系统启动时间。
uboot #setenv verify none
上面这条命令在我们启动内核时去掉了对内核的验证工作,从而提高了内核启动时间
2.再花费了将近2秒钟的时间来得到网络的物理链接包括获得DHCP ip地址
uboot #setenv ip_method none
依赖于网路速度这个过程可能会增长启动时间。事实上,在没有DHCP服务器的情况下会为超时花费好几分钟。
通过内核网络配置,设置ip=off在启动参数将会仍然允许你在用户空间配置网络。所以关掉ip_method会减少启动时间。
3.内核初始化工具将会帮助你找到内核中花费很长时间初始化的静态驱动
uboot #setenv optargs initcall_debug
uboot #saveenv
当linux系统启动后你能通过dmesg | grep initcall 来查看静态驱动消耗的启动时间。
[xxxxx] initcall [] returned 0 after usecs
如果CONFIG_PRINT_TIME 允许 dmesg | grep initcall |sort -k8 -n 否则 dmesg | grep initcall | sort -k6 -n
可以通过使用内核中bootgraph 脚本来查看initcall时间
CONFIG_PRINTK_TIME被允许 cat | perl /scripts/bootgraph.pl> boot.svg
你能够通过使用其他工具帮助你分析linux 内核。例如:
1.linux Trace Toolkit(LTTng) 2.Oprofile 3.Bootchart
4.优化的领域
一般来说在两个地方优化
1.大小
减小二进制的大小
删除不需要的功能减少组件的大小
2.速度
优化目标处理器
Neon优化
使用最快的多媒体启动
NOR/NAND vs MMC/USB
减少启动的任务数
如果从NAND中启动不要检查MMC
如果从MMC启动不要初始化网络
减少初始化操作
如果不需要不要带着网络启动
没有网的时候不要在设备上启动SSH服务
3.减少环境大小以便减少读到内存的数据量
CONFIG_ENV_SIZE
4.去掉不必要的console打印状态
uboot # setenv silent 1
5.设置启动延时时间
uboot #setenv bootdelay 0
6.禁用未用外设 例如 USB/MMC/Ethernet/UART
7.修改你设备<u-bootsources>/include/configs. 例如am335x_emv.h
避免长文本帮助文件为U-BOOT启动命令节省空间
#undef CONFIG_SYS_LONGHELP
使用简单的parser代替hush
#undef CONFIG_SYS_HUSH_PARSER
如果没有USB/NAND/MMC/SPI/NOR(flash)
#undef CONFIG_USB
#undef CONFIG_NAND
#undef CONFIG_MMC
#undef CONFIG_SPI
#undef CONFIG_FLASH_*
8.删除编译器-g操作
10.其他主意
禁止UART启动
删除镜像验证
尝试不压缩镜像
验证内核读到正确的内存位置
11.从内核中删掉不必要的驱动特性
减少驱动初始化时间
减少内核大小
12.构建非快速驱动为模块
当那有更多时间,在系统启动之后加载
13.禁止console口输出使用静默
不显示console信息的花费时间
在启动参数中,设置静默,但是仍然被记录。
uboot #setenv optargs quiet
删掉不使用的consoles。这些初始化花费时间。这些在/etc/inittab中删掉
完全的禁用printk是可能的,但是这个将会消除许多调试信息。
14.延迟模块init call调用
延迟模块initcalls没有建立动态模块是可能的。这个需要修改kernel。对于模块来说不必要在启动的时候替代module_init()功能调用deferred_module_init(),一旦系统启动延迟调用能被这样执行。
echo 1 > /proc/deferred_initcalls
更多的细节参照http://elinux.org/Deferred_Initcalls
15.禁用内核调试特性
内核调试
调试文件系统
追踪
16.删掉你能增加的例如initcall中的任何指令
17.预设每一个计时器循环
你需要立即测量找到lpj在内核启动信息里。例如718.02BogoMIPS 增加lpj=3590144到启动参数中
18.尽可能的使用静态IP
如果你不需要网络那么完全禁止它
如果你需要网络性能,但是不是NFS那么在内核启动参数行里确定设置 ip=off
19.通过”mem=“操作设置内存限制
尽可能的使用更多的需要的内存以避免内存初始化时间
20.使用最小busybox文件系统
减少forking in shell
构建静态以减少文件系统不使用的代码。小心这些静态链接也能引起你的系统大小的显著增加
21.避免使用ramdisk或者initramfs
更多阅读
怎样缩短Windows 7的启动时间 缩短bios启动时间
Windows 7开机时间的缩短方法基本上是通过msconfig命令改变开机启动设置完成的,此外优化磁盘碎片或写在不必要的软件、保证系统磁盘有足够的空间也可以有一定的效果,本文主要介绍与开机启动相关的设置。怎样缩短Windows 7的启动时间
怎样设置光驱启动 bios设置光驱启动
将BIOS设置调成光盘启动的方法(不同主板有所不同),通常有三种方法进入,一种按“DEL”(最为常见的),另一种按“F2”,还有按“F10”,具体请看购买时的说明书。怎样设置光驱启动——步骤/方法怎样设置光驱启动 1、1、开
系统吧装机教程:不同BIOS 设置光盘启动图解 dell光盘启动设置
最新系统吧装机教程:不同BIOS 设置光盘启动图解,由系统下载吧率先分享:不同BIOS 设置光盘启动图解在BIOS中进行设置,将启动顺序中光驱调到硬盘的前面。首先要进入BIOS设置环境中,不同型号的BIO
华硕主板BIOS怎么设置从U盘启动 华硕主板按f几进入u盘
华硕主板BIOS怎么设置从U盘启动——简介现在的新电脑一般都可以按F10(如HP电脑)或FN+F12可弹出启动引导盘选择项。但一些旧电脑尤其是ASUS主板的电脑可能没有这样的选项,还得从BIOS里进去设置才行。华硕主板BIOS怎么设置从U盘启动——
怎样减少XP系统开机滚动条的时间 xp系统滚动条
电脑开机的时候,开机滚动条会来回好长时间,非常着急,现在和大家分享一个减少滚动条时间的方法。怎样减少XP系统开机滚动条的时间——步骤/方法怎样减少XP系统开机滚动条的时间 1、鼠标点击桌面左下