mirror of
https://github.com/DrHo1y/orangepi-build.git
synced 2026-08-27 17:03:18 +07:00
Support Raspberry Pi OS
This commit is contained in:
@@ -347,7 +347,7 @@ fi
|
||||
# "-z ${VAR+x}" allows to check for unset variable
|
||||
# Technically, someone might want to build a desktop with no additional
|
||||
# appgroups.
|
||||
if [[ $BUILD_DESKTOP == "yes" && -z ${DESKTOP_APPGROUPS_SELECTED+x} ]]; then
|
||||
if [[ $BUILD_DESKTOP == "yes" && -z ${DESKTOP_APPGROUPS_SELECTED+x} && ${RELEASE} != "raspi" ]]; then
|
||||
|
||||
options=()
|
||||
for appgroup_path in "${DESKTOP_APPGROUPS_DIR}/"*; do
|
||||
@@ -418,6 +418,8 @@ BOOTCONFIG_VAR_NAME=BOOTCONFIG_${BRANCH^^}
|
||||
|
||||
if [[ "$RELEASE" =~ ^(xenial|bionic|focal|hirsute|impish|jammy)$ ]]; then
|
||||
DISTRIBUTION="Ubuntu"
|
||||
elif [[ "$RELEASE" == raspi ]]; then
|
||||
DISTRIBUTION="Bullseye"
|
||||
else
|
||||
DISTRIBUTION="Debian"
|
||||
fi
|
||||
@@ -575,6 +577,7 @@ unset LOG_OUTPUT_FILE
|
||||
DEBIAN_MIRROR='deb.debian.org/debian'
|
||||
DEBIAN_SECURTY='security.debian.org/'
|
||||
UBUNTU_MIRROR='ports.ubuntu.com/'
|
||||
RASPI_MIRROR='archive.raspberrypi.org/debian/'
|
||||
|
||||
if [[ $DOWNLOAD_MIRROR == "china" ]] ; then
|
||||
|
||||
@@ -590,6 +593,8 @@ if [[ $DOWNLOAD_MIRROR == "china" ]] ; then
|
||||
UBUNTU_MIRROR='repo.huaweicloud.com/ubuntu-ports/'
|
||||
fi
|
||||
|
||||
RASPI_MIRROR='mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/'
|
||||
|
||||
fi
|
||||
|
||||
if [[ $DOWNLOAD_MIRROR == "bfsu" ]] ; then
|
||||
|
||||
@@ -57,24 +57,29 @@ PRE_INSTALL_DISTRIBUTION_SPECIFIC
|
||||
# stage: install kernel and u-boot packages
|
||||
# install distribution and board specific applications
|
||||
|
||||
install_distribution_specific
|
||||
install_common
|
||||
if [[ ${RELEASE} == "raspi" ]]; then
|
||||
install_opi_specific
|
||||
else
|
||||
install_distribution_specific
|
||||
install_common
|
||||
|
||||
# install locally built packages or install pre-built packages from orangepi
|
||||
[[ $EXTERNAL_NEW == compile || $EXTERNAL_NEW == prebuilt ]] && chroot_installpackages_local
|
||||
# install locally built packages or install pre-built packages from orangepi
|
||||
[[ $EXTERNAL_NEW == compile || $EXTERNAL_NEW == prebuilt ]] && chroot_installpackages_local
|
||||
|
||||
#[[ $EXTERNAL_NEW == prebuilt ]] && chroot_installpackages "yes"
|
||||
#[[ $EXTERNAL_NEW == prebuilt ]] && chroot_installpackages "yes"
|
||||
|
||||
# stage: user customization script
|
||||
# NOTE: installing too many packages may fill tmpfs mount
|
||||
customize_image
|
||||
# stage: user customization script
|
||||
# NOTE: installing too many packages may fill tmpfs mount
|
||||
customize_image
|
||||
|
||||
# remove packages that are no longer needed. Since we have intrudoced uninstall feature, we might want to clean things that are no longer needed
|
||||
display_alert "No longer needed packages" "purge" "info"
|
||||
chroot $SDCARD /bin/bash -c "apt-get autoremove -y" >/dev/null 2>&1
|
||||
# remove packages that are no longer needed. Since we have intrudoced uninstall feature, we might want to clean things that are no longer needed
|
||||
display_alert "No longer needed packages" "purge" "info"
|
||||
chroot $SDCARD /bin/bash -c "apt-get autoremove -y" >/dev/null 2>&1
|
||||
|
||||
# create list of installed packages for debug purposes
|
||||
chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > $DEST/${LOG_SUBPATH}/installed-packages-${RELEASE}$([[ ${BUILD_MINIMAL} == yes ]] && echo "-minimal")$([[ ${BUILD_DESKTOP} == yes ]] && echo "-desktop").list 2>&1
|
||||
# create list of installed packages for debug purposes
|
||||
chroot $SDCARD /bin/bash -c "dpkg --get-selections" | grep -v deinstall | awk '{print $1}' | cut -f1 -d':' > $DEST/${LOG_SUBPATH}/installed-packages-${RELEASE}$([[ ${BUILD_MINIMAL} == yes ]] && echo "-minimal")$([[ ${BUILD_DESKTOP} == yes ]] && echo "-desktop").list 2>&1
|
||||
|
||||
fi
|
||||
|
||||
# clean up / prepare for making the image
|
||||
umount_chroot "$SDCARD"
|
||||
@@ -104,6 +109,26 @@ PRE_INSTALL_DISTRIBUTION_SPECIFIC
|
||||
trap - INT TERM EXIT
|
||||
} #############################################################################
|
||||
|
||||
bootstrap(){
|
||||
local BOOTSTRAP_CMD=debootstrap
|
||||
local BOOTSTRAP_ARGS=()
|
||||
|
||||
export CAPSH_ARG="--drop=cap_setfcap"
|
||||
export http_proxy=${APT_PROXY}
|
||||
|
||||
BOOTSTRAP_ARGS+=(--arch arm64)
|
||||
BOOTSTRAP_ARGS+=(--include gnupg)
|
||||
#BOOTSTRAP_ARGS+=(--components "main,contrib,non-free")
|
||||
BOOTSTRAP_ARGS+=(--components "main")
|
||||
BOOTSTRAP_ARGS+=(--exclude=info)
|
||||
BOOTSTRAP_ARGS+=(--include=ca-certificates)
|
||||
BOOTSTRAP_ARGS+=("$@")
|
||||
printf -v BOOTSTRAP_STR '%q ' "${BOOTSTRAP_ARGS[@]}"
|
||||
|
||||
${BOOTSTRAP_CMD} $BOOTSTRAP_STR || true
|
||||
}
|
||||
export -f bootstrap
|
||||
|
||||
# create_rootfs_cache
|
||||
#
|
||||
# unpacks cached rootfs for $RELEASE or creates one
|
||||
@@ -128,6 +153,32 @@ create_rootfs_cache()
|
||||
rm $SDCARD/etc/resolv.conf
|
||||
echo "nameserver $NAMESERVER" >> $SDCARD/etc/resolv.conf
|
||||
create_sources_list "$RELEASE" "$SDCARD/"
|
||||
elif [[ $RELEASE == "raspi" ]]; then
|
||||
display_alert "local not found" "Creating new rootfs cache for $RELEASE" "info"
|
||||
|
||||
cd $SDCARD # this will prevent error sh: 0: getcwd() failed
|
||||
|
||||
bootstrap bullseye "$SDCARD" "https://mirrors.ustc.edu.cn/debian/"
|
||||
|
||||
mount_chroot "$SDCARD"
|
||||
|
||||
display_alert "Diverting" "initctl/start-stop-daemon" "info"
|
||||
# policy-rc.d script prevents starting or reloading services during image creation
|
||||
printf '#!/bin/sh\nexit 101' > $SDCARD/usr/sbin/policy-rc.d
|
||||
LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/initctl" &> /dev/null
|
||||
LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/start-stop-daemon" &> /dev/null
|
||||
printf '#!/bin/sh\necho "Warning: Fake start-stop-daemon called, doing nothing"' > $SDCARD/sbin/start-stop-daemon
|
||||
printf '#!/bin/sh\necho "Warning: Fake initctl called, doing nothing"' > $SDCARD/sbin/initctl
|
||||
chmod 755 $SDCARD/usr/sbin/policy-rc.d
|
||||
chmod 755 $SDCARD/sbin/initctl
|
||||
chmod 755 $SDCARD/sbin/start-stop-daemon
|
||||
|
||||
install_raspi_specific
|
||||
|
||||
umount_chroot "$SDCARD"
|
||||
|
||||
tar cp --xattrs --directory=$SDCARD/ --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \
|
||||
--exclude='./sys/*' . | pv -p -b -r -s $(du -sb $SDCARD/ | cut -f1) -N "$display_name" | lz4 -5 -c > $cache_fname
|
||||
else
|
||||
display_alert "local not found" "Creating new rootfs cache for $RELEASE" "info"
|
||||
|
||||
@@ -153,6 +204,7 @@ create_rootfs_cache()
|
||||
|
||||
display_alert "Installing base system" "Stage 1/2" "info"
|
||||
cd $SDCARD # this will prevent error sh: 0: getcwd() failed
|
||||
|
||||
eval 'debootstrap --variant=minbase --include=${DEBOOTSTRAP_LIST// /,} ${PACKAGE_LIST_EXCLUDE:+ --exclude=${PACKAGE_LIST_EXCLUDE// /,}} \
|
||||
--arch=$ARCH --components=${DEBOOTSTRAP_COMPONENTS} $DEBOOTSTRAP_OPTION --foreign $RELEASE $SDCARD/ $apt_mirror' \
|
||||
${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/${LOG_SUBPATH}/debootstrap.log'} \
|
||||
@@ -753,6 +805,11 @@ create_image()
|
||||
else
|
||||
local version="${BOARD^}_${REVISION}_${DISTRIBUTION,}_${RELEASE}_${IMAGE_TYPE}"${DESKTOP_ENVIRONMENT:+_$DESKTOP_ENVIRONMENT}"_linux$(grab_version "$LINUXSOURCEDIR")"
|
||||
fi
|
||||
|
||||
if [[ ${RELEASE} == "raspi" ]]; then
|
||||
local version="${BOARD^}_${REVISION}_raspios_bullseye_${IMAGE_TYPE}"${DESKTOP_ENVIRONMENT:+_$DESKTOP_ENVIRONMENT}"_linux$(grab_version "$LINUXSOURCEDIR")"
|
||||
fi
|
||||
|
||||
[[ $ROOTFS_TYPE == nfs ]] && version=${version}_nfsboot
|
||||
|
||||
destimg=$DEST/images/${version}
|
||||
|
||||
@@ -820,3 +820,322 @@ It is too late to run any chrooted commands, since the supporting filesystems ar
|
||||
POST_POST_DEBOOTSTRAP_TWEAKS
|
||||
|
||||
}
|
||||
|
||||
on_chroot()
|
||||
{
|
||||
if [ "$SETFCAP" != "1" ]; then
|
||||
export CAPSH_ARG="--drop=cap_setfcap"
|
||||
fi
|
||||
|
||||
capsh $CAPSH_ARG "--chroot=${ROOTFS_DIR}/" -- -e "$@"
|
||||
}
|
||||
export -f on_chroot
|
||||
|
||||
# shellcheck disable=SC2119
|
||||
run_sub_stage()
|
||||
{
|
||||
log "Begin ${SUB_STAGE_DIR}"
|
||||
#pushd "${SUB_STAGE_DIR}" > /dev/null
|
||||
cd ${SUB_STAGE_DIR}
|
||||
|
||||
for i in {00..99}; do
|
||||
if [ -f "${SUB_STAGE_DIR}/${i}-debconf" ]; then
|
||||
display_alert "Begin ${SUB_STAGE_DIR}/${i}-debconf" "" "info"
|
||||
on_chroot << EOF
|
||||
debconf-set-selections <<SELEOF
|
||||
$(cat "${i}-debconf")
|
||||
SELEOF
|
||||
EOF
|
||||
display_alert "End ${SUB_STAGE_DIR}/${i}-debconf" "" "info"
|
||||
fi
|
||||
if [ -f "${SUB_STAGE_DIR}/${i}-packages-nr" ]; then
|
||||
display_alert "Begin ${SUB_STAGE_DIR}/${i}-packages-nr" "" "info"
|
||||
PACKAGES="$(sed -f "${EXTER}/packages/raspi/scripts/remove-comments.sed" < "${SUB_STAGE_DIR}/${i}-packages-nr")"
|
||||
if [ -n "$PACKAGES" ]; then
|
||||
on_chroot << EOF
|
||||
apt-get -o Acquire::Retries=3 install --no-install-recommends -y $PACKAGES
|
||||
EOF
|
||||
fi
|
||||
display_alert "End ${SUB_STAGE_DIR}/${i}-packages-nr" "" "info"
|
||||
fi
|
||||
if [ -f "${SUB_STAGE_DIR}/${i}-packages" ]; then
|
||||
display_alert "Begin ${SUB_STAGE_DIR}/${i}-packages" "" "info"
|
||||
PACKAGES="$(sed -f "${EXTER}/packages/raspi/scripts/remove-comments.sed" < "${SUB_STAGE_DIR}/${i}-packages")"
|
||||
if [ -n "$PACKAGES" ]; then
|
||||
on_chroot << EOF
|
||||
apt-get -o Acquire::Retries=3 install -y $PACKAGES
|
||||
EOF
|
||||
fi
|
||||
display_alert "End ${SUB_STAGE_DIR}/${i}-packages" "" "info"
|
||||
fi
|
||||
# if [ -d "${SUB_STAGE_DIR}/${i}-patches" ]; then
|
||||
# log "Begin ${SUB_STAGE_DIR}/${i}-patches"
|
||||
# pushd "${STAGE_WORK_DIR}" > /dev/null
|
||||
# #cd ${STAGE_WORK_DIR}
|
||||
#
|
||||
# QUILT_PATCHES="${SUB_STAGE_DIR}/${i}-patches"
|
||||
# SUB_STAGE_QUILT_PATCH_DIR="$(basename "$SUB_STAGE_DIR")-pc"
|
||||
# mkdir -p "$STAGE_WORK_DIR/$SUB_STAGE_QUILT_PATCH_DIR"
|
||||
# ln -snf "$STAGE_WORK_DIR/$SUB_STAGE_QUILT_PATCH_DIR" .pc
|
||||
# ln -snfv "${ROOTFS_DIR}" ${STAGE_WORK_DIR}/rootfs
|
||||
# quilt upgrade
|
||||
# if [ -e "${SUB_STAGE_DIR}/${i}-patches/EDIT" ]; then
|
||||
# echo "Dropping into bash to edit patches..."
|
||||
# bash
|
||||
# fi
|
||||
# RC=0
|
||||
# quilt push -a || RC=$?
|
||||
# case "$RC" in
|
||||
# 0|2)
|
||||
# ;;
|
||||
# *)
|
||||
# false
|
||||
# ;;
|
||||
# esac
|
||||
# #popd > /dev/null
|
||||
# cd -
|
||||
# log "End ${SUB_STAGE_DIR}/${i}-patches"
|
||||
# fi
|
||||
if [ -x ${i}-run.sh ]; then
|
||||
display_alert "Begin ${SUB_STAGE_DIR}/${i}-run.sh" "" "info"
|
||||
./${i}-run.sh
|
||||
display_alert "End ${SUB_STAGE_DIR}/${i}-run.sh" "" "info"
|
||||
fi
|
||||
if [ -f ${i}-run-chroot.sh ]; then
|
||||
display_alert "Begin ${SUB_STAGE_DIR}/${i}-run-chroot.sh" "" "info"
|
||||
on_chroot < ${i}-run-chroot.sh
|
||||
display_alert "End ${SUB_STAGE_DIR}/${i}-run-chroot.sh" "" "info"
|
||||
fi
|
||||
done
|
||||
#popd > /dev/null
|
||||
log "End ${SUB_STAGE_DIR}"
|
||||
}
|
||||
|
||||
run_stage(){
|
||||
rm -rf "${SRC}"/output/raspi
|
||||
[[ ! -d "${SRC}"/output/raspi ]] && mkdir -p "${SRC}"/output/raspi
|
||||
|
||||
STAGE_WORK_DIR="${SRC}/output/raspi"
|
||||
|
||||
if [ ! -f ${STAGE_DIR}/SKIP ]; then
|
||||
if [ -x ${STAGE_DIR}/prerun.sh ]; then
|
||||
display_alert "Begin ${STAGE_DIR}/prerun.sh" "" "info"
|
||||
source ${STAGE_DIR}/prerun.sh
|
||||
display_alert "End ${STAGE_DIR}/prerun.sh" "" "info"
|
||||
fi
|
||||
|
||||
for SUB_STAGE_DIR in "${STAGE_DIR}"/*; do
|
||||
if [ -d "${SUB_STAGE_DIR}" ] && [ ! -f "${SUB_STAGE_DIR}/SKIP" ]; then
|
||||
run_sub_stage
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
log ()
|
||||
{
|
||||
date +"[%T] $*"
|
||||
}
|
||||
|
||||
install_opi_specific()
|
||||
{
|
||||
cd $SRC
|
||||
|
||||
# install u-boot
|
||||
UBOOT_VER=$(dpkg --info "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}')
|
||||
install_deb_chroot "${DEB_STORAGE}/u-boot/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb"
|
||||
|
||||
# install kernel
|
||||
VER=$(dpkg --info "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" | awk -F"-" '/Source:/{print $2}')
|
||||
install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb"
|
||||
if [[ -f ${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then
|
||||
install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb"
|
||||
fi
|
||||
if [[ $INSTALL_HEADERS == yes ]]; then
|
||||
install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb"
|
||||
else
|
||||
cp "${DEB_STORAGE}/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb" "${SDCARD}"/opt/
|
||||
fi
|
||||
|
||||
rk356x_gpu_vpu_tweaks_for_raspios
|
||||
|
||||
[[ ! -d "${SDCARD}/lib/firmware" ]] && mkdir -p "${SDCARD}/lib/firmware"
|
||||
cp -rfa ${EXTER}/cache/sources/orangepi-firmware-git/* ${SDCARD}/lib/firmware/
|
||||
|
||||
# NOTE: this needs to be executed before family_tweaks
|
||||
local bootscript_src=${BOOTSCRIPT%%:*}
|
||||
local bootscript_dst=${BOOTSCRIPT##*:}
|
||||
|
||||
if [[ "${BOOTCONFIG}" != "none" ]]; then
|
||||
if [ -f "${USERPATCHES_PATH}/bootscripts/${bootscript_src}" ]; then
|
||||
cp "${USERPATCHES_PATH}/bootscripts/${bootscript_src}" "${SDCARD}/boot/${bootscript_dst}"
|
||||
else
|
||||
cp "${EXTER}/config/bootscripts/${bootscript_src}" "${SDCARD}/boot/${bootscript_dst}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n $BOOTENV_FILE ]]; then
|
||||
if [[ -f $USERPATCHES_PATH/bootenv/$BOOTENV_FILE ]]; then
|
||||
cp "$USERPATCHES_PATH/bootenv/${BOOTENV_FILE}" "${SDCARD}"/boot/orangepiEnv.txt
|
||||
elif [[ -f $EXTER/config/bootenv/$BOOTENV_FILE ]]; then
|
||||
cp "${EXTER}/config/bootenv/${BOOTENV_FILE}" "${SDCARD}"/boot/orangepiEnv.txt
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ -n $OVERLAY_PREFIX && -f "${SDCARD}"/boot/orangepiEnv.txt && ($BRANCH =~ current|next || $BOARDFAMILY =~ "rockchip-rk3588"|"rockchip-rk356x") ]] && \
|
||||
echo "overlay_prefix=$OVERLAY_PREFIX" >> "${SDCARD}"/boot/orangepiEnv.txt
|
||||
|
||||
[[ -n $DEFAULT_OVERLAYS && -f "${SDCARD}"/boot/orangepiEnv.txt && ($BRANCH =~ current|next || $BOARDFAMILY =~ "rockchip-rk3588"|"rockchip-rk356x") ]] && \
|
||||
echo "overlays=${DEFAULT_OVERLAYS//,/ }" >> "${SDCARD}"/boot/orangepiEnv.txt
|
||||
|
||||
[[ -n $BOOT_FDT_FILE && -f "${SDCARD}"/boot/orangepiEnv.txt ]] && \
|
||||
echo "fdtfile=${BOOT_FDT_FILE}" >> "${SDCARD}/boot/orangepiEnv.txt"
|
||||
|
||||
# create modules file
|
||||
local modules=MODULES_${BRANCH^^}
|
||||
if [[ -n "${!modules}" ]]; then
|
||||
tr ' ' '\n' <<< "${!modules}" > "${SDCARD}"/etc/modules
|
||||
elif [[ -n "${MODULES}" ]]; then
|
||||
tr ' ' '\n' <<< "${MODULES}" > "${SDCARD}"/etc/modules
|
||||
fi
|
||||
|
||||
# create blacklist files
|
||||
local blacklist=MODULES_BLACKLIST_${BRANCH^^}
|
||||
if [[ -n "${!blacklist}" ]]; then
|
||||
tr ' ' '\n' <<< "${!blacklist}" | sed -e 's/^/blacklist /' > "${SDCARD}/etc/modprobe.d/blacklist-${BOARD}.conf"
|
||||
elif [[ -n "${MODULES_BLACKLIST}" ]]; then
|
||||
tr ' ' '\n' <<< "${MODULES_BLACKLIST}" | sed -e 's/^/blacklist /' > "${SDCARD}/etc/modprobe.d/blacklist-${BOARD}.conf"
|
||||
fi
|
||||
|
||||
cat <<-EOF > "${SDCARD}"/etc/orangepi-release
|
||||
# PLEASE DO NOT EDIT THIS FILE
|
||||
BOARD=${BOARD}
|
||||
BOARD_NAME="$BOARD_NAME"
|
||||
BOARDFAMILY=${BOARDFAMILY}
|
||||
BUILD_REPOSITORY_URL=${BUILD_REPOSITORY_URL}
|
||||
BUILD_REPOSITORY_COMMIT=${BUILD_REPOSITORY_COMMIT}
|
||||
DISTRIBUTION_CODENAME=${RELEASE}
|
||||
DISTRIBUTION_STATUS=${DISTRIBUTION_STATUS}
|
||||
VERSION=${REVISION}
|
||||
LINUXFAMILY=${LINUXFAMILY}
|
||||
ARCH=${ARCHITECTURE}
|
||||
IMAGE_TYPE=$IMAGE_TYPE
|
||||
BOARD_TYPE=$BOARD_TYPE
|
||||
INITRD_ARCH=${INITRD_ARCH}
|
||||
KERNEL_IMAGE_TYPE=${KERNEL_IMAGE_TYPE}
|
||||
BRANCH=${BRANCH}
|
||||
EOF
|
||||
|
||||
install -d "${SDCARD}/etc/initramfs/post-update.d/"
|
||||
install -m 755 "${EXTER}/packages/bsp/common/etc/initramfs/post-update.d/99-uboot" "${SDCARD}/etc/initramfs/post-update.d/"
|
||||
|
||||
install -m 755 "${EXTER}/packages/raspi/orangepi/common/files/hciattach_opi" "${SDCARD}/usr/bin/"
|
||||
|
||||
install -d "${SDCARD}/usr/lib/orangepi/"
|
||||
install -m 755 "${EXTER}/packages/raspi/orangepi/common/files/orangepi-hardware-optimization" "${SDCARD}/usr/lib/orangepi/"
|
||||
install -m 755 "${EXTER}/packages/raspi/orangepi/common/files/orangepi-hardware-optimize.service" "${SDCARD}/usr/lib/systemd/system/"
|
||||
chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload enable orangepi-hardware-optimize.service >/dev/null 2>&1"
|
||||
|
||||
install_wiringop
|
||||
|
||||
rm $SDCARD/root/*.deb >/dev/null 2>&1
|
||||
}
|
||||
|
||||
install_raspi_specific()
|
||||
{
|
||||
export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi}
|
||||
export FIRST_USER_NAME=${FIRST_USER_NAME:-pi}
|
||||
export FIRST_USER_PASS
|
||||
export DISABLE_FIRST_BOOT_USER_RENAME=${DISABLE_FIRST_BOOT_USER_RENAME:-0}
|
||||
export WPA_ESSID
|
||||
export WPA_PASSWORD
|
||||
export WPA_COUNTRY
|
||||
export ENABLE_SSH="${ENABLE_SSH:-0}"
|
||||
export PUBKEY_ONLY_SSH="${PUBKEY_ONLY_SSH:-0}"
|
||||
|
||||
export LOCALE_DEFAULT="${LOCALE_DEFAULT:-en_GB.UTF-8}"
|
||||
|
||||
export KEYBOARD_KEYMAP="${KEYBOARD_KEYMAP:-gb}"
|
||||
export KEYBOARD_LAYOUT="${KEYBOARD_LAYOUT:-English (UK)}"
|
||||
|
||||
export TIMEZONE_DEFAULT="${TIMEZONE_DEFAULT:-Europe/London}"
|
||||
|
||||
export PUBKEY_SSH_FIRST_USER
|
||||
|
||||
export APT_PROXY
|
||||
|
||||
export STAGE
|
||||
export STAGE_DIR
|
||||
export STAGE_WORK_DIR
|
||||
export PREV_STAGE
|
||||
export PREV_STAGE_DIR
|
||||
export ROOTFS_DIR=${SDCARD}
|
||||
export PREV_ROOTFS_DIR
|
||||
export IMG_SUFFIX
|
||||
export NOOBS_NAME
|
||||
export NOOBS_DESCRIPTION
|
||||
export EXPORT_DIR
|
||||
export EXPORT_ROOTFS_DIR
|
||||
|
||||
export QUILT_PATCHES
|
||||
export QUILT_NO_DIFF_INDEX=1
|
||||
export QUILT_NO_DIFF_TIMESTAMPS=1
|
||||
export QUILT_REFRESH_ARGS="-p ab"
|
||||
|
||||
#check username is valid
|
||||
if [[ ! "$FIRST_USER_NAME" =~ ^[a-z][-a-z0-9_]*$ ]]; then
|
||||
echo "Invalid FIRST_USER_NAME: $FIRST_USER_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$DISABLE_FIRST_BOOT_USER_RENAME" == "1" ]] && [ -z "${FIRST_USER_PASS}" ]; then
|
||||
echo "To disable user rename on first boot, FIRST_USER_PASS needs to be set"
|
||||
echo "Not setting FIRST_USER_PASS makes your system vulnerable and open to cyberattacks"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$DISABLE_FIRST_BOOT_USER_RENAME" == "1" ]]; then
|
||||
echo "User rename on the first boot is disabled"
|
||||
echo "Be advised of the security risks linked to shipping a device with default username/password set."
|
||||
fi
|
||||
|
||||
if [[ -n "${APT_PROXY}" ]] && ! curl --silent "${APT_PROXY}" >/dev/null ; then
|
||||
echo "Could not reach APT_PROXY server: ${APT_PROXY}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "${WPA_PASSWORD}" && ${#WPA_PASSWORD} -lt 8 || ${#WPA_PASSWORD} -gt 63 ]] ; then
|
||||
echo "WPA_PASSWORD" must be between 8 and 63 characters
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${PUBKEY_ONLY_SSH}" = "1" && -z "${PUBKEY_SSH_FIRST_USER}" ]]; then
|
||||
echo "Must set 'PUBKEY_SSH_FIRST_USER' to a valid SSH public key if using PUBKEY_ONLY_SSH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RASPI_DIR="${EXTER}/packages/raspi"
|
||||
|
||||
if [[ ${BUILD_DESKTOP} == "yes" ]]; then
|
||||
rm -r ${RASPI_DIR}/stage3/SKIP ${RASPI_DIR}/stage4/SKIP ${RASPI_DIR}/stage5/SKIP 2>/dev/null
|
||||
touch ${RASPI_DIR}/stage5/SKIP
|
||||
else
|
||||
rm -r ${RASPI_DIR}/stage1/SKIP ${RASPI_DIR}/stage2/SKIP 2>/dev/null
|
||||
touch ${RASPI_DIR}/stage3/SKIP ${RASPI_DIR}/stage4/SKIP ${RASPI_DIR}/stage5/SKIP
|
||||
export FIRST_USER_PASS="pi"
|
||||
fi
|
||||
|
||||
STAGE_LIST=${RASPI_DIR}/stage*
|
||||
|
||||
for STAGE_DIR in $STAGE_LIST; do
|
||||
STAGE_DIR=$(realpath "${STAGE_DIR}")
|
||||
run_stage
|
||||
done
|
||||
|
||||
STAGE_DIR=${RASPI_DIR}/export-image
|
||||
run_stage
|
||||
|
||||
rm -rf ${SDCARD}/boot/*
|
||||
rm -rf ${SDCARD}/lib/firmware
|
||||
rm -rf ${SDCARD}/lib/modules/*
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ create_sources_list()
|
||||
EOF
|
||||
;;
|
||||
|
||||
bullseye|trixie)
|
||||
bullseye)
|
||||
cat <<-EOF > "${basedir}"/etc/apt/sources.list
|
||||
deb https://${DEBIAN_MIRROR} $release main contrib non-free
|
||||
#deb-src https://${DEBIAN_MIRROR} $release main contrib non-free
|
||||
@@ -241,6 +241,38 @@ create_sources_list()
|
||||
#deb-src http://${UBUNTU_MIRROR} ${release}-backports main restricted universe multiverse
|
||||
EOF
|
||||
;;
|
||||
|
||||
raspi)
|
||||
cat <<-EOF > "${basedir}"/etc/apt/sources.list
|
||||
deb http://${DEBIAN_MIRROR} bullseye main contrib non-free
|
||||
#deb-src http://${DEBIAN_MIRROR} bullseye main contrib non-free
|
||||
|
||||
deb http://${DEBIAN_MIRROR} bullseye-updates main contrib non-free
|
||||
#deb-src http://${DEBIAN_MIRROR} bullseye-updates main contrib non-free
|
||||
|
||||
deb http://${DEBIAN_MIRROR} bullseye-backports main contrib non-free
|
||||
#deb-src http://${DEBIAN_MIRROR} bullseye-backports main contrib non-free
|
||||
|
||||
deb http://${DEBIAN_SECURTY} bullseye-security main contrib non-free
|
||||
#deb-src http://${DEBIAN_SECURTY} bullseye-security main contrib non-free
|
||||
EOF
|
||||
|
||||
cat <<-EOF > "${basedir}"/etc/apt/sources.list.d/raspi.list
|
||||
deb http://${RASPI_MIRROR} bullseye main
|
||||
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
||||
#deb-src http://archive.raspberrypi.org/debian/ bullseye main
|
||||
EOF
|
||||
|
||||
if [ -n "$APT_PROXY" ]; then
|
||||
install -m 644 files/51cache "${APT_PROXY}/etc/apt/apt.conf.d/51cache"
|
||||
sed "${basedir}/etc/apt/apt.conf.d/51cache" -i -e "s|APT_PROXY|${APT_PROXY}|"
|
||||
else
|
||||
rm -f "${basedir}/etc/apt/apt.conf.d/51cache"
|
||||
fi
|
||||
|
||||
cat ${EXTER}/packages/raspi/stage0/00-configure-apt/files/raspberrypi.gpg.key | gpg --dearmor > "${basedir}/raspberrypi-archive-stable.gpg"
|
||||
install -m 644 "${basedir}/raspberrypi-archive-stable.gpg" "${basedir}/etc/apt/trusted.gpg.d/"
|
||||
;;
|
||||
esac
|
||||
|
||||
# stage: add armbian repository and install key
|
||||
|
||||
@@ -464,13 +464,13 @@ if [[ ${IGNORE_UPDATES} != yes ]]; then
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${BOARDFAMILY} == "rockchip-rk3588" && $RELEASE =~ bullseye|bookworm|focal|jammy ]]; then
|
||||
if [[ ${BOARDFAMILY} == "rockchip-rk3588" && $RELEASE =~ bullseye|bookworm|focal|jammy|raspi ]]; then
|
||||
|
||||
[[ ${BUILD_OPT} == image ]] && fetch_from_repo "https://github.com/orangepi-xunlong/rk-rootfs-build.git" "${EXTER}/cache/sources/rk3588_packages_${RELEASE}" "branch:rk3588_packages_${RELEASE}"
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${BOARDFAMILY} == "rockchip-rk356x" && $RELEASE =~ bullseye|focal|jammy ]]; then
|
||||
if [[ ${BOARDFAMILY} == "rockchip-rk356x" && $RELEASE =~ bullseye|focal|jammy|raspi ]]; then
|
||||
|
||||
[[ ${BUILD_OPT} == image ]] && fetch_from_repo "https://github.com/orangepi-xunlong/rk-rootfs-build.git" "${EXTER}/cache/sources/rk356x_packages" "branch:rk356x_packages"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user