forked from mahalia-dependencies/mahalia-dependencies
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild_image.sh
executable file
·62 lines (55 loc) · 1.51 KB
/
build_image.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
55
56
57
58
59
60
61
62
#!/bin/bash -ex
mhamakedeb mahalia-dependencies.csv $(cat version) all
sudo rm -rf /opt/multistrap/
sudo multistrap -f multistrap-base.conf
sudo cp preseed.conf configure_packages *.deb /opt/multistrap/
sudo chroot /opt/multistrap/ /configure_packages
sudo chroot /opt/multistrap dpkg -i *.deb
sudo rm /opt/multistrap/*.deb /opt/multistrap/preseed.conf /opt/multistrap/configure_packages
IMAGE=$PWD/mahalia_$(cat version).img
BOOTSIZE=$(( $(sudo du -ms /opt/multistrap/boot/ | cut -f 1) * 3 + 50 ))
TOTALSIZE=$(( $(sudo du -ms /opt/multistrap/ | cut -f 1) - $(sudo du -ms /opt/multistrap/boot/ | cut -f 1) + $BOOTSIZE + 3600))
# create blank sd card image
sudo dd if=/dev/zero of=$IMAGE bs=1M count=$TOTALSIZE
# Create partitions
sudo fdisk $IMAGE <<EOF
n
p
1
2048
+${BOOTSIZE}M
t
c
a
n
p
3
+1G
t
3
c
n
p
2
w
EOF
# Mount and format partitions
DEVICE=`sudo kpartx -a -v $IMAGE | sed -E 's/.*(loop[0-9]*)p.*/\1/g' | head -1`
sudo mkfs.vfat "/dev/mapper/$DEVICE"p1
sudo mkfs.ext4 "/dev/mapper/$DEVICE"p2
sudo mkfs.vfat "/dev/mapper/$DEVICE"p3
sudo mkdir -p /mahalia
sudo mount "/dev/mapper/$DEVICE"p2 /mahalia
sudo mkdir -p /mahalia/boot
sudo mount "/dev/mapper/$DEVICE"p1 /mahalia/boot
sudo mkdir -p /mahalia/configuration
sudo mount "/dev/mapper/$DEVICE"p3 /mahalia/configuration
# Copy content and unmount
sudo rsync -a /opt/multistrap/ /mahalia/ || true
sudo umount "/dev/mapper/$DEVICE"p1
sudo umount "/dev/mapper/$DEVICE"p3
sudo umount "/dev/mapper/$DEVICE"p2
sudo kpartx -d $IMAGE
gzip -9 $IMAGE
mkdir -p image
mv $IMAGE.gz image