-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqcow2-to-liveos.sh
executable file
·54 lines (41 loc) · 1.18 KB
/
qcow2-to-liveos.sh
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
#!/bin/bash
TMPSTORE=/tmp/store
ROOTIMG_DIR=/mnt/rootimg
ROOT_DIR=/mnt/myroot
mkdir -p $TMPSTORE
mkdir -p $ROOT_DIR
sudo rm -rf $TMPSTORE/*
if lsblk | grep -q nbd1; then
echo "Cleaning up existing /dev/nbd1 connection..."
sudo qemu-nbd --disconnect /dev/nbd1
fi
# Cleanup
#
sudo umount -l /dev/nbd*
sudo qemu-nbd --disconnect /dev/nbd1
sudo qemu-nbd --disconnect /dev/nbd0
# Mounting the rootfs
sudo modprobe nbd max_part=16
sudo qemu-nbd --connect=/dev/nbd1 custom.qcow2
sudo mount /dev/nbd1p3 $ROOT_DIR
ROOTFS_DEVICE=/dev/nbd1
# Creating the squash FS
cd $TMPSTORE
dir_size=$(sudo du -sm $ROOT_DIR | awk '{print $1}')
img_size=$((dir_size + 200))
dd if=/dev/zero of=rootfs.img bs=1M count=$img_size
mkfs.ext4 rootfs.img
sudo e2label rootfs.img "Anaconda"
sudo mkdir -p $ROOTIMG_DIR
sudo mount -o loop rootfs.img $ROOTIMG_DIR
sudo cp -a $ROOT_DIR/* $ROOTIMG_DIR
sudo umount $ROOTIMG_DIR
mkdir -p LiveOS
mv rootfs.img LiveOS/
mksquashfs LiveOS custom_root.squashfs -comp xz
# Copying the vmlinuz and initramfs
cp $ROOT_DIR/boot/vmlinuz-* $TMPSTORE
cp $ROOT_DIR/boot/initramfs-*.img $TMPSTORE
sudo umount -l /dev/nbd*
sudo qemu-nbd --disconnect /dev/nbd1
sudo qemu-nbd --disconnect /dev/nbd0