diff options
Diffstat (limited to 'platforms/rpi3+64/specialFunctions.sh')
-rwxr-xr-x | platforms/rpi3+64/specialFunctions.sh | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/platforms/rpi3+64/specialFunctions.sh b/platforms/rpi3+64/specialFunctions.sh new file mode 100755 index 0000000..c239b89 --- /dev/null +++ b/platforms/rpi3+64/specialFunctions.sh @@ -0,0 +1,149 @@ +#!/bin/bash + +# Copyright (C) 2017-2018 Daniel Tartavel-jeannot <contact@librepc.com> +# Copyright (C) 2019-2020 Jean-Baptiste Biernacki <j.biernacki@free.fr> +# + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +#RPI partitionning : +DEFAULT="" +NEW_PART=n +PRIMARY=p +CHANGE_TYPE=t +CHANGE_BOOTFLAG=a +APPLY=w + +PART_BOOT=1 +PART_BOOT_FIRST_SECTOR=${DEFAULT} +PART_BOOT_SIZE="+128M" + +PART_ROOT=2 +PART_ROOT_FIRST_SECTOR=${DEFAULT} +PART_ROOT_SIZE=${DEFAULT} + +TYPE_FAT32LBA=c + +FDISK_SCRIPT="${NEW_PART}\n${PRIMARY}\n${PART_BOOT}\n${PART_BOOT_FIRST_SECTOR}\n${PART_BOOT_SIZE}\n${CHANGE_TYPE}\n${TYPE_FAT32LBA}\n${NEW_PART}\n${PRIMARY}\n${PART_ROOT}\n${PART_ROOT_FIRST_SECTOR}\n${PART_ROOT_SIZE}\n${CHANGE_BOOTFLAG}\n${PART_BOOT}\n${CHANGE_BOOTFLAG}\n${PART_ROOT}\n${APPLY}\n" + + +function preImgCreation() +{ + title "Creating Pi image" + + if ! [ -d "${FIRMWARE_PATH}/${FIRMWARE_DIR}" ]; then # the firmware directory does not exists + echo "$(ls *.zip| wc -l)" + if [ "$(ls *.zip| wc -l)" -eq 0 ]; then # the firmware archive does not exists + warning "The raspberry pi firmware need to be downloaded" + info "Downloading FIRMWARE_FILENAME" + wget ${FIRMWARE_DOWNLOAD_URL} +# curl -L -O -J ${FIRMWARE_DOWNLOAD_URL} +# curl -L ${FIRMWARE_DOWNLOAD_URL} -o firmware-stable.zip + if [ ${?} -ne 0 ]; then + error "line ${LINENO} error downloading raspberry firmware at ${FIRMWARE_DOWNLOAD_URL}: exiting" + exit 1 + fi + fi + info "extracting firmware" + unzip -d "${FIRMWARE_PATH}" *.zip + if [ ${?} -ne 0 ]; then + error "line ${LINENO} error unzipping ${FIRMWARE_PATH} : exiting" + exit 1 + fi + fi + + title "Making raspberry pi image" + return 0 +} + +function postPrepareChroot() +{ + #Nothing to do. (Except replacing default function.) + return 0 +} + + +function bunrningBootloader() +{ + #Nothing to do. (Except replacing default function.) + return 0 +} + + +function copyingCustomSystem() +{ + info "copying 10-vchiq-permissions.rules" + cp --preserve=mode "${CONFIG_PATH}/10-vchiq-permissions.rules" "${BUILD_PATH}/etc/udev/rules.d/" + info "Making /etc/modules" + echo -e "vchiq\nsnd_bcm2835\nvc4\nbrcmfmac" >> "${BUILD_PATH}"/etc/modules + + ARM_BOOT="${BUILD_PATH}/mnt/arm_boot" + if ! [ -d "${ARM_BOOT}" ]; then + mkdir -p "${ARM_BOOT}" + fi + info "copying modprobe.conf" + /usr/bin/cp -v --preserve=mode "${CONFIG_PATH}/modprobe.conf" "${BUILD_PATH}/etc/" + chown root:root "${BUILD_PATH}/etc/modprobe.conf" + + info "copying firmware, overlays in rpi boot partition" +# cp -v --preserve=mode "${BUILD_PATH}/usr/lib/linux-"* "${BOOT}/dtb" + cp -v --preserve=mode "${FIRMWARE_PATH}/${FIRMWARE_DIR}/boot/start"* "${ARM_BOOT}/" + cp -v --preserve=mode "${FIRMWARE_PATH}/${FIRMWARE_DIR}/boot/fixup"* "${ARM_BOOT}/" + cp -v --preserve=mode "${FIRMWARE_PATH}/${FIRMWARE_DIR}/boot/bootcode.bin"* "${ARM_BOOT}/" + cp -vR --preserve=mode "${FIRMWARE_PATH}/${FIRMWARE_DIR}/boot/overlays" "${ARM_BOOT}/" + + info "copying u-boot binary to ${ARM_BOOT}" + case ${TARGET_VERSION} in + "0") + info "copying u-boot for ${TARGET} 0" + cp --preserve=mode "${BUILD_PATH}/usr/lib/u-boot/rpi_0_w/u-boot.bin" "${ARM_BOOT}/kernel.img" + ;; + "1") + info "copying u-boot for ${TARGET} 1" + cp --preserve=mode "${BUILD_PATH}/usr/lib/u-boot/rpi/u-boot.bin" "${ARM_BOOT}/kernel.img" + ;; + "2") + info "copying u-boot for ${TARGET} 2" + cp --preserve=mode "${BUILD_PATH}/usr/lib/u-boot/rpi_2/u-boot.bin" "${ARM_BOOT}/kernel.img" + ;; + "3_32") + info "copying u-boot for ${TARGET} 3 32 bits" + cp --preserve=mode "${BUILD_PATH}/usr/lib/u-boot/rpi_3_32b/u-boot.bin" "${ARM_BOOT}/kernel.img" + ;; + "3+") + info "copying u-boot for ${TARGET} 3b+ 32 bits" + cp --preserve=mode "${BUILD_PATH}/usr/lib/u-boot/rpi_3_32b/u-boot.bin" "${ARM_BOOT}/kernel.img" + ;; + esac + +# info "copying raspberry optionals files in opt" +# /bin/rsync -rlptDH "${FIRMWARE_PATH}/${FIRMWARE_DIR}/opt/" "${BUILD_PATH}/opt/" + + info "copying wifi firmware file missing in kernel-firmware-nonfree" + if ! [ -d "${ROOT}/usr/lib/firmware/brcm/" ]; then + /bin/mkdir -p "${ROOT}/usr/lib/firmware/brcm/" + fi + if ! [[ -f "${ROOT}/usr/lib/firmware/brcm/brcmfmac434"* ]]; then + /bin/cp --preserve=mode "${CONFIG_PATH}/brcmfmac434"* "${ROOT}/usr/lib/firmware/brcm/" + if [ ${?} -ne 0 ]; then + error "line ${LINENO} error copying wifi firmware in ${ROOTP}/usr/lib/firmware/brcm/ : exiting" + exit ${ERR_1} + fi + fi + + info "copying Mageia image to root partition" + /bin/rsync -rlptogDH --exclude "${ARM_BOOT}/" --exclude "qemu-arm-static*" "${BUILD_PATH}/" "${ROOT}/" + /bin/rsync -rlptogDH "${ARM_BOOT}/" "${BOOT}/" + return 0 +} |