systemd形式的启动脚本

自己是个比较喜欢折腾电脑的人,linux没学得很精,装linux倒是装得很勤。


几个月没倒腾了,这几天又新装了最新的Archlinux,想装nvidia显卡驱动,需在命令行运行安装脚本,明显需要改系统运行级。

到etc目录下一看,发现没有inittab配置文件,再看rc.conf,发现也没有,一下傻眼了,又试着找rc.d和init.d目录,不是没有就是下面没什么文件。


只得上网查,原来新版本的archlinux上已经放弃了原来的sysv init风格的启动脚本方式,而是采用了systemd,这个是比较新的技术。


维基百科上的相关介绍:http://zh.wikipedia.org/wiki/Systemd


摘抄了一部分如下:

systemdLinux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布[2][3]。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell系统开销的效果,最终代替现在常用的System VBSD风格init程序。


与多数发行版使用的System V风格init相比,systemd采用了以下新技术:

  • 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;
  • 用cgroups代替PID来追踪进程,以此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。

从设计构思上说,由于systemd使用了cgroup与fanotify等组件以实现其特性,所以只适用于Linux[5]。有鉴于此,考虑到kFreeBSD分支的软件源无法纳入systemd,为与其他分支保持一致,Debian开发者尽力避免纳入systemd[6]。但Lennart Poettering本人对此并不在意,并称”Debian kFreeBSD不过是玩具系统“[7]

systemd已纳入众多Linux发行版的软件源中,以下简表:

默认init程序为systemd的发行版
  • Fedora 15及后续版本[8][注 1]
  • Mageia 2[10]
  • Mandriva 2011[11]
  • openSUSE 12.1及后续版本[12]
  • Arch Linux在2012年10月13日将systemd-sysvcompat纳入base软件组,自此Arch Linux默认安装完即以systemd为init程序[13],同时也提供了与Arch自带启动脚本兼容用的systemd启动脚本包以方便用户,使用户能“开箱即用”[14]
  • Chakra GNU/Linux,在2012.10的光碟映像档发布后默认使用systemd。[15]
可以使用systemd的发行版
  • Debian GNU/Linux,于“testing”分支源中提供[16]
  • Gentoo,同Openrc一起被Gentoo官方支持[17][18][19]

除此以外,systemd已由Lennart Poettering提请纳入GNOME 3.2的外部依赖关系列表[20],而这意味着所有使用GNOME的发行版都应该使用systemd,最低限度来说也必须将其作为配置选项之一。



大致看了一下archlinux的wiki,systemd主要使用systemctl命令来控制,如果要改变运行级为命令行,也就是之前为3的运行级

那么需要运行命令:

# systemctl enable multi-user.target

如果要设定运行级为X11,也就是之前为5的运行级,那么需要删除/etc/systemd/system/default.target文件,如果存在。

然后运行与上面相似的命令

# systemctl enable graphical.target


详情链接为:https://wiki.archlinux.org/index.php/Systemd_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E5.88.87.E6.8D.A2.E5.90.AF.E5.8A.A8.E7.BA.A7.E5.88.AB.2F.E7.9B.AE.E6.A0.87


还没有仔细研究,用一段时间再补充一下内容,如如何设置登录管理器等。


设置登录管理器也很简单

# systemctl enable SLim.Service,也只是建立了一个链接,将默认登录管理器链接到SLim.Service。


你可能感兴趣的:(systemd形式的启动脚本)