Total Pageviews

Monday, 8 October 2018

debian 8系统上的systemd

debian 8 sysvinit与systemd的切换

目前debian testing(2014-07-29)仍然采用sysv作为默认init系统,需手动安装软件包等切换至systemd。
$ sudo apt-get update

$ sudo apt-get install systemd 

#安装 systemd-sysv 后自动将systemd配置为默认init系统,
#同时移除sysvinit-core
$ sudo apt-get install systemd-sysv 

$ sudo reboot
重启之后,查看PID=1的进程是/sbin/init,再查看 /sbin/init会发现是/lib/systemd/systemd的软链接,至此,系统默认initsystem已切换至systemd。在debian 8 正式版发布之后,将采用systemd作为默认init系统,可能不需要用户手动切换。

systemd兼容性与注意事项

systemd的SySV兼容性内容请查看 详细介绍-系统管理-SysV兼容性一节,包含init script的注意事项等。
注意事项:
  • systemd定义了一批配置文件,请查看详细介绍-系统管理-规范化的配置文件一节。
  • systemd中runlevel的概念被target替代,telinit与init命令仍可使用。关于target与启动顺序内容,请查看详细介绍-系统管理-Target和Dependency based bootup 一节 与启动分析一节。
    • 注:使用systemd之后/etc/initab被忽略,所以修改此文件中的runlevel并不能起效。
  • debian with systemd下,service命令依然可用,但是service实际上是调用systemctl命令,详情请查看详细介绍-系统管理-SysV兼容性一节。
    • 注:service foobar status将返回systemctl类型的status内容,不再是foobar is runing .此类输出。
    • 建议使用systemctl命令或service命令,不建议使用/etc/init.d/<service>,因为后者无法处理sysv init文件被移除的状况。
  • service 单元执行的时候没有附带任何上下文环境,甚至没有进行 $HOME 目录的设置。对这些有依赖的启动脚本将无法正常工作。
  • /etc/rc.local依然可用,见/lib/systemd/system/rc-local.service 单元文件。
  • update-rc.d 命令依旧可用,但是注意:start与stop选项不再被支持。查看/usr/sbin/update-rc.d文件,可发现其对/etc/init.d/的处理部分以及针对systemd的service的处理部分。
    • systemctl enable/disable命令实际上调用update-rc.d命令。若不存在service单元文件,将对/etc/init.d/<service>下的脚本链接到/etc/rcN.d/目录下。若是service单元存在,将依照单元文件中[Install]中的内容将单元文件链接到对应的wants文件夹中。
      update-rc.d(8) should enable/disable systemd services in addition to creating the sysvinit links. update-rc.d is usually called from maintscripts, but enable/disable is typically used by the system administrator. systemctl enable/disable should also call update-rc.d
    • systemd Integration
    • 注:update-rc.d中 default 等同于"start 2 3 4 5 . stop 0 1 6 .",update-rc.d foobar defaults ,注意default是否与脚本中LSB部分指定的Start与Stop存在冲突。
  • 注意:systemd不支持交互式启动脚本,例如Debian‘s X-Interactive in the LSB header。
  • debian testing中的systemd的coredumpctl不可用,打包时候--disable-coredump,原因不明。
  • 默认情况下systemd的日志journal的磁盘存储需要手动创建目录,否则重启将丢失日志记录,请查看详细介绍日志管理-日志的记录等-日志存储一节。

本节参考链接

No comments:

Post a Comment