fix: move firmware extraction to docker

This should fix https://github.com/riptidewave93/UNVR-NAS/issues/13 and make building easier across different systems.
This commit is contained in:
Chris Blake 2024-06-19 15:12:13 -05:00
parent 6f01afd72b
commit d1aaa4bccd
4 changed files with 19 additions and 7 deletions

View file

@ -45,6 +45,7 @@ RUN apt-get update && apt-get install -yq \
qemu-utils \
qemu-user-static \
rsync \
squashfs-tools \
swig \
u-boot-tools \
unzip \

View file

@ -14,13 +14,6 @@ else
mkdir ${build_path}
fi
# Extract the goodies
${scripts_path}/ubnt-fw-parse.py "${root_path}/unifi-firmware/${firmware_filename}" "${build_path}/fw-extract/${firmware_filename%.bin}"
# Extract the squashfs rootfs
echo "Extracting unifi rootfs as root..."
sudo unsquashfs -f -d "${build_path}/fw-extract/${BOARD}-rootfs" "${build_path}/fw-extract/${firmware_filename%.bin}/rootfs.bin"
# Always build to pickup changes/updates/improvements
debug_msg "Building ${docker_tag}"
docker build -t ${docker_tag} ${root_path}

View file

@ -14,6 +14,10 @@ if [ ! -d ${build_path}/toolchain ]; then
tar -xf ${root_path}/downloads/${toolchain_filename} -C ${build_path}/toolchain
fi
# Do our firmware extraction
debug_msg "Docker: Extracting Firmware..."
docker run --ulimit nofile=1024 --rm -v "${root_path}:/repo:Z" -e BOARD="${BOARD}" -it ${docker_tag} /repo/scripts/docker/extract_firmware.sh
if [ ! -d ${build_path}/kernel ]; then
debug_msg "Docker: Building Kernel..."
docker run --ulimit nofile=1024 --rm -v "${root_path}:/repo:Z" -it ${docker_tag} /repo/scripts/docker/build_kernel.sh

View file

@ -0,0 +1,14 @@
#!/bin/bash
set -e
scripts_path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )"
. ${scripts_path}/vars.sh
# Extract the goodies
${scripts_path}/ubnt-fw-parse.py "${root_path}/unifi-firmware/${firmware_filename}" "${build_path}/fw-extract/${firmware_filename%.bin}"
# Extract the squashfs rootfs
if ! [ -d "${build_path}/fw-extract/${BOARD}-rootfs" ]; then
echo "Extracting unifi rootfs as root..."
unsquashfs -f -d "${build_path}/fw-extract/${BOARD}-rootfs" "${build_path}/fw-extract/${firmware_filename%.bin}/rootfs.bin"
fi