부팅 시간 매개변수(및/또는 실행 중인 커널 유형)를 기반으로 특정 커널 모듈, 마운트 지점 및 부팅 시간 서비스(Systemd 또는 OpenRC)를 활성화하거나 비활성화하는 방법이 있습니까?
한 단계 더 나아가 초기화 시스템을 비슷한 방식으로 교체할 수 있을까요? (커널 매개변수에 대해 알고 있지만 init=...
(예를 들어) systemd와 OpenRC가 동일한 설치에 공존하고 부팅 시 마음대로 교체될 수 있습니까?
배경 지식에 대해(누군가 이것을 기억할 만큼 나이가 들었다면) 내 생각은 부팅 시 메뉴에서 선택할 수 있는 config.sys/autoexec.bat에 여러 시스템 구성 파일이 있는 DOS 기술에서 비롯되었습니다.
따라서 (순수한 예를 들어) GRUB에 세 가지 메뉴 항목을 갖고 싶다면 다음과 같습니다.
"게임": 사용자 정의 커널을 로드하고 독점 nvidia 드라이버를 로드하고 optimus(또는 vfio 패스스루)를 활성화한 다음 X11로 부팅합니다.
"Work": 다른 커널을 로드하고, Intel 비디오 드라이버를 로드하고, 암호화된 작업 파티션을 마운트한 다음 Wayland로 부팅합니다.
"서버": 세 번째(대기 시간이 긴) 커널을 로드하고 특정 추가 백그라운드 서비스(예: 웹 서버, SSH 호스트, VM 호스트)를 시작한 다음 텍스트 콘솔로 부팅합니다.
위의 내용은 단지 예일 뿐이지만 요점을 이해하시기 바랍니다.
리눅스에서 그런 일이 가능합니까?
답변1
틀림없이. 배포판에 따라 쉬울 수도 있고 어려울 수도 있지만 그렇습니다.
모듈의 경우,이 U&L 게시물modules_load
모듈 로딩을 위한 커널 매개변수 도 언급되어 있습니다 .이 다른 기사모듈 차단을 위한 매개변수가 있습니다. 아치 리눅스에서는mkinitcpio
서로 다른 구성으로 여러 커널 이미지를 생성하는 것은 쉽습니다(적어도 미리 로드된 모듈 등의 경우는 있지만 빌드 구성은 아님).
서비스 로드, 볼륨 마운트 등의 경우 systemd는 두 단위를 종속성 체인의 일부로 만들어 작업을 쉽게 만듭니다. 따라서 gaming.target
X11을 시작하는 서비스인 "대상"을 만들거나, 설치 단위와 작업 파티션을 암호화하는 장치 단위, Wayland를 시작하는 단위 등으로 구성된 "대상"을 만들 수 있습니다. 시작하려는 대상은 다음을 사용하여 커널 명령줄의 일부가 됩니다.Wants
Requires
WantedBy
RequiredBy
work.target
Wants
Requires
WantedBy
RequiredBy
systemd.unit
매개변수(예: systemd.unit=gaming.target
또는 systemd.unit=work.target
).
대상은 커널 명령줄에서 설정해야 하고 모듈도 로드해야 할 수 있으므로 부트로더 구성을 업데이트하여 해당 커널 이미지와 명령줄을 사용하여 각 대상에 대한 별도의 항목을 생성해야 합니다.
Init 시스템 교체 가능 - Ubuntu에서 systemd가 처음 도입되었을 때 Upstart와 systemd 간 교체가 가능했습니다. 나는 Gentoo가 여전히 그것을 지원한다고 생각합니다. 다른 배포판의 경우 누군가가 기본이 아닌 초기화 시스템에 대한 서비스 구성 등을 설정해야 합니다(그 사람은 아마도 당신일 가능성이 높으며 많은 작업이 필요합니다).