내 홈 라우터에서 실행 중인 삼바 서버가 있고 시스템 시작 시 해당 서버에 연결하려고 합니다.
중요한 것은 라우터가 자동으로 공유 이름을 설정해 주는데 그 이름은 다음과 같습니다.foo (at Elements)
Linux 서버에 삼바 공유를 마운트하기 위해 fstab 항목을 추가했는데 마운트 명령을 직접 실행하면 제대로 작동합니다.sudo mount /media/sambashare
fstab 항목은 다음과 같습니다.
//192.168.50.1/andy\040\050at\040Elements\051 /media/samba_share cifs credentials=/etc/samba/user,noexec,vers=2.0,gid=1002,uid=114,_netdev,x-systemd.requires=network.target 0 0
그러나 시스템이 부팅될 때마다 드라이브가 마운트되지 않습니다.
마침내 문제를 발견했습니다.
수동으로 실행하면 mount
다음과 같은 Journalctl 항목을 찾을 수 있습니다.
Jan 01 21:56:59 media-server sudo[5624]: andymc : TTY=pts/0 ; PWD=/home/andymc ; USER=root ; COMMAND=/usr/bin/mount /media/samba_share
Jan 01 21:56:59 media-server kernel: CIFS: Attempting to mount \\192.168.50.1\andy (at Elements)
그러나 시스템 시작 시 로그 항목이 약간 다르게 보입니다.
Jan 01 21:51:03 media-server systemd[1]: Mounting /media/samba_share...
Jan 01 21:51:03 media-server kernel: CIFS: Attempting to mount \\192.168.50.1\andy
Jan 01 21:51:03 media-server kernel: CIFS: VFS: cifs_mount failed w/return code = -2
Jan 01 21:51:03 media-server mount[1250]: mount error(2): No such file or directory
Jan 01 21:51:03 media-server mount[1250]: Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
Jan 01 21:51:03 media-server systemd[1]: media-samba_share.mount: Mount process exited, code=exited, status=32/n/a
Jan 01 21:51:03 media-server systemd[1]: media-samba_share.mount: Failed with result 'exit-code'.
Jan 01 21:51:03 media-server systemd[1]: Failed to mount /media/samba_share.
at Elements
두 번째 로그 항목에는 탑재하려는 공유 이름의 비트가 포함되지 않습니다 . 이것이 실패의 원인이라고 확신하지만 이를 방지하는 방법을 모르겠습니다.
어떤 아이디어가 있나요?
답변1
Systemd는 내용을 직접 사용하지 않지만 fstab 파일의 비어 있지 않고 주석이 아닌 각 줄을 /etc/fstab
실행하여 마운트 유닛을 빌드합니다. systemd-fstab-generator
(자세한 내용은 , 및 을 참조하십시오 man 8 systemd-fstab-generator
. man 5 systemd.mount
)man 7 systemd.generator
이러한 메시지는 이스케이프된 공백과 괄호가 프로세스에서 분명히 유지되지 않으며 공유 이름이 끝에서 잘린다는 것을 나타냅니다 \\192.168.50.1\andy
.
프로세스로 인해 문제가 발생했는지 확인하려면 다음과 같이 공유 라인을 systemd-fstab-generator
주석 처리 /etc/fstab
하고 이에 대한 마운트 유닛을 직접 작성할 수 있습니다 /etc/systemd/system/media-samba_share.mount
.
[Unit]
Documentation=man:fstab(5)
After=network.target
Requires=network.target
Before=remote-fs.target
[Mount]
What=//192.168.50.1/andy\x20\x28at\x20Elements\x29
# if the above won't work, try this form:
# What=//192.168.50.1/andy (at Elements)
Where=/media/samba_share
Type=cifs
Options=credentials=/etc/samba/user,noexec,vers=2.0,gid=1002,uid=114
[Install]
WantedBy=remote-fs.target
systemd 는 man systemd.unit
에 설명된 대로 전통적인 8진수 대신 16진수 기반 문자 이스케이프를 사용합니다.
실제로 이와 같이 사용자 정의 마운트 유닛을 작성할 때 이스케이프를 전혀 수행하지 않을 수도 있습니다. 16진수 이스케이프가 작동하지 않으면 이 방법을 시도해 보세요.
마운트 유닛 파일을 생성한 후 실행하여 systemctl daemon-reload
변경 사항을 적용한 후 실행하여 systemctl start media-samba_share.mount
테스트합니다. 지금 작동하면 시작 시 작동해야 합니다.