mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-09-19 22:54:52 +00:00
Adding losetup utility package to core pkg
Signed-off-by: Christian Wuerdig <christian.wuerdig@gmail.com>
This commit is contained in:
committed by
Christian Wuerdig
parent
3f164b3648
commit
8cd16c4904
18
pkg/losetup/Dockerfile
Normal file
18
pkg/losetup/Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
||||
FROM linuxkit/alpine:3683c9a66cd4da40bd7d6c7da599b2dcd738b559 AS mirror
|
||||
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/
|
||||
RUN apk add --no-cache --initdb -p /out \
|
||||
alpine-baselayout \
|
||||
busybox
|
||||
|
||||
# Remove apk residuals
|
||||
RUN rm -rf /out/etc/apk /out/lib/apk /out/var/cache
|
||||
|
||||
FROM scratch
|
||||
ENTRYPOINT []
|
||||
WORKDIR /
|
||||
COPY --from=mirror /out/ /
|
||||
|
||||
COPY loopy.sh /usr/bin/loopy
|
||||
RUN chmod +x /usr/bin/loopy
|
||||
|
||||
CMD ["/usr/bin/loopy"]
|
7
pkg/losetup/build.yml
Normal file
7
pkg/losetup/build.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
image: losetup
|
||||
config:
|
||||
binds:
|
||||
- /dev:/dev
|
||||
- /var:/var
|
||||
capabilities:
|
||||
- CAP_SYS_ADMIN
|
57
pkg/losetup/loopy.sh
Normal file
57
pkg/losetup/loopy.sh
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
help()
|
||||
{
|
||||
echo "Usage: $0 [options] <file>"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --create Create <file> if not present, default: false"
|
||||
echo " -s, --size NUM Size of <file> in MiB if it gets created, default: 10"
|
||||
echo " -d, --dev DEVICE Use DEVICE as loop device, default: /dev/loop0"
|
||||
echo
|
||||
}
|
||||
|
||||
create=false
|
||||
size_mib=10
|
||||
loop_device="/dev/loop0"
|
||||
|
||||
O=`getopt -l create,size:,dev:,help -- cs:d:h "$@"` || exit 1
|
||||
eval set -- "$O"
|
||||
while true; do
|
||||
case "$1" in
|
||||
-c|--create) create=true; shift;;
|
||||
-s|--size) size_mib=$2; shift 2;;
|
||||
-d|--dev) loop_device=$2; shift 2;;
|
||||
-h|--help) help; exit 0;;
|
||||
--) shift; break;;
|
||||
*) echo "Unknown option $1"; help; exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Missing argument <file>"
|
||||
help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
container_file=$1
|
||||
|
||||
if [ ! -b "$loop_device" ]; then
|
||||
echo "Loop device $loop_device doesn't exist! Did you forget to bind-mount '/dev'?"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ ! -f "$container_file" ]; then
|
||||
if [ $create = true ]; then
|
||||
echo "File $container_file not found, creating new one of size $size_mib MiB"
|
||||
dd if="/dev/zero" of="$container_file" bs=1M count=$size_mib
|
||||
else
|
||||
echo "File $container_file not found. Please specify --create or ensure it's present."
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Associating file $container_file with loop device $loop_device"
|
||||
losetup "$loop_device" "$container_file"
|
Reference in New Issue
Block a user