上页文章提到Qomo3.0在启动系统上做了重大调整,以systemd代替upstart。这里网友是否有疑问,systemd是一个什么新鲜系统,为何能够提升开机速度,下面就让编者试着为您揭开谜题。 每个操作系统都有一个启动程序,而Linux init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以init始终是第一个进程(其进程编号始终为1)。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
据Linux人社区负责人左洪盛介绍Linux init system的历史:20世纪80到90年代,Sys V和BSD出现了,虽然sysV的派生品,Gentoo的openRC诞生,接着出现了完全用C写的event-based;而随后是旧版本Upstart的出现,即sysV init的event-based替代。 通过功能和性能上的比较来看,upstart能做的systemd都能做,但是,systemd还具有如下特点,让Linux人社区最终选择了systemd: 第一,支持服务进程并行启动,相互之间不用等待; 第二,依托cgroup技术,支持任务分组控制; 第三,支持更多的守护进程唤醒方式,比如被监控文件唤醒。 注:这里简单介绍一下cgroup(control group)称为Containers,Containers着眼于资源的分配,利用configfs作配置。它有两个重要概念:第一是subsystem,内核可以给进程提供的服务/资源;第二是container,一个进程组,成员共享同样的一个或多个子系统分配限制。Containers是分层次的,一个container可以hold多个container。它的可取之处是创建了一个资源分配的框架,其它开发者可以利用这个框架去开发自己的资源分配patch,比如上回提到的磁盘设备。 在体验上,Qomo 3.0采用systemd后,系统的基础架构发生了很大的变化,系统开机速度更加迅速、性能更加稳定了。 左洪盛表示:“在qomo桌面系统达到较高的健壮程度以后,我们将在应用层面加大工作力度。比如:增加GNOME、XFCE等桌面类型,形成具有实用价值的软件包组,增加社区需要的各种应用程序。”Linux人社区将继续对系统精雕细琢,使系统更加完善。 |