저는 grub을 처음 접했고 systemd 서비스를 시작하기 위해 grub 부팅 옵션을 만드는 것이 가능한지 알고 싶습니다.
예를 들어, 내 컴퓨터를 서버와 데스크탑으로 모두 사용하고 싶기 때문에 필요에 따라 다른 시작 옵션을 선택한다고 가정해 보겠습니다. 서버 옵션을 선택하면 컴퓨터가 서버 모드로 시작되고 데스크탑 옵션이 선택되기 시작 minecraftd.service
합니다 .httpd.service
gdm.service
그런 일이 가능합니까?
답변1
여러 데스크탑 환경이 설치되어 있는 경우 gdm
로그인 시 세션에 대해 그 중 하나를 선택하는 방법을 이미 제공해야 합니다. 화면 오른쪽 하단에 기어 아이콘이 있으면 이를 클릭하여 사용 가능한 세션 유형 메뉴를 확인하세요. 적어도 Ubuntu 22.04에서는 그런 것 같습니다.
데스크탑 시스템은 기본적으로 systemd 대상 장치를 사용하도록 구성되어 있을 가능성이 높습니다 graphical.target
. GUI가 없는 "서버 모드"에서 시스템을 시작하려는 경우 사전 정의된 모드를 사용할 수 있습니다 multi-user.target
. 사용자 정의 모드를 설정하려는 경우 고유한 대상 단위를 정의하고 해당 특정 모드에서 시작하려는 서비스에 의존할 수 있습니다.
GRUB에서는 부팅 옵션을 사용하여 부팅 모드를 선택할 수 있습니다 systemd.unit=<name>.target
.
시스템이 실행되는 동안 한 대상에서 다른 대상으로 비지속적으로 변경하려면 를 사용하면 지정된 대상 장치에서 설명하는 시스템 상태와 일치하는 서비스를 시작하고 중지 systemctl isolate <name>.target
합니다 .systemd
향후 재부팅을 위해 기본 부팅 모드를 영구적으로 설정하려면 를 사용해야 합니다 systemctl set-default <name>.target
.
마지막으로 커널에서 인식되지 않는 모든 부팅 옵션은 /proc/cmdline
있는 그대로 표시됩니다. 따라서 어떤 이유로 위의 옵션이 충분하지 않은 경우 /proc/cmdline
사용자 정의 키워드를 찾고 요구 사항에 따라 시스템 상태를 변경하는 스크립트를 만들 수 있습니다. 그런 다음 시작 프로세스의 적절한 단계에서 실행되도록 스크립트를 설정하면 됩니다.