aboutsummaryrefslogtreecommitdiff
path: root/arch-binfmt
diff options
context:
space:
mode:
authorSébastien Luttringer <seblu@seblu.net>2012-03-13 23:43:45 +0100
committerSébastien Luttringer <seblu@seblu.net>2012-03-13 23:43:45 +0100
commite10b98ba9374c145df0719bb2e9c7fe0d4b614ea (patch)
treebc8a2ddcdf65f78fc5c546c62bc0922308505fcd /arch-binfmt
parentb49cc7be1be791318f57d2941999368ae58636b7 (diff)
downloadinitscripts-e10b98ba9374c145df0719bb2e9c7fe0d4b614ea.tar.xz
arch-binfmt: move api filesytem mounting from rc.sysinit
this will avoid filesytem to be mounted at every startup if not binfmt is used Signed-off-by: Sébastien Luttringer <seblu@seblu.net>
Diffstat (limited to 'arch-binfmt')
-rwxr-xr-xarch-binfmt31
1 files changed, 20 insertions, 11 deletions
diff --git a/arch-binfmt b/arch-binfmt
index 6931843..91468ef 100755
--- a/arch-binfmt
+++ b/arch-binfmt
@@ -7,20 +7,29 @@
shopt -s nullglob
-declare -a binfmt_d=(
- /usr/lib/binfmt.d/*.conf
- /etc/binfmt.d/*.conf
- /run/binfmt.d/*.conf
-)
-declare -A fragments
+declare -a binfmt_d
+# files given has argv supersede config files
+if (( $# > 0 )); then
+ for arg; do [[ -r "$arg" ]] && binfmt_d+=("$arg"); done
+else
+ binfmt_d=(
+ /usr/lib/binfmt.d/*.conf
+ /etc/binfmt.d/*.conf
+ /run/binfmt.d/*.conf
+ )
+fi
+
+# check there is file to load
+(( ${#binfmt_d[@]} > 0 )) || exit 1
-# check binfmt_misc filesystem is mounted
+# mount binfmt_misc if api filesystem is missing
mountpoint -q /proc/sys/fs/binfmt_misc ||
- { echo "/proc/sys/fs/binfmt_misc is not mounted"; exit 1;}
+ mount -t binfmt_misc binfmt /proc/sys/fs/binfmt_misc
-# files declared later in the sysctl_d array will override earlier
-# Example: `/etc/sysctl.d/foo.conf' supersedes `/usr/lib/sysctl.d/foo.conf'.
-for path in "${@:-${binfmt_d[@]}}"; do
+# files declared later in the binfmt_d array will override earlier
+# Example: `/etc/binfmt.d/foo.conf' supersedes `/usr/lib/binfmt.d/foo.conf'.
+declare -A fragments
+for path in "${binfmt_d[@]}"; do
[[ -f $path ]] && fragments[${path##*/}]=$path
done