systemd를 사용하여 데스크탑에 자동 로그인하려면 어떻게해야합니까?


20

로그인 관리자를 사용하지 않고 데스크탑 환경에 자동으로 로그인하도록 systemd를 어떻게 구성 할 수 있습니까? 아치를 사용하고 있습니다.


어떤 로그인 관리자를 사용하고 있습니까? 일부 (GDM, KDM, iirc 등)는 이미 자동 로그인을 지원하므로 서비스를 활성화하기 만하면됩니다.
Wieland

현재 SLiM을 사용하고 있으며 자동 로그인하도록 구성 할 수 있지만 디스플레이 관리자가 없으면 부팅 프로세스가 더 빨라지고 깜박임이 없습니다. :)
fhucho

오, 당신의 질문을 잘못 읽었습니다.
Wieland

답변:


22

이것은 아치 위키에 설명되어 있습니다 :

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@.servicetty1에 대해 자동 로그인하려는 tty의 getty 서비스에 해당 링크를 symlink해야 합니다.

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@.serviceautologin@.service전용입니다 -a USERNAME자동으로 사용자 이름 사용자 이름으로 사용자를 기록 agetty를 알려줍니다.

이제 systemd에게 데몬 파일을 다시로드하고 서비스를 시작하도록 지시하면됩니다.

systemctl daemon-reload
systemctl start getty@tty1.service

(tty1에 이미 로그인 한 경우 서비스가 제대로 시작되는지 확실하지 않은 경우 가장 안전한 방법은 서비스를 시작하는 대신 재부팅하는 것입니다).

X를 자동으로 시작하려면 다음 스 니펫을 ~/.bash_profile( 위키에서 다시 가져온)에 삽입하십시오 .

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec startx
fi

~/.xinitrc데스크탑 환경을 시작하려면 DE 를 사용하여 변경하는 방법을 수정해야 하며 아마도 아치 위키에도 설명되어 있습니다.


agetty arg % I는 무엇입니까?
Edward Anderson

마지막에`charachter는 무엇입니까? 그게 필요한가요? 무슨 뜻이에요?
rien333

@ rien333 불필요합니다. 답변에서 삭제했습니다.
Wieland

2
File existssymlink를 수행 하면 오류가 발생 합니다
Post Self

ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service덮어 쓰는 데 사용 하십시오.
마누엘 슈미츠 베르거

5

파일 /etc/systemd/system/getty.target.wants/getty@tty1.service(으로의 심볼릭 링크)을 직접 수정하십시오 /lib/systemd/system/getty@service.

-a/--autologin USERNAME라인에 추가 :

ExecStart=-/sbin/agetty --noclear %I $TERM

금후:

ExecStart=-/sbin/agetty -a USERNAME %I $TERM

-o '-p -- \\u'로그인을 시작 USERNAME하지만 여전히 암호를 요구 하므로 (현재 아치 설치에있는) 제거 할 수도 있습니다.

재부팅하면 자동으로 로그인됩니다.

변경 파일 이름 getty@tty1.service받는 tty당신이에 로그인 할 수 있습니다.


명확성을 위해 참고하십시오. 심볼릭 링크 인 경우 심볼릭 링크를 새 파일로 바꾸고 새 파일을 편집하십시오.
Edward Anderson

1

IMO의 아치 위키는 현재 매우 간단한 해결책을 권장합니다 :

도우미 ( 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

어떤 심볼릭 링크를 생성합니다 (예를 들어 ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')


빈 줄은 먼저 ExecStart 항목을 지우고 다음 줄은 새로운 exec 명령을 도입합니다. 또한 일부 시스템 (우분투)에서는 agetty 실행 파일이에있을 수 있으므로 /sbin/agetty원본 /etc/systemd/system/getty.target.wants/getty@tty1.service파일을 먼저 확인하는 것이 좋습니다.
platforma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.