私はDebianパッケージセット全体を更新してインストールしましたが、特定のfstabファイルの設定でエラーが発生しました。 2つのドライブがあり、同時にマウントせず、両方とも同じマウントポイント(/etc/fstab
ピース)を持ちます。
UUID=xxxx-xxxx /media/strontium vfat user,rw,exec,nofail 0 2
UUID=yyyy-yyyy /media/strontium vfat user,rw,exec,nofail 0 2
しかし、インストール後、systemdはこれについて文句を言います。
[518052.191024] systemd-fstab-generator[28811]: Failed to create mount unit file /run/systemd/generator/media-strontium.mount, as it already exists. Duplicate entry in /etc/fstab?
実際、私はドライブをマウントするためにsystemdを使用したくありません。私は以前これを使用したことsudo mount -a
があり、これは私のファイルを繰り返し/etc/fstab
挿入されたすべてをインストールしました。
以前のように自分のドライブを手動でマウントできるように、システムマウント機能をオフにできますか?
答え1
いずれにしても、マウントポイントディレクトリ名がシステムファイル名に変換されるため、これらのシステム制限は認識されません。最も簡単な答えは、おそらくfstabからエントリを削除し、必要に応じてインストールする小さなスクリプトを書くことです。
#!/bin/bash
( mount -U xxxx-xxxx /media/strontium -t vfat -o rw,exec ||
mount -U yyyy-yyyy /media/strontium -t vfat -o rw,exec
) && echo ok
修正したら、systemdが変更を認識していることを確認することを/etc/fstab
忘れないでください。sudo systemctl daemon-reload
アイテムを保存するには、/etc/fstab
2番目のマウントポイントを最初のマウントポイントにするシンボリックリンク(たとえば)を使用できますln -s /media/strontium /media/strontium2
。マウントが完了するとリンクがたどり、通常通りディレクトリに表示されます。この場合、noauto
両方の行にオプションを追加する必要があります。そうでなければ、systemdは混乱して最初のものであると思うものをすぐにアンロードします。
シンボリックリンクの代わりに物理ディレクトリを使用してから手動で実行できます。バインドマウント必要な場所にこのディレクトリをインストールします。
mount --bind /media/strontium2 /media/strontium
このバンドルインストールと最初のインストールの両方を削除する必要があります。
以前は、UUIDがあるときに明示的にmountを呼び出すudevルールを追加できました。たとえば、次のようになります/etc/udev/rules.d/92-my.rules
。
ACTION=="add", ENV{ID_FS_UUID}=="xxxx-xxxx", RUN+="/usr/bin/mount /dev/%k /media/strontium"
しかし、最近のsystemdでは、別々のマウントネームスペースで実行されているため動作しないため、udevd
マウントを実行しても表示されません。まだこの名前空間の理由はわかりませんが、原則として
/etc/systemd/system/systemd-udevd.service
2行のファイルを作成してこの機能をオーバーライドできます。
.include /usr/lib/systemd/system/systemd-udevd.service
MountFlags=shared
それでも自動である場合は、別のアプローチはブロックデバイスのイベントを監視udevd
し、明示的なマウントを実行することです。たとえば、永久に実行するには、次のようにします。
#!/bin/bash
# udevadm monitor outputs a stanza ending with a blank line
# UDEV [5291328.3] add /devices/pci0000:00/.../usb3/..../block/sdd (block)
# ACTION=add
# DEVNAME=/dev/sdd
stdbuf -o L udevadm monitor -u -p -s 'block/disk' |
awk -F= '
$0~/^ACTION=/{ action = $2 }
$0~/^DEVNAME=/{ name = $2 }
$0~/^ID_FS_UUID=/{ uuid = $2 }
$0~/^$/{ if(action=="add" && (uuid=="xxxx-xxxx"||uuid=="yyyy-yyyy")
system("sudo mount mount " name " /media/strontium -t vfat -o rw,exec")
uuid=""
}'