![시스템 설치 단위 구성에서 변수를 사용할 수 있습니까?](https://linux55.com/image/129776/%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%84%A4%EC%B9%98%20%EB%8B%A8%EC%9C%84%20%EA%B5%AC%EC%84%B1%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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