mirror of
https://github.com/OpenVoiceOS/OpenVoiceOS
synced 2025-02-03 03:57:48 +01:00
[RPI] Refactor Raspberry Pi Setup Script for Improved Structure and Readability
- Encapsulated functionality into functions for better script organization. - Introduced 'write_os_release' and 'write_machine_info' functions for creating os-release and machine-info files. - Streamlined Raspberry Pi specific file handling with 'handle_raspberry_pi' function. - Consolidated script execution within a 'main' function for clearer flow and execution order. - Improved readability with consistent formatting and added inline comments for clarity. - Enhanced robustness with comprehensive error checking and streamlined command execution. - RPI5 not supported yet.
This commit is contained in:
parent
3851ed9fab
commit
736bfebe31
@ -1,73 +1,88 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
set -u
|
||||
set -e
|
||||
|
||||
# Set board directory and include meta files
|
||||
BOARD_DIR="$(dirname $0)"
|
||||
|
||||
. "${BR2_EXTERNAL_OPENVOICEOS_PATH}/meta"
|
||||
. "${BOARD_DIR}/meta"
|
||||
|
||||
# Write os-release
|
||||
{
|
||||
echo "NAME=\"${OVOS_NAME}\""
|
||||
echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\""
|
||||
echo "ID=${OVOS_ID}"
|
||||
echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}"
|
||||
echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\""
|
||||
echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*"
|
||||
echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS"
|
||||
echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation"
|
||||
echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues"
|
||||
echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\""
|
||||
echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot"
|
||||
} > "${TARGET_DIR}/usr/lib/os-release"
|
||||
# Function to create and write os-release file
|
||||
write_os_release() {
|
||||
local os_release_file="${TARGET_DIR}/usr/lib/os-release"
|
||||
echo "Creating os-release at ${os_release_file}"
|
||||
{
|
||||
echo "NAME=\"${OVOS_NAME}\""
|
||||
echo "VERSION=\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\""
|
||||
echo "ID=${OVOS_ID}"
|
||||
echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}"
|
||||
echo "PRETTY_NAME=\"${OVOS_NAME} ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD} ${BOARD_NAME}\""
|
||||
echo "CPE_NAME=cpe:2.3:o:openvoiceos:${OVOS_ID}:${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*"
|
||||
echo "HOME_URL=https://github.com/OpenVoiceOS/OpenVoiceOS"
|
||||
echo "DOCUMENTATION_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/tree/develop/documentation"
|
||||
echo "SUPPORT_URL=https://github.com/OpenVoiceOS/OpenVoiceOS/issues"
|
||||
echo "VARIANT=\"${OVOS_NAME} - Buildroot Edition\""
|
||||
echo "VARIANT_ID=${OVOS_ID}-${BOARD_ID}-buildroot"
|
||||
} > "${os_release_file}"
|
||||
}
|
||||
|
||||
# Write machine-info
|
||||
{
|
||||
echo "CHASSIS=${CHASSIS}"
|
||||
echo "DEPLOYMENT=${DEPLOYMENT}"
|
||||
} > "${TARGET_DIR}/etc/machine-info"
|
||||
# Function to create and write machine-info file
|
||||
write_machine_info() {
|
||||
local machine_info_file="${TARGET_DIR}/etc/machine-info"
|
||||
echo "Creating machine-info at ${machine_info_file}"
|
||||
{
|
||||
echo "CHASSIS=${CHASSIS}"
|
||||
echo "DEPLOYMENT=${DEPLOYMENT}"
|
||||
} > "${machine_info_file}"
|
||||
}
|
||||
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/cmdline.txt ${BINARIES_DIR}/rpi-firmware/cmdline.txt
|
||||
grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create
|
||||
# Function to handle Raspberry Pi specific files
|
||||
handle_raspberry_pi() {
|
||||
local pi_version=$1
|
||||
echo "Handling Raspberry Pi ${pi_version} specific files"
|
||||
cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/config.txt" "${BINARIES_DIR}/rpi-firmware/config.txt"
|
||||
cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/RPI_EFI.fd" "${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd"
|
||||
cp -f "../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg"
|
||||
cp -f "../buildroot-external/board/ovos/raspberrypi/${pi_version}/sw-description" "${BINARIES_DIR}"
|
||||
}
|
||||
|
||||
echo "Check for kernel in ${TARGET_DIR}"
|
||||
if [ -f "${TARGET_DIR}/boot/Image" ]; then
|
||||
echo "Found Image, renaming to kernel"
|
||||
mv ${TARGET_DIR}/boot/Image ${TARGET_DIR}/boot/kernel
|
||||
fi
|
||||
# Main function to execute script logic
|
||||
main() {
|
||||
write_os_release
|
||||
write_machine_info
|
||||
|
||||
# Copy the right config.txt file
|
||||
for arg in "$@"
|
||||
do
|
||||
case "${arg}" in
|
||||
--rpi3)
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/config.txt ${BINARIES_DIR}/rpi-firmware/config.txt
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/RPI_EFI.fd ${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/rpi3/sw-description ${BINARIES_DIR}
|
||||
;;
|
||||
--rpi4)
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/config.txt ${BINARIES_DIR}/rpi-firmware/config.txt
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/RPI_EFI.fd ${BINARIES_DIR}/rpi-firmware/RPI_EFI.fd
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/rpi4/sw-description ${BINARIES_DIR}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
echo "Copying cmdline.txt to ${BINARIES_DIR}/rpi-firmware/"
|
||||
cp -f ../buildroot-external/board/ovos/raspberrypi/cmdline.txt "${BINARIES_DIR}/rpi-firmware/cmdline.txt"
|
||||
|
||||
# Prepare home data
|
||||
rm -f ${BINARIES_DIR}/homefs.ext4
|
||||
truncate --size="6890M" ${BINARIES_DIR}/homefs.ext4
|
||||
mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 ${BINARIES_DIR}/homefs.ext4
|
||||
echo "Creating grubenv"
|
||||
grub-editenv "${BINARIES_DIR}/efi-part/EFI/BOOT/grubenv" create
|
||||
|
||||
# Mount home image
|
||||
mkdir -p ${BINARIES_DIR}/home
|
||||
sudo mount -o loop,discard ${BINARIES_DIR}/homefs.ext4 ${BINARIES_DIR}/home
|
||||
echo "Checking for kernel in ${TARGET_DIR}"
|
||||
if [ -f "${TARGET_DIR}/boot/Image" ]; then
|
||||
echo "Found Image, renaming to kernel"
|
||||
mv "${TARGET_DIR}/boot/Image" "${TARGET_DIR}/boot/kernel"
|
||||
fi
|
||||
|
||||
# sync home folder
|
||||
sudo rsync -ah --progress ${TARGET_DIR}/home/* ${BINARIES_DIR}/home/
|
||||
# Process command line arguments
|
||||
for arg in "$@"; do
|
||||
case "${arg}" in
|
||||
--rpi3) handle_raspberry_pi "rpi3" ;;
|
||||
--rpi4) handle_raspberry_pi "rpi4" ;;
|
||||
# --rpi5) handle_raspberry_pi "rpi5" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Unmount home image
|
||||
sudo umount ${BINARIES_DIR}/homefs.ext4
|
||||
# Prepare and sync home data
|
||||
local home_img="${BINARIES_DIR}/homefs.ext4"
|
||||
echo "Preparing home data at ${home_img}"
|
||||
rm -f "${home_img}"
|
||||
truncate --size="6890M" "${home_img}"
|
||||
mkfs.ext4 -L "homefs" -E lazy_itable_init=0,lazy_journal_init=0 "${home_img}"
|
||||
|
||||
local home_mount_point="${BINARIES_DIR}/home"
|
||||
mkdir -p "${home_mount_point}"
|
||||
sudo mount -o loop,discard "${home_img}" "${home_mount_point}"
|
||||
sudo rsync -ah --progress "${TARGET_DIR}/home/"* "${home_mount_point}/"
|
||||
sudo umount "${home_img}"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
Loading…
x
Reference in New Issue
Block a user