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