부팅 시 백그라운드에서 dhcpcd를 시작하는 방법은 무엇입니까?

부팅 시 백그라운드에서 dhcpcd를 시작하는 방법은 무엇입니까?

Arch Linux에서 다음 작업을 수행하고 싶습니다. 부팅 시 백그라운드에서 dhcpcd를 시작하고 자동으로 로그인하여 X Window Server를 시작합니다.

지금까지 내가 시도한 것은 다음과 같습니다. 먼저 다음 명령을 사용하여 자동 로그인을 활성화했습니다.조각으로 넣다getty@tty1에게:

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

exec startx또한 .bash_profile 파일에도 추가했습니다 . 이를 통해 부팅 시 로그인하고 X를 시작할 수 있었습니다.

다음으로 systemctl:을 사용하여 dhcpcd 서비스를 활성화했습니다. (enp4s0은 내 이더넷 포트입니다.) dhcpcd가 성공적으로 시작된 후 로그인되었습니다. 다만, 연결이 되는 동안 로그인 프롬프트가 10초 정도 지연되어 조금 짜증스럽습니다. X 환경을 보면 dhcpcd 연결이 백그라운드에서 발생하길 원합니다.sudo systemctl enable [email protected]

그래서 다음 코드 조각을 실행하고 생성하여 After=getty@tty1dhcpcd 서비스 파일에 추가했습니다.sudo systemctl edit [email protected]

[Unit]
[email protected]

그 후에는 시작할 때 더 이상 로그인 화면이 표시되지 않으며 로그를 확인하면 systemd가 종속성 주기를 감지했고 getty가 시작되지 않았음을 알 수 있습니다.

아마도 이는 getty가 작업 순서에서 마지막으로 시작된다는 의미인 "idle" 유형이기 때문일 것입니다. 그래서 Type=simplegetty 서비스 파일에 설정했습니다. 그러나 이제 권한이 없는 사용자는 시작 시 로그인이 허용되지 않으며 로그인 프롬프트가 나타나지 않는다는 오류가 발생합니다. 어떻게 진행해야 할지 잘 모르겠습니다.

한 가지 해결책은 bash_profile에 dhcpcd를 넣는 것이라는 것을 깨달았습니다. 하지만 systemd만 사용하여 원하는 것을 달성할 수 있는 방법이 있나요? 앞으로는 이런 방식으로 다른 서비스를 실행하고 싶을 수도 있고 bash_profile을 엉망으로 만들고 싶지도 않습니다.

답변1

위에서 답을 찾았어요아치스 위키.

해결책은 다음 dhcpcd 코드 조각을 사용하는 것입니다.

[Service]
ExecStart=
ExecStart=/usr/bin/dhcpcd -b -q %I

이것-b 플래그는 백그라운드에서 dhcpcd를 시작합니다., 그리고 -q는 출력이 터미널을 오염시키지 않도록 "조용하게" 만듭니다(오류 및 경고 제외).

기본적으로 dhcpcd는 이 유형을 가지며 forking-w 플래그와 함께 systemd에 의해 호출됩니다. -w 플래그는 IP를 얻기 전에 분기하는 것을 방지하고 Type=forking이므로 백그라운드에 두지 않고 해당 작업이 발생할 때까지 시작 프로세스를 계속합니다. 이 작업에는 몇 초가 걸립니다. 이는 약 10초의 시작 지연을 설명합니다. -b를 사용하면 즉시 백그라운드로 이동하여 이러한 지연을 방지할 수 있습니다.

관련 정보