-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathdfu-image-install.sh
executable file
·68 lines (46 loc) · 1.77 KB
/
dfu-image-install.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
#!/bin/bash
. ./functions.sh
TOFLASH="$1"
if [ -z "${TOFLASH}" ]; then
echo "./dfu-image-install.sh /path/to/edison/image/toFlash"
exit 1
fi
RELEASE="$(eh_kernel_release_version)"
FSROOT_IMAGE="${TOFLASH}/edison-image-edison.ext4"
FSBOOT_IMAGE="${TOFLASH}/edison-image-edison.hddimg"
FSROOT_MOUNT="${FSROOT_IMAGE}.mnt"
FSBOOT_MOUNT="${FSBOOT_IMAGE}.mnt"
MODULES="${FSROOT_MOUNT}/lib/modules/${RELEASE}"
BZIMAGE="$(eh_collected_dir)/boot/vmlinuz"
echo "mounting filesystem images"
mkdir -p "${FSROOT_MOUNT}"
mkdir -p "${FSBOOT_MOUNT}"
mount -o loop "${FSROOT_IMAGE}" "${FSROOT_MOUNT}" || exit 1
mount -o loop "${FSBOOT_IMAGE}" "${FSBOOT_MOUNT}" || exit 1
echo "copying kernel modules"
[ -e "${MODULES}" ] && rm -Rf "${MODULES}"
MODCOUNT=0
for KO in `find $(eh_collected_dir)/* -name '*.ko'`; do
D=$(dirname "${KO}")
mkdir -p "${MODULES}/kernel/${D}"
cp "${KO}" "${MODULES}/kernel/${D}"
echo -n .
MODCOUNT=$((${MODCOUNT} + 1))
done
echo
echo "${MODCOUNT} modules copied"
echo "computing module dependencies"
cp edison-linux/modules.* "${MODULES}"
depmod -a -b "${FSROOT_MOUNT}" -F edison-linux/System.map "${RELEASE}"
echo "copying kernel image"
[ -e "${FSROOT_MOUNT}/boot/bzImage-${RELEASE}" ] && rm -Rf "${FSROOT_MOUNT}/boot/bzImage-${RELEASE}"
cp "${BZIMAGE}" "${FSROOT_MOUNT}/boot/bzImage-${RELEASE}"
[ -e "${FSROOT_MOUNT}/boot/bzImage" ] && rm -Rf "${FSROOT_MOUNT}/boot/bzImage"
ln -sf "bzImage-${RELEASE}" "${FSROOT_MOUNT}/boot/bzImage"
[ -e "${FSBOOT_MOUNT}/vmlinuz" ] && rm -Rf "${FSBOOT_MOUNT}/vmlinuz"
cp "${BZIMAGE}" "${FSBOOT_MOUNT}/vmlinuz"
echo "unmounting filesystem images"
while ! umount "${FSBOOT_MOUNT}" > /dev/null 2>&1; do sleep 1; done
while ! umount "${FSROOT_MOUNT}" > /dev/null 2>&1; do sleep 1; done
rmdir "${FSBOOT_MOUNT}"
rmdir "${FSROOT_MOUNT}"