-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimage-mount.sh
More file actions
executable file
·55 lines (43 loc) · 1.33 KB
/
image-mount.sh
File metadata and controls
executable file
·55 lines (43 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/env bash
while [[ $# -gt 0 ]]
do
i="$1"
case $i in
-i|--image)
IMAGE="$2"
shift # past argument
shift # past value
;;
*)
shift # past argument
;;
esac
done
if [ -z $IMAGE ];
then
echo "Error: Image is not specified"
echo "Usage: ${0##*/} -i ubuntu-22.04-minimal-cloudimg-amd64.img"
exit 1
fi
umount_timeout=10
mountpoint=${IMAGE##*/}
mountpoint=/mnt/${mountpoint%.*}
export LIBGUESTFS_BACKEND=direct
mkdir -p ${mountpoint} > /dev/null 2>&1
echo "Ensure mount point is unmounted: ${mountpoint}"
for i in {1..2};
do
timeout $umount_timeout umount -f ${mountpoint}/sys > /dev/null 2>&1;
timeout $umount_timeout umount -f ${mountpoint}/dev/pts > /dev/null 2>&1;
timeout $umount_timeout umount -f ${mountpoint}/dev > /dev/null 2>&1;
timeout $umount_timeout umount -f ${mountpoint}/proc > /dev/null 2>&1;
timeout $umount_timeout umount -f ${mountpoint} > /dev/null 2>&1;
timeout $umount_timeout guestunmount ${mountpoint} > /dev/null 2>&1;
done
echo "Mount image $IMAGE at ${mountpoint} ..."
guestmount -a $IMAGE -i --rw ${mountpoint}
mount --bind /sys ${mountpoint}/sys
mount --bind /dev ${mountpoint}/dev
mount --bind /dev/pts ${mountpoint}/dev/pts
mount --bind /proc ${mountpoint}/proc
echo "Image is mounted"