mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-12-08 00:00:12 +03:00
Add a shell script version of mount.bcachefs
Sadly, some people are still running distributions too old to properly support rust :( In the long term we'd like to use Rust for more of userspace (and potentially in the kernel); this is just a stopgap measure.
This commit is contained in:
parent
da730dc67c
commit
487ddeb03c
1
Makefile
1
Makefile
@ -127,6 +127,7 @@ install: bcachefs
|
|||||||
$(INSTALL) -m0644 -D bcachefs.8 -t $(DESTDIR)$(PREFIX)/share/man/man8/
|
$(INSTALL) -m0644 -D bcachefs.8 -t $(DESTDIR)$(PREFIX)/share/man/man8/
|
||||||
$(INSTALL) -m0755 -D initramfs/script $(DESTDIR)$(INITRAMFS_SCRIPT)
|
$(INSTALL) -m0755 -D initramfs/script $(DESTDIR)$(INITRAMFS_SCRIPT)
|
||||||
$(INSTALL) -m0755 -D initramfs/hook $(DESTDIR)$(INITRAMFS_HOOK)
|
$(INSTALL) -m0755 -D initramfs/hook $(DESTDIR)$(INITRAMFS_HOOK)
|
||||||
|
$(INSTALL) -m0755 -D mount.bcachefs.sh $(DESTDIR)$(ROOT_SBINDIR)
|
||||||
sed -i '/^# Note: make install replaces/,$$d' $(DESTDIR)$(INITRAMFS_HOOK)
|
sed -i '/^# Note: make install replaces/,$$d' $(DESTDIR)$(INITRAMFS_HOOK)
|
||||||
echo "copy_exec $(ROOT_SBINDIR)/bcachefs /sbin/bcachefs" >> $(DESTDIR)$(INITRAMFS_HOOK)
|
echo "copy_exec $(ROOT_SBINDIR)/bcachefs /sbin/bcachefs" >> $(DESTDIR)$(INITRAMFS_HOOK)
|
||||||
|
|
||||||
|
|||||||
50
mount.bcachefs.sh
Executable file
50
mount.bcachefs.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
join_by()
|
||||||
|
{
|
||||||
|
local IFS="$1"
|
||||||
|
shift
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
args=$(getopt -u -o 'sfnvo:t:N:' -n 'mount.bcachefs' -- "$@")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo 'Terminating...' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -r -a argv <<< "$args"
|
||||||
|
|
||||||
|
for i in ${!argv[@]}; do
|
||||||
|
[[ ${argv[$i]} == '--' ]] && break
|
||||||
|
done
|
||||||
|
|
||||||
|
i=$((i+1))
|
||||||
|
|
||||||
|
if [[ $((i + 2)) < ${#argv[@]} ]]; then
|
||||||
|
echo "Insufficient arguments"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
UUID=${argv[$i]}
|
||||||
|
|
||||||
|
if [[ ${UUID//-/} =~ ^[[:xdigit:]]{32}$ ]]; then
|
||||||
|
PARTS=()
|
||||||
|
|
||||||
|
for part in $(tail -n +3 /proc/partitions|awk '{print $4}'); do
|
||||||
|
uuid_line=$(bcachefs show-super /dev/$part|& head -n1)
|
||||||
|
|
||||||
|
if [[ $uuid_line =~ $UUID ]]; then
|
||||||
|
PARTS+=(/dev/$part)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ${#PARTS[@]} == 0 ]]; then
|
||||||
|
echo "uuid $UUID not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
argv[$i]=$(join_by : "${PARTS[@]}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec mount -i -t bcachefs ${argv[@]}
|
||||||
Loading…
x
Reference in New Issue
Block a user