fstab
다음 라인에 상응하는 시스템 설치 장치를 만들고 싶습니다.
/dev/sdc1 /жышы ext4 defaults 1 2
그런 것
жышы.마운트
[Unit]
Description= /dev/sdc1 to /жышы
[Mount]
What=/dev/sdc1
Where=/жышы
Type=ext4
[Install]
WantedBy=multi-user.target
systemd-escape
예, 단위 파일 이름을 사용해 보았지만 Where
성공하지 못했습니다. 내 더 나은 접근 방식은 다음과 같습니다.
xd0xb6xd1x8bxd1x88xd1x8b.마운트
[Unit]
Description= /dev/sdc1 to /жышы
[Mount]
What=/dev/sdc1
Where='/жышы'
Type=ext4
[Install]
WantedBy=multi-user.target
이 변형은 거의 작동합니다.(유닛 파일명에는 오류가 없습니다), 그러나 설치/dev/sdc1자동으로 생성된 폴더에/xd0xb6xd1x8bxd1x88xd1x8b바꾸다/жышы.
이 혼란을 해결하는 데 도움을 주세요.
답변1
에서 man systemd.mount
:
마운트 유닛의 이름은 해당 유닛이 제어하는 마운트 지점 디렉토리의 이름을 따서 지정해야 합니다. 예: 마운트 지점 /home/lennart는 장치 파일 home-lennart.mount에서 구성되어야 합니다. 파일 시스템 경로를 단위 이름으로 변환하는 데 사용되는 이스케이프 논리에 대한 자세한 내용은 을 참조하십시오
systemd.unit(5)
.
좋습니다. 다음에서 man systemd.unit
:
이스케이프 알고리즘은 다음과 같이 작동합니다. 문자열이 주어지면 모든 "/" 문자는 "-"로 대체되고 ASCII 영숫자, ":", "_" 또는 "."이 아닌 다른 모든 문자는 대체됩니다. C 스타일 "\x2d" 이스케이프로 대체되었습니다. 또한 "."은 이스케이프된 문자열의 첫 번째 문자로 나타날 때 이러한 C 스타일 이스케이프로 대체됩니다.
입력이 절대 파일 시스템 경로를 준수하면 알고리즘이 약간 확장됩니다. 루트 디렉터리 "/"에 대한 경로는 단일 대시 "-"로 인코딩됩니다. 또한 변환 전에 선행, 후행 또는 반복되는 "/" 문자가 문자열에서 제거됩니다. 예: /foo//bar/baz/는 "foo-bar-baz"가 됩니다.
이 이스케이프는 이스케이프된 문자열이 경로인지 여부를 아는 한 완전히 되돌릴 수 있습니다(이스케이프 결과는 경로 문자열과 비경로 문자열에 대해 다릅니다). 이
systemd-escape(1)
명령은 임의의 문자열에 이스케이프를 적용하고 역방향으로 적용하는 데 사용할 수 있습니다.systemd-escape --path
경로 문자열을 이스케이프 하는 데 사용되며 , 그렇지 않으면systemd-escape
사용되지 않습니다--path
.
그래서 우리는 달린다
systemd-escape --path /жышы
그리고 얻다
\xd0\xb6\xd1\x8b\xd1\x88\xd1\x8b
따라서 \xd0\xb6\xd1\x8b\xd1\x88\xd1\x8b.mount
올바른 파일 이름입니다. 백슬래시가 중요합니다!