Trước hết, systemd
không phải là một unix truyền thống init
. Systemd là rất nhiều, vì vậy thật không công bằng khi so sánh hai.
Để trả lời câu hỏi, những gì có vẻ cần thiết là một số nhị phân và các tệp cấu hình sau:
/usr/lib/systemd/system/default.target
/usr/lib/systemd/system/basic.target
/usr/lib/systemd/system/sysinit.target
/usr/lib/systemd/system/getty.target
/usr/lib/systemd/system/getty@.service
/usr/lib/systemd/system/console-getty.service
ban hành systemctl enable console-getty.service getty@tty2.service
sau đó tạo ra các liên kết tượng trưng này:
/etc/systemd/system/default.target.wants/getty@tty2.service -> / lib / systemd / system / getty @ dịch vụ
/etc/systemd/system/getty.target.wants/console-getty.service -> /lib/systemd/system/console-getty.service
LƯU Ý : Để sử dụng systemd
các tính năng đặc biệt để bắt đầu linh hoạt agetty
, theo yêu cầu khi nhấn Alt+ F3, v.v., có vẻ như bạn cũng phải có ít nhất hai tệp này:
/etc/systemd/logind.conf
/lib/systemd/system/autovt@.service
nơi autovt@.service
là một liên kết tượng trưng đến getty@.service
.
Nội dung của tập tin cấu hình:
Các default.target
, getty.target
, sysinit.target
tập tin có thể được sản phẩm nào ngoại trừ [Unit]
thẻ và (có thể) Description=xxx
.
basic.target
cũng chứa thông tin phụ thuộc:
[Đơn vị]
Mô tả = Hệ thống cơ bản
Yêu cầu = sysinit.target
Muốn = sockets.target timers.target path.target slices.target
After = sysinit.target sockets.target timers.target path.target slices.target
Tôi không chắc liệu các tham chiếu đến các mục tiêu không tồn tại dưới dạng tệp có cần thiết hay không. Chúng được mô tả trên systemd.special(7)
trang người đàn ông.
console-getty.service
: (Trường hợp đặc biệt cho agetty trên bàn điều khiển)
[Đơn vị]
Mô tả = Bảng điều khiển Getty
After = systemd-user-session.service plymouth-Thoát-Wait.service
Trước = getty.target
[Dịch vụ]
ExecStart = - / sbin / agetty --noclear --keep-baud console 115200,38400,9600 $ HẠN
Loại = nhàn rỗi
Khởi động lại = luôn
Khởi động lại = 0
UtmpIdentifier = khuyết điểm
TTYPath = / dev / bảng điều khiển
TTYReset = có
TTYVHangup = có
KillMode = tiến trình
Bỏ quaSIGPIPE = không
SendSIGHUP = có
[Cài đặt, dựng lên]
WantedBy = getty.target
getty@.service
: (cấu hình chung cho tất cả các dịch vụ nhỏ ngoại trừ bảng điều khiển)
[Đơn vị]
Mô tả = Getty trên% I
After = systemd-user-session.service plymouth-Thoát-Wait.service
Trước = getty.target
Bỏ quaOnIsolate = có
Điều kiệnPathExists = / dev / tty0
[Dịch vụ]
ExecStart = - / sbin / agetty --noclear% I $ HẠN
Loại = nhàn rỗi
Khởi động lại = luôn
Khởi động lại = 0
UtmpIdentifier =% I
TTYPath = / dev /% I
TTYReset = có
TTYVHangup = có
TTYVTDisallocate = không
KillMode = tiến trình
Bỏ quaSIGPIPE = không
SendSIGHUP = có
[Cài đặt, dựng lên]
WantedBy = getty.target
Mặc địnhInstance = tty1
Cuối cùng, bạn có thể cần một vài trong số các nhị phân đặc biệt này (Tôi chưa thử cái nào là quan trọng):
/ lib / systemd / systemd (/ sbin / init thường chỉ ra điều này)
/ lib / systemd / systemd-logind
/ lib / systemd / systemd-cgroups-agent
/ lib / systemd / systemd-user-session
/ lib / systemd / systemd-vconsole-setup
/ lib / systemd / systemd-update-utmp
/ lib / systemd / systemd-ngủ
/ lib / systemd / systemd-sysctl
/ lib / systemd / systemd-initctl
/ lib / systemd / systemd-reply-password
/ lib / systemd / systemd-ac-power
/ lib / systemd / systemd-kích hoạt
/ lib / systemd / systemd-đèn nền
/ lib / systemd / systemd-binfmt
/ lib / systemd / systemd-bootchart
/ lib / systemd / systemd-bus-proxyd
/ lib / systemd / systemd-coredump
/ lib / systemd / systemd-cryptsetup
/ lib / systemd / systemd-fsck
/ lib / systemd / systemd-hostnamed
/ lib / systemd / systemd-journald
/ lib / systemd / systemd-tạp chí-gatewayd
/ lib / systemd / systemd-tạp chí-từ xa
/ lib / systemd / systemd-local
/ lib / systemd / systemd-machined
/ lib / systemd / systemd-module-load
/ lib / systemd / systemd-multi-seat-x
/ lib / systemd / systemd-networkd
/ lib / systemd / systemd-networkd-Wait-online
/ lib / systemd / systemd-quotacheck
/ lib / systemd / systemd-ngẫu nhiên-hạt giống
/ lib / systemd / systemd-readahead
/ lib / systemd / systemd-remount-fs
/ lib / systemd / systemd-giải quyết
/ lib / systemd / systemd-rfkill
/ lib / systemd / systemd-shutdown
/ lib / systemd / systemd-shutdownd
/ lib / systemd / systemd-socket-proxyd
/ lib / systemd / systemd-hẹn giờ
/ lib / systemd / systemd-timesyncd
/ lib / systemd / systemd-udevd
/ lib / systemd / systemd-update-thực hiện
Để tóm tắt quá trình bắt đầu systemd, tôi nghĩ rằng nó hoạt động như thế này:
- systemd định vị
basic.target
(hoặc tất cả *.target
các tập tin?)
- phụ thuộc được giải quyết dựa trên
WantedBy=
, Wants=
, Before=
, After=
... chỉ thị trong [Install]
phần của *.service
và *.target
cấu hình tập tin.
*.service
s nên bắt đầu (không phải là dịch vụ "đặc biệt"), có một [Service]
phần có ExecStart=
chỉ thị, chỉ ra việc thực thi để bắt đầu.