forked from sean-liang/PHICOMM-N1-OpenWRT-Image-Builder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
executable file
·100 lines (78 loc) · 2.1 KB
/
build.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
WORK_DIR=$PWD
read_variable()
{
read -e -p "$1: " -i "$2" INPUT_VAR
}
mount_image()
{
LOOP_DEV="$(losetup -P -f --show $1)"
mount "$LOOP_DEV"p2 $IMAGE_WORK_PATH
}
umount_image()
{
umount $IMAGE_WORK_PATH
losetup -d $LOOP_DEV
}
cleanup()
{
echo "Cleanup."
rm -f $OPENWRT_WORK_IMG
rm -f $ARMBIAN_WORK_IMG
rm -rf $OPENWRT_WORK_PATH
rm -rf $IMAGE_WORK_PATH
}
read_variable "Enter OpenWRT image path" "./openwrt.img"
OPENWRT_IMG="$INPUT_VAR"
read_variable "Enter Armbian image path" "./armbian.img"
ARMBIAN_IMG="$INPUT_VAR"
echo "OpenWRT Image: $OPENWRT_IMG"
echo "Armbian Image: $ARMBIAN_IMG"
OPENWRT_WORK_IMG="$OPENWRT_IMG".tmp
ARMBIAN_WORK_IMG="$ARMBIAN_IMG".tmp
OPENWRT_WORK_PATH="$WORK_DIR"/openwrt
IMAGE_WORK_PATH="$WORK_DIR"/image
cleanup
echo "Create work images."
cp $OPENWRT_IMG $OPENWRT_WORK_IMG
cp $ARMBIAN_IMG $ARMBIAN_WORK_IMG
echo "Create work directories."
mkdir -p $OPENWRT_WORK_PATH
mkdir -p $IMAGE_WORK_PATH
echo "Copy files from OpenWRT image."
mount_image $OPENWRT_WORK_IMG
mv "$IMAGE_WORK_PATH"/* $OPENWRT_WORK_PATH
rm -rf "$OPENWRT_WORK_PATH"/lib/firmware
rm -rf "$OPENWRT_WORK_PATH"/lib/modules
umount_image $OPENWRT_IMG
echo "Copy files from Armbian image."
mount_image $ARMBIAN_WORK_IMG
mv "$IMAGE_WORK_PATH"/lib/modules "$OPENWRT_WORK_PATH"/lib/
mv "$IMAGE_WORK_PATH"/lib/firmware "$OPENWRT_WORK_PATH"/lib/
mv "$IMAGE_WORK_PATH"/etc/modprobe.d "$OPENWRT_WORK_PATH"/etc/
mv "$IMAGE_WORK_PATH"/etc/fstab "$OPENWRT_WORK_PATH"/etc
for d in `find "$OPENWRT_WORK_PATH"/lib/modules/* -maxdepth 0 -type d`
do
echo "Link modules in $d."
cd $d
for x in `find -name *.ko`
do
ln -s $x .
done
done
cd $WORK_DIR
echo "Modify boot script."
sed -i '39iulimit -n 51200' "$OPENWRT_WORK_PATH"/etc/init.d/boot
echo "Copy defaut configs."
rsync -a "$WORK_DIR"/files/ $OPENWRT_WORK_PATH
echo "Create firmware image."
rm -rf "$IMAGE_WORK_PATH"/*
mv "$OPENWRT_WORK_PATH"/* $IMAGE_WORK_PATH
sync
umount_image $ARMBIAN_WORK_IMG
echo "Compress firmware image."
mv $ARMBIAN_WORK_IMG n1-firmware.img
rm -f n1-firmware.img.gz
gzip n1-firmware.img
cleanup
echo "All done. Firmware Image: n1-firmware.img.gz"