私のホームルーターで実行されているSambaサーバーがあり、システムの起動時にそのサーバーに接続しようとしています。
重要なのは、ルータが自動的に共有名を設定することです。その名前は次のとおりです。foo (at Elements)
LinuxサーバーにSamba共有をマウントするために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
2番目のログエントリには、マウントする共有名のビットは含まれません。これが失敗の原因であると確信していますが、これを防ぐ方法がわかりません。
どんなアイデアがありますか?
答え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
テストします。今すぐ動作する場合は、起動時に動作する必要があります。