시스템 설치 단위 구성에서 변수를 사용할 수 있습니까?

시스템 설치 단위 구성에서 변수를 사용할 수 있습니까?

systemd 마운트 구성 파일 필드에서 what=절대 경로 문자열 대신 변수를 사용할 수 있습니까?

예를 들어:

[Unit]
Before=local-fs.target

[Mount]
What=/dev/disk/by-partlabel/${part_variable}
Where=/mnt/optional/config/

사용자 정의 커널 명령줄 bootparam을 사용하고 해당 bootparam에서 제공하는 파티션을 마운트하는 방법을 찾으려고 합니다.

답변1

참고로:

systemd 마운트 구성 파일 필드에서 What=절대 경로 문자열 대신 변수를 사용할 수 있습니까?

예, 가능합니다. 예를 들어 (방금 테스트했습니다 systemd v.238):

mnt-data.mount콘텐츠:

[Unit]
Description=Mount System Backups Directory

[Mount]
What=${SOMEPATH}
Where=/mnt/data
Type=ext4
Options=defaults

당신이 달리면

systemctl set-environment SOMEPATH=/dev/disk/by-label/DATA

그런 다음

systemctl start mnt-date.mount

/dev/disk/by-label/DATA에 설치될 것입니다 ./mnt/data

또는 env 파일을 통해:

mnt-data.mount콘텐츠:

[Unit]
Description=Mount System Backups Directory

[Mount]
EnvironmentFile=/path/to/env_file
What=${SOMEPATH}
Where=/mnt/data
Type=ext4
Options=defaults

/path/to/env_file콘텐츠:

SOMEPATH=/dev/disk/by-uuid/1b5a38ca-9f0d-4f1a-8fc1-7c418e79bf07

도움이 되지 않을 수도 있습니다

사용자 정의 커널 명령줄 부팅 매개변수를 사용하고 해당 부팅 매개변수가 제공하는 파티션을 마운트하는 방법을 찾으세요.

그러나 그것은 확실히 사용될 수 있습니다 What=${SOMEVAR}.

답변2

에 따르면 man systemd.mount변수 대체가 지원되지 않습니다.

나는 시작 프로세스 초기에 실행되고 동적으로 생성된 파일을 작성하는 systemd 서비스를 작성하는 것이 여전히 가능하다고 믿습니다 .mount.

답변3

아니요.

당신이 설명하는 것은 정확히 생성기의 용도입니다 man systemd.generators. 을 참조하십시오. 비교는 man systemd-fstab-generator설치 단위에서 생성되며 커널 명령줄에서도 읽습니다 /etc/fstab. 즉, 커널 명령줄 옵션만 지원하고 구성 파일은 지원하지 않는 경우 이를 위한 earlystart() 서비스 유닛을 작성해 root=도 좋을 것입니다 .DefaultDependencies=no

관련 정보