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