优化Archlinux性能

============摘自ArchLinuxwiki============

修改引导文件

/etc/inittab

乱序执行

Note:使用该方法后,不能保证所有系统服务按顺序启动。如果dbus未在X图形服务器启动前开启,某些功能可能出现异常(ck-launch-session、gnome、kde等等)。

通过修改inittab使启动脚本乱序执行,而不必按顺序等待上一个脚本执行完毕:

#用“once”代替“wait”

rc::sysinit:/etc/rc.sysinit

rs:S1:wait:/etc/rc.single

rm:2345:once:/etc/rc.multi

rh:06:once:/etc/rc.shutdown

su:S:once:/sbin/sulogin-p

禁用多余控制台

默认agetty控制台有六个(Ctrl+Alt+F1-6)。

注释掉tty3~tty6,仅保留tty1、tty2:

c1:2345:respawn:/sbin/agetty-838400tty1linux

c2:2345:respawn:/sbin/agetty-838400tty2linux

#c3:2345:respawn:/sbin/agetty-838400tty3linux

#c4:2345:respawn:/sbin/agetty-838400tty4linux

#c5:2345:respawn:/sbin/agetty-838400tty5linux

#c6:2345:respawn:/sbin/agetty-838400tty6linux

此外,使用轻量级控制台(例如:fgetty、mingetty)可以节约系统资源:

Note:fgetty不支持sha512密码哈希(默认是md5)。如果使用sha512密码哈希,可以选择mingetty。

#pacman-Sfgetty

修改/etc/inittab中上文所述的内容:

c1:2345:respawn:/sbin/fgettytty1linux

c2:2345:respawn:/sbin/fgettytty2linux

/boot/grub/menu.lst

该文件是GRUB的配置文件,通过该文件可以配置内核启动参数。有许多加快系统启动的参数,比如关闭framebuffer、使用quiet参数减少显示的日志数目、logo.nologo参数禁止显示徽标。更详细的配置信息参见GRUB。

使用上述设置的启动项如下:

kernel/vmlinuz-linuxroot=/dev/disk/by-uuid/UUIDrologo.nologoquiet

/etc/mkinitcpio.conf

在该文件中,删除不需要的HOOKS,甚至只保留base(和udev)、在MODULES数组中指定需要加载的模块,可以减小内核体积,加快开机速度。

更多信息参见:mkinitcpio。

/etc/rc.conf

如果使用了自动加载模块,那么完全可以清空MODULES数组:

MODULES=()

反之,也可以禁用自动加载模块,而选择手动加载:

MOD_AUTOLOAD="no"

然后把需要的模块添加进MODULES=()。

网络部分,可以禁止不使用的网络链接。此外,如果可以,尽量选择手动设置IP。

最后删除不需要的系统服务:

DAEMONS=(dbushalalsanetworkgdm)

把一些服务设置为后台启动:

DAEMONS=(dbushal@gdm@alsa@network)

如果有闲情逸致,可以自己探索一下最佳服务启动顺序(算了吧,10个服务有360万种排列...):

DAEMONS=(syslog-ng@acpidarptablesiptablesnetworkpdnsd@alsa@dbus@mpd@crond@sensors@ntpd@dropboxd)

尽管可以把服务放到后台启动,但要注意服务间的依赖,必须先启动被依赖的服务。(在以上例子中,pdnsd依赖于network,ntpd、dropboxd依赖于pdnsd,因为pdnsd提供域名解析;此外,Xorg依赖dbus)。

/etc/rc.sysinit

该脚本非常重要,系统启动时大多数信息都是这个脚本输出的。其中包含加载系统文件、加载模块、挂载分区、处理错误、以及输出信息等重要功能。

某些用不上的功能可以注释掉。例如:RAID、LVM、文件系统加密功能。修改前做好修复准备,否则后果难以预料。

自己编译内核

自己编译内核、关闭不需要的功能,恐怕是加速系统启动的最有效方法了,详细:

https://wiki.archlinux.org/index.php/Kernel_Compilation_From_Source

相关推荐