高速启动,现在开始systemd

最近一次系统更新,Archlinux用systmed-tools替换了udev。我年纪渐大,响应胡总号召,不象以前那么爱折腾了。有人问Lennart创建systemd的动机,回答是“爱折腾”该折腾还得折腾,与各位Linuxer共勉。

什么是systemd: 一些八卦

systemd被设计用来改进sysvinit的缺点,它和ubuntu的upstart是竞争对手,预计会取代它们。systemd的很多概念来源于苹果的launchd。创始人Lennart是redhat员工,但systemd不是redhat项目。

systemd的目标是:尽可能启动更少进程;尽可能将更多进程并行启动。systemd尽可能减少对shell脚本的依赖。传统sysvinit使用inittab来决定运行哪些shell脚本,大量使用shell脚本被认为是效率低下无法并行的原因。systemd使用了Linux专属技术,不再顾及POSIX兼容,一度谣传Debian为了它的BSD项目将不会使用systemd。

天下武功,唯快不破,加速吧,Linux!

systemd安装

sudo pacman -Rcsn sysvinit syslog-ng
sudo pacman -S systemd systemd-arch-units systemd-sysvcompat

删除sysvinit,安装systemd-sysvcompat,我更喜欢这样一个纯的systemd环境。还有一个好处是可以不用设置内核启动参数init=/bin/systemd

系统升级的时候只给我用systemd-tools替代了udev,但没装管理工具包systemd,网络也没有,害得我不得不到别的机子上下好,再拷过来安装。

systemd服务管理

systemctl is-enabled .service #查询服务是否开机启动
sudo systemctl enable .service #开机运行服务
sudo systemctl disable .service #取消开机运行
sudo systemctl start .service #启动服务
sudo systemctl stop .service #停止服务
sudo systemctl restart .service #重启服务
sudo systemctl reload .service #重新加载服务配置文件
systemctl status .service #查询服务运行状态
systemctl --failed #显示启动失败的服务

systemctl命令取代了rc.d命令。

开机模块加载

/etc/modules-load.d/.conf,相当于原rc.conf中的MODULES变量

# Load virtio-net.ko at boot virtio-net
virtio-net

模块黑名单仍在/etc/modprobe.d/下,如blacklist.conf:

blacklist badmod.ko

Locale

/etc/locale.conf,相当于原rc.conf中的LOCALE

LANG=en_US.UTF-8 LC_COLLATE=C
LC_COLLATE=C

日志服务

systemd自带日志服务,参考systemd Journal

sudo journalctl

可以删除syslog-ng了

主机名

/etc/hostname,相当于原来rc.conf中的HOSTNAME变量

myhostname

网络

sudo systemctl enable NetworkManager.service

不象rc.conf有专门的配置简单网络的地方,还是用NetworkManager、wicd之类的工具吧

如果你坚持使用简单静态配置,可以参考[SOLVED] static ethernet setup under systemd?

运行级别

systemd用target替代了runlevel的概念,提供了更大的灵活性,如你可以继承一个已有的target,并添加其它服务,来创建自己的target

sudo systemctl list-units --type=target #查询当前target
sudo systemctl isolate graphical.target #改变当前target,重启无效
sudo systemctl enable multi-user.target #改变启动时默认target
sudo systemctl enable kdm.service #graphical是默认target,指定使用的display manager

优化

systemd有自己的”e4rat”

sudo systemctl enable systemd-readahead-collect.service sudo systemctl enable systemd-readahead-replay.service

/etc/fstab,修改/home分区options,检查/home分区时并行启动其它服务

defaults,noauto,x-systemd.automount

其他

sudo systemctl reboot #systemctl还有系统关机、重启、挂起等功能 sudo systemctl suspend

参考资源

systemd-Archlinux Wiki: 本文基本上可以说是此文的翻译

systemd on freedesktop: systemd官方文档,如欲进一步研究,比如service文件中各项含义等,请移步

采访 Systemd 和 PulseAudio 创始人 Lennart: Lennart是可有趣的人,文后链接中还能找到许多有用的文章

36 thoughts on “高速启动,现在开始systemd

  1. 像内核的话就用一套就行 redhat debian也都是用的linus的 这个是可以的 至于其它的还应该是Unix和linux的关系一样 虽然有一些相似 但不能得出一套基于另一套的结论

  2. 其实维护两个版本的系统也是不错的 就算是同一批人做的 就像当年win也有Me和NT 我比较偏向于有两个版本存在 也可以锻炼另一些人的能力 因为显然熟linux内核 框架的人显然太少 要么分两个版本 八家麻 一个版本可以带三个发行版 至于他们怎么协议 就不管了

  3. 华为 中兴 阿里 愿意贡献的也可以加进来啊 当然主要针对有原社区的模块修改 自己的模块不用拿进来 可能手机那块也可以进来 应该没有非LINUX内核的吧 有Unix内核的吗 有的话不用加 就LINUX的

  4. 要么 用了更新模块的厂家 支付一定费用给基金 基金拿这个去支付修改的费用 你如果贡献多就能得到多 厂家只能在国家的库内选模块 当然这个库初始应该很全 如果有做得好的新模块也可以加进来 发补帖的时候减掉这个支出

  5. 各家分别发展自己的模块不如大家一起发展一个版本的 当然还是可以分rpm deb 当然也可以统一改掉 改成别的格式 桌面这一块的如果是自主做的 别人就不能用 比如Deepin的DDE

  6. 要么市场排名 贡献排名两个因子排名 要么市场排名 +贡献点数补帖 可以弄个比如Mozilla基金什么来做这个事 当然还可以多考虑考虑方案 当然贡献这个事得一个中立的机构来监管

  7. 每家安排一些人参与维护吧 可以多参与与自己有关的模块的维护 当然桌面这一块自己维护自己的 比如Deepin的DDE自己维护 比如基于Debian的系统模块改好了 大家都有好处

  8. 主要以BUG修复 增加功能为主 漏洞修复什么 报告一个修复一个吧 原社区的了关注一下 如果有什么补漏洞 功能修复什么的也参考一下

  9. 以后中国这一套 别人要么全用 要么全不用 哈哈侵占世界LINUX界 桌面要成功了 以后中国的规则就更重要了 建议国家支持的Linux项目 每个公司分出一些人来专门支持各各社区的BUG修补工作 等于一个社区的事 中国对应也有一些人在维护

  10. 理论上所有的LINUX部件都能Fork 以后中国可以自成一派了 建议国家支持的Linux项目 有什么BUG什么的先跟自己的平台报告 解决不了再去原社区

  11. 做好了放自己的开源的地方吧 中国也要有GitHub之类的啊 GitHub搬个过来吧 也是GPL的 中国的GPL就放自己的GitHub上吧 当然我并不支持重要的东西开源 放GitHub上不如放自己的服务器上

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>