新しく追加されたディスクを分割し、システムデバイスファイルを作成してマウントする必要があるudevルールによってトリガされるスクリプトがあります。ただし、インストール部分が正しく機能せず、次のエラーが発生しても失敗します。A dependency job for mnt-volume1.mount failed. See 'journalctl -xe' for details.
install コマンドを使用してインストールしようとするとエラーは発生しませんが、スクリプトの外側で確認するとパーティションはマウントされません。 systemd起動を手動で実行すると、問題なくすべてがうまく機能します。
udevによってトリガされるスクリプトは次のとおりです。
#!/bin/bash -x
LOGFILE=/tmp/set-bash.log
exec > >(tee -a $LOGFILE)
exec 2>&1
device=$1
dev=${device##*/}
FS=''
[ ${dev:0:2} = "sd" ] && FS='xfs'
[ ${dev:0:2} = "vd" ] && FS='ext4'
[ -z "${FS}" ] && { echo "No FS specified!"; exit ; }
[ -e "${device}1" ] || {
echo ';' | sfdisk ${device}
counter=0
while true
do
[ "${counter}" = "60" ] && { echo "Timeout reached, exiting..."; exit; }
[ -e "${device}1" ] && {
/usr/sbin/mkfs.${FS} ${device}1
break
}
counter=$(( counter++))
sleep 1
done
}
for i in {1..9999}
do
if [[ ! -e "/mnt/volume${i}" ]]
then
declare -g DIRECTORY="volume${i}"
mkdir -p /mnt/$DIRECTORY
break
fi
done
cat << EOF > /etc/systemd/system/mnt-${DIRECTORY}.mount
[Unit]
Description=mounting /mnt/${DIRECTORY}
[Mount]
What=${device}1
Where=/mnt/${DIRECTORY}
Type=${FS}
Options=defaults
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable mnt-${DIRECTORY}.mount
systemctl start mnt-${DIRECTORY}.mount
インストール部分のスクリプト出力は次のとおりです。
+ systemctl daemon-reload
+ systemctl enable mnt-vpsie33.mount
Created symlink /etc/systemd/system/multi-user.target.wants/mnt-vpsie33.mount → /etc/systemd/system/mnt-vpsie33.mount.
+ systemctl start mnt-vpsie33.mount
A dependency job for mnt-vpsie33.mount failed. See 'journalctl -xe' for details.
これを行う方法はありますか?