ฉันจะกำหนดค่า systemd เพื่อล็อกอินโดยอัตโนมัติในสภาพแวดล้อมเดสก์ท็อปของฉันได้อย่างไรโดยไม่ต้องใช้ตัวจัดการการเข้าสู่ระบบ ฉันกำลังใช้ Arch
ฉันจะกำหนดค่า systemd เพื่อล็อกอินโดยอัตโนมัติในสภาพแวดล้อมเดสก์ท็อปของฉันได้อย่างไรโดยไม่ต้องใช้ตัวจัดการการเข้าสู่ระบบ ฉันกำลังใช้ Arch
คำตอบ:
นี่คือคำอธิบายในArch Wiki :
สร้างไฟล์บริการใหม่ที่คล้ายกับ
getty@.service
โดยการคัดลอกไปที่/etc/systemd/system/
cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
โดยทั่วไปจะคัดลอกไฟล์ที่มีอยู่แล้วgetty@.service
ไปยังไฟล์ใหม่autologin@.service
ซึ่งสามารถแก้ไขได้อย่างอิสระ มันถูกคัดลอกไปที่/etc/systemd/system
เพราะเป็นที่เก็บไฟล์หน่วยเฉพาะไซต์ /usr/lib/systemd/system
มีไฟล์หน่วยที่จัดทำโดยแพคเกจดังนั้นคุณไม่ควรเปลี่ยนแปลงอะไรในนั้น
จากนั้นคุณจะต้องautologin@.service
เชื่อมโยงไปยังบริการ getty สำหรับ tty ที่คุณต้องการ autologin สำหรับ examply สำหรับ tty1:
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
ถึงตอนนี้ยังคงเป็นgetty@.service
ไฟล์ปกติแต่ส่วนที่สำคัญที่สุดคือการปรับเปลี่ยนautologin@.service
เพื่อให้คุณเข้าสู่ระบบโดยอัตโนมัติ ในการทำเช่นนั้นคุณจะต้องเปลี่ยนExecStart
บรรทัดเป็นอ่านเท่านั้น
ExecStart=-/sbin/agetty -a USERNAME %I 38400
ความแตกต่างระหว่างExecStart
บรรทัดในgetty@.service
และautologin@.service
เป็นเพียงสิ่ง-a USERNAME
ที่บอก agetty เพื่อเข้าสู่ระบบผู้ใช้ด้วยชื่อผู้ใช้ USERNAME ในโดยอัตโนมัติ
ตอนนี้คุณต้องบอกให้ systemd ทำการโหลดไฟล์ daemon ใหม่และเริ่มบริการ:
systemctl daemon-reload
systemctl start getty@tty1.service
(ฉันไม่แน่ใจว่าบริการจะเริ่มต้นอย่างถูกต้องหรือไม่หากคุณลงชื่อเข้าใช้แล้วใน tty1 วิธีที่ปลอดภัยที่สุดคือสามารถรีบูทได้แทนที่จะรีสตาร์ทเซอร์วิส)
หากคุณต้องการเริ่มต้น X โดยอัตโนมัติให้แทรกข้อมูลต่อไปนี้ลงในของคุณ~/.bash_profile
(นำมาจากวิกิอีกครั้ง):
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
คุณจะต้องแก้ไขของคุณ~/.xinitrc
เพื่อเริ่มต้นสภาพแวดล้อมเดสก์ท็อปของคุณวิธีการทำเช่นนั้นขึ้นอยู่กับ DE และอาจอธิบายไว้ใน Arch wiki ด้วย
File exists
เมื่อฉันทำ symlink
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
เพื่อเขียนทับมัน
แก้ไขไฟล์โดยตรง/etc/systemd/system/getty.target.wants/getty@tty1.service
(ซึ่งเป็น symlink /lib/systemd/system/getty@service
):
ต่อท้าย-a/--autologin USERNAME
บรรทัด:
ExecStart=-/sbin/agetty --noclear %I $TERM
ดังนั้น:
ExecStart=-/sbin/agetty -a USERNAME %I $TERM
คุณอาจลบ-o '-p -- \\u'
(มีอยู่ในการติดตั้ง Arch ปัจจุบัน) เช่นนี้จะเริ่มต้นการเข้าสู่ระบบUSERNAME
แต่ยังคงถามรหัสผ่าน
หลังจากรีบูตเครื่องคุณจะเข้าสู่ระบบโดยอัตโนมัติ
Psเปลี่ยนชื่อไฟล์เป็นชื่อgetty@tty1.service
ที่tty
คุณต้องการเข้าสู่ระบบ
IMO, Arch Wikiปัจจุบันแนะนำวิธีแก้ปัญหาที่ง่ายกว่ามาก:
เรียกใช้ตัวช่วย ( systemctl edit getty@tty1
) หรือทำสิ่งที่ฉันทำด้วยตนเอง:
mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf
ข้อความที่คุณต้องการป้อน (โดยวิธีใดวิธีหนึ่ง) คือ (โปรดเปลี่ยนชื่อผู้ใช้อย่างเหมาะสม ):
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
หมายเหตุ : บรรทัดว่างเปล่าเป็นสิ่งสำคัญ! (เป็นที่ยอมรับฉันไม่แน่ใจว่าทำไม ... )
ตอนนี้ให้เริ่มต้นใหม่ ( shutdown -r 0
) และบางสิ่งที่มีผลต่อการ... login: username (automatic login)
เกิดขึ้นซึ่งจะบล็อกก่อนหน้านี้รอการป้อนชื่อผู้ใช้ / รหัสผ่าน
เมื่อรีบูตและเข้าสู่ระบบอัตโนมัติถ้าคุณชอบฉันและต้องการ SSH เข้าสู่ระบบนี้ตอนนี้คุณอาจต้องเรียกใช้:
systemctl enable sshd.service
สิ่งที่จะสร้าง symlink (เช่นln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'
)
/sbin/agetty
ดังนั้นจึงควรตรวจสอบ/etc/systemd/system/getty.target.wants/getty@tty1.service
ไฟล์ต้นฉบับก่อน