I had to create a base Docker image from OrangePI 5 OS so that some applications which are dependant on system libraries (libmali and platform gstreamer hw accelerator libs) could be built and ran on OS.
First we need to obtain OS image which at my time of downloading was called `Opios-arch-aarch64-gnome-opi5-23.04.1-linux5.10.110.img`
Once image is downloaded, we need to expose it as loopback device and then mount it locally at some folder.
# Create Loopback device
sudo kpartx -a Orangepi5_1.1.6_debian_bookworm_server_linux5.10.110.img
# Check that loopback device is created.
losetup -a|grep Orangepi5_1.1.6_debian_bookworm_server_linux5.10.110.img
mkdir builddir
cd builddir
# Create directories for 2 partitions exposed by our loopback device
mkdir p1 p2 &>/dev/null # ignore output
loopdev="$(losetup -a|grep Orangepi5_1.1.6_debian_bookworm_server_linux5.10.110.img |cut -d':' -f1|cut -d'/' -f3)"
loopdevp1="/dev/mapper/$loopdev"p1
loopdevp2="/dev/mapper/$loopdev"p2
# Mount partitions
sudo mount $loopdevp1 p1
sudo mount $loopdevp2 p2
# Construct dockerfile
cat <<EOF > Dockerfile
FROM scratch
# Copy rootfs into docker
ADD p2/ /
CMD ["/bin/bash"]
EOF
# Run docker
sudo docker build -t baseimage .