次の行:
/path1 /path2 posixovl none 0 0
エラーが原因で失敗します。
/sbin/mount.posixovl: invalid option -- 'o'
Usage: /sbin/mount.posixovl [-F] [-S source] mountpoint [-- fuseoptions]
これは、mount.posixovl
非標準のインストール構文が使用され、デフォルトのfstab
インストール構文がそれを呼び出すと仮定するためです。
mount.posixovl /path1 /path2 -o [whatsoever_/etc/fstab_options]
編集#1: 同じ問題は、このlinuxquestions.org Q&Aで次のような醜いハッキングで解決されました。[解決済み] 起動時に Fuse-posixovl パーティションをどのようにインストールしますか?
答え1
ラッパースクリプトを共有してくれたvehystrixに感謝します。私は最近、これをユーザーの家にディレクトリをマウントするために使用しました。あなたのスクリプトで改善したい2つの問題を見つけました。
- ネイティブ
mont.posixovl
バイナリの名前を変更すると、ディストリビューションのパッケージマネージャが新しいアップデートをインストールすると実行が停止することがあります。 - 元のバージョンは
mount.posixovl
常にルートで始まり、インストールオプションを無視しているようuid=
ですgid=
。これにより、ファイルシステムをマウントしたユーザーがファイルシステムにアクセスできなくなります。
スクリプトを少し変更して(Ubuntuパッケージ名に基づいて)に保存して、/sbin/mount.fuse-posixovl
fstabの型を使用してfuse-posixovl
インストールできました。
以下はスクリプトの修正版です。
#!/bin/bash
# wrapper for mount.posixovl to conform with common mount syntax
# with this wrapper posixovl can be used in fstab
# location of the original mount.posixovl
origposixovl="/sbin/mount.posixovl"
# gather inputs
while [ $# -gt 0 ]; do
if [[ "$1" == -* ]]; then
# var is an input switch
# we can only use the -o or -F switches
if [[ "$1" == *F* ]]; then
optsF="-F"
else
optsF=""
fi
if [[ "$1" == *o* ]]; then
shift
if [[ "$1" == *uid=* ]]; then
runas=$(getent passwd $(echo "$1" | sed -E -e 's/^.*uid=([^,]+)(,.*)?$/\1/') | cut -d: -f1)
fi
optsfuse="-- -o $1"
else
optsfuse=""
fi
shift
else
# var is a main argument
sourcedir="$1"
shift
if [[ "$1" != -* ]]; then
targetdir="$1"
shift
else
targetdir="$sourcedir"
fi
fi
done
# verify inputs
if [ "$sourcedir" == "" ]; then
echo "no source specified"
exit 1
fi
if [ "$targetdir" == "" ]; then
echo "no target specified"
exit 1
fi
# build mount.posixovl command
if [[ -n "$runas" ]]; then
su - "${runas}" -c "\"$origposixovl\" $optsF -S \"$sourcedir\" \"$targetdir\" $optsfuse"
else
"$origposixovl" $optsF -S "$sourcedir" "$targetdir" $optsfuse
fi
以下は、これを使用するfstab行の例です。
/home/myuser/Nextcloud/homebin /home/myuser/bin fuse-posixovl uid=1000,gid=1000 0 0
答え2
mount.posixovl
私はこれを使用できるようにラッパーを作成しました。fstab
まず、次/sbin/mount.posixovl
のような別の名前に名前を変更します。/sbin/mount.posixovl.orig
/sbin/mount.posixovl
最後に、次の内容で新しいファイルを作成します。
#!/bin/bash
# wrapper for mount.posixovl to conform with common mount syntax
# with this wrapper posixovl can be used in fstab
# location of the original mount.posixovl
origposixovl="/sbin/mount.posixovl.orig"
# gather inputs
while [ $# -gt 0 ]; do
if [[ "$1" == -* ]]; then
# var is an input switch
# we can only use the -o or -F switches
if [[ "$1" == *F* ]]; then
optsF="-F"
else
optsF=""
fi
if [[ "$1" == *o* ]]; then
shift
optsfuse="-- -o $1"
else
optsfuse=""
fi
shift
else
# var is a main argument
sourcedir="$1"
shift
if [[ "$1" != -* ]]; then
targetdir="$1"
shift
else
targetdir="$sourcedir"
fi
fi
done
# verify inputs
if [ "$sourcedir" == "" ]; then
echo "no source specified"
exit 1
fi
if [ "$targetdir" == "" ]; then
echo "no target specified"
exit 1
fi
# build mount.posixovl command
"$origposixovl" $optsF -S "$sourcedir" "$targetdir" $optsfuse
もちろん、新しく生成されたものを/sbin/mount.posixovl
実行ファイル(chmod +x /sbin/mount.posixovl
)に設定してください。
posixovl
取り付けスロットが便利です。fstab