天天看點

systemd的使用以及與sysvinit的差別

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      

繼續閱讀