linuxOS_AP06/device/rockchip/common/scripts/check-debian.sh
2025-06-03 12:28:32 +08:00

107 lines
3.4 KiB
Bash
Executable File

#!/bin/bash -e
RK_SCRIPTS_DIR="${RK_SCRIPTS_DIR:-$(dirname "$(realpath "$0")")}"
RK_SDK_DIR="${RK_SDK_DIR:-$(realpath "$RK_SCRIPTS_DIR/../../../..")}"
RK_TOOLS_DIR="${RK_TOOLS_DIR:-$(realpath "$RK_SCRIPTS_DIR/../tools")}"
RK_DEBIAN_ARCH="${RK_DEBIAN_ARCH:-arm64}"
RK_DEBIAN_VERSION="${RK_DEBIAN_VERSION:-bookworm}"
if ! ls $RK_SDK_DIR/debian/ubuntu-build-service/$RK_DEBIAN_VERSION-desktop-$RK_DEBIAN_ARCH >/dev/null 2>&1; then
echo -e "\e[35m"
echo "Current SDK doesn't support Debian($RK_DEBIAN_VERSION) for $RK_DEBIAN_ARCH"
echo "Please try other Debian version."
echo -e "\e[0m"
exit 1
fi
if findmnt -fnu -o OPTIONS -T "$RK_SCRIPTS_DIR" | grep -qE "nodev"; then
echo -e "\e[35m"
echo "Please remount to allow creating devices on the filesystem:"
echo "sudo mount -o remount,dev $(findmnt -fnu -o TARGET -T "$RK_SCRIPTS_DIR")"
echo -e "\e[0m"
exit 1
fi
# The -d option is required to pack Debian rootfs
if ! mke2fs -h 2>&1 | grep -wq "\-d"; then
echo -e "\e[35m"
echo "Your mke2fs is too old: $(mke2fs -V 2>&1 | head -n 1)"
echo "Please update it:"
"$RK_SCRIPTS_DIR/install-e2fsprogs.sh"
echo -e "\e[0m"
exit 1
fi
if [ ! -e "/usr/share/live/build/data/debian-cd/$RK_DEBIAN_VERSION" ]; then
echo -e "\e[35m"
echo "Your live-build doesn't support $RK_DEBIAN_VERSION"
echo "Please replace it:"
echo "sudo apt-get remove live-build"
echo "git clone https://salsa.debian.org/live-team/live-build.git --depth 1 -b debian/1%20230131"
echo "cd live-build"
echo "rm -rf manpages/po/"
echo "sudo make install -j8"
echo -e "\e[0m"
exit 1
fi
"$RK_SCRIPTS_DIR/check-package.sh" debootstrap
if [ ! -e "/usr/share/debootstrap/scripts/$RK_DEBIAN_VERSION" ]; then
echo -e "\e[35m"
echo "Your debootstrap doesn't support $RK_DEBIAN_VERSION"
echo "Please replace it:"
echo "sudo apt-get remove debootstrap"
echo "git clone https://salsa.debian.org/installer-team/debootstrap.git --depth 1 -b debian/1.0.123+deb11u2"
echo "cd debootstrap"
echo "sudo make install -j8"
echo -e "\e[0m"
exit 1
fi
case "$RK_DEBIAN_ARCH" in
arm64) QEMU_ARCH=aarch64 ;;
armhf) QEMU_ARCH=arm ;;
*)
echo -e "\e[35m"
echo "Unknown arch(RK_DEBIAN_ARCH): $RK_DEBIAN_ARCH!"
echo -e "\e[0m"
exit 1 ;;
esac
"$RK_SCRIPTS_DIR/check-package.sh" "qemu-$QEMU_ARCH-static(qemu-user-static)" \
qemu-$QEMU_ARCH-static qemu-user-static
if ! [ -r /proc/sys/fs/binfmt_misc/qemu-$QEMU_ARCH ]; then
echo -e "\e[35m"
echo "Your qemu-$QEMU_ARCH-static(qemu-user-static) is broken"
echo "Please reinstall it:"
echo "sudo apt-get install binfmt-support qemu-user-static --reinstall"
echo -e "\e[0m"
exit 1
fi
LDCONFIG="$RK_TOOLS_DIR/../tests/debian/$RK_DEBIAN_VERSION/$QEMU_ARCH/ldconfig"
if [ -e "$LDCONFIG" ] && ! "$LDCONFIG" --version >/dev/null 2>&1; then
echo -e "\e[35m"
echo "Your qemu-$QEMU_ARCH doesn't work with Debian($RK_DEBIAN_VERSION)!"
echo "Please replace it with qemu-8.0:"
if [ "$(uname -m)" = x86_64 ]; then
echo "sudo rm -f /usr/bin/qemu-$QEMU_ARCH-static"
echo "# Extracted from qemu-user-static_8.0.3+dfsg-4_amd64.deb"
echo "sudo cp $RK_TOOLS_DIR/x86_64/qemu-$QEMU_ARCH-static /usr/bin/"
echo "sudo reboot # Reboot to register the new qemu."
else
echo "https://www.qemu.org/download/"
fi
echo "# NOTE: If it is running in Docker, do it in the host!"
echo -e "\e[0m"
exit 1
fi
# Verify the mirror source
if [ "$RK_DEBIAN_MIRROR" ]; then
"$RK_SCRIPTS_DIR/check-network.sh" "$RK_DEBIAN_MIRROR" \
"the Debian mirror source:\n$RK_DEBIAN_MIRROR"
fi