ครั้งแรกของทั้งหมดไม่ได้เป็นแบบดั้งเดิมยูนิกซ์systemd
init
Systemd มีมากขึ้นดังนั้นจึงค่อนข้างไม่ยุติธรรมที่จะเปรียบเทียบทั้งสอง
ในการตอบคำถามสิ่งที่จำเป็นคือไบนารีและไฟล์กำหนดค่าต่อไปนี้:
/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
ออกsystemctl enable console-getty.service getty@tty2.service
แล้วสร้าง symlink เหล่านี้:
/etc/systemd/system/default.target.wants/getty@tty2.service -> / lib / systemd / system / getty @ service
/etc/systemd/system/getty.target.wants/console-getty.service -> /lib/systemd/system/console-getty.service
หมายเหตุ : ในการใช้systemd
คุณสมบัติพิเศษสำหรับการเริ่มagetty
ต้นแบบไดนามิกตามความต้องการเมื่อกดAlt+ F3และต่อไปปรากฏว่าคุณต้องมีไฟล์อย่างน้อยสองไฟล์นี้:
/etc/systemd/logind.conf
/lib/systemd/system/autovt@.service
ที่autovt@.service
เป็น symlink getty@.service
ไป
เนื้อหาของไฟล์กำหนดค่า:
default.target
, getty.target
, sysinit.target
ไฟล์สามารถเว้นว่างยกเว้นสำหรับ[Unit]
แท็กและ Description=xxx
(อาจจะ)
basic.target
ยังมีข้อมูลการพึ่งพา:
[Unit]
คำอธิบาย = ระบบพื้นฐาน
ต้อง = sysinit.target
ต้องการ = sockets.target timers.target paths.target slices.target
After = sysinit.target sockets.target timers.target path.target slices.target
ฉันไม่แน่ใจว่าการอ้างอิงไปยังเป้าหมายที่ไม่มีอยู่ในไฟล์นั้นเป็นสิ่งจำเป็นหรือไม่ พวกเขาจะอธิบายไว้ในsystemd.special(7)
หน้าคน
console-getty.service
: (กรณีพิเศษสำหรับ agetty บนคอนโซล)
[Unit]
คำอธิบาย = คอนโซลเก็ตตี้
หลังจาก = systemd-user-session.service plymouth-quit-wait.service
ก่อน = getty.target
[บริการ]
ExecStart = - / sbin / agetty --noclear --keep-baud console 115200,38400,9600 $ TERM
type = ไม่ได้ใช้งาน
เริ่มต้นใหม่ = เสมอ
RestartSec = 0
UtmpIdentifier = ข้อเสีย
TTYPath = / dev / คอนโซล
TTYReset = yes
TTYVHangup = yes
KillMode = กระบวนการ
IgnoreSIGPIPE = ไม่มี
SendSIGHUP = yes
[ติดตั้ง]
WantedBy = getty.target
getty@.service
: (กำหนดค่าทั่วไปสำหรับทุกบริการเก็ตตี้ยกเว้นคอนโซล)
[Unit]
คำอธิบาย = Getty ใน% I
หลังจาก = systemd-user-session.service plymouth-quit-wait.service
ก่อน = getty.target
IgnoreOnIsolate = yes
ConditionPathExists = / dev / tty0
[บริการ]
ExecStart = - / sbin / agetty --noclear% I $ TERM
type = ไม่ได้ใช้งาน
เริ่มต้นใหม่ = เสมอ
RestartSec = 0
UtmpIdentifier =% ฉัน
TTYPath = / dev /% ฉัน
TTYReset = yes
TTYVHangup = yes
TTYVTDisallocate = ไม่มี
KillMode = กระบวนการ
IgnoreSIGPIPE = ไม่มี
SendSIGHUP = yes
[ติดตั้ง]
WantedBy = getty.target
DefaultInstance = tty1
ในที่สุดคุณอาจต้องการไบนารีพิเศษเหล่านี้ (ฉันไม่ได้ลองอันไหนที่สำคัญ):
/ lib / systemd / systemd (/ sbin / init มักจะชี้ไปที่นี้)
/ lib / systemd / systemd-logind
/ lib / systemd / systemd-cgroups ตัวแทน
/ lib / systemd / systemd-ใช้การประชุม
/ lib / systemd / systemd-vconsole การติดตั้ง
/ lib / systemd / systemd อัพเดท-utmp
/ lib / systemd / systemd นอนหลับ
/ lib / systemd / systemd-sysctl
/ lib / systemd / systemd-initctl
/ lib / systemd / systemd ตอบกลับรหัสผ่าน
/ lib / systemd / systemd-AC พลังงาน
/ lib / systemd / systemd เปิดใช้งาน
/ lib / systemd / systemd-แสงไฟ
/ lib / systemd / systemd-binfmt
/ lib / systemd / systemd-bootchart
/ lib / systemd / systemd บัส-proxyd
/ lib / systemd / systemd-coredump
/ lib / systemd / systemd-cryptsetup
/ lib / systemd / systemd-fsck
/ lib / systemd / systemd-hostnamed
/ lib / systemd / systemd-journald
/ lib / systemd / systemd วารสาร-gatewayd
/ lib / systemd / systemd วารสารระยะไกล
/ lib / systemd / systemd-localed
/ lib / systemd / systemd กลึง
/ lib / systemd / systemd โมดูลโหลด
/ lib / systemd / systemd หลายที่นั่ง-X
/ lib / systemd / systemd-networkd
/ lib / systemd / systemd-networkd รอออนไลน์
/ lib / systemd / systemd-quotacheck
/ lib / systemd / systemd สุ่มเมล็ด
/ lib / systemd / systemd-readahead
/ lib / systemd / systemd-remount-FS
/ lib / systemd / systemd แก้ไข
/ lib / systemd / systemd-rfkill
/ lib / systemd / systemd-ปิด
/ lib / systemd / systemd-shutdownd
/ lib / systemd / systemd ซ็อกเก็ต-proxyd
/ lib / systemd / systemd-timedated
/ lib / systemd / systemd-timesyncd
/ lib / systemd / systemd-udevd
/ lib / systemd / systemd ปรับปรุงทำ
เพื่อสรุปกระบวนการเริ่มต้น systemd ฉันคิดว่ามันทำงานอะไรเช่นนี้:
- หาตำแหน่ง systemd
basic.target
(หรือ*.target
ไฟล์ทั้งหมด?)
- อ้างอิงได้รับการแก้ไขขึ้นอยู่กับ
WantedBy=
, Wants=
, Before=
, After=
... สั่งใน[Install]
ส่วนของ*.service
และ*.target
การตั้งค่าไฟล์
*.service
s ที่ควรเริ่มต้น (ที่ไม่ใช่บริการ "พิเศษ") มี[Service]
ส่วนที่มีExecStart=
คำสั่งที่ชี้ให้เห็นว่าปฏิบัติการเพื่อเริ่มต้น