#!/bin/bash # Copyright (C) 2017-2018 Daniel Tartavel-jeannot # Copyright (C) 2019-2020 Jean-Baptiste Biernacki # # 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 . #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} 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 burningBootloader() { #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 -rlptogDHx --exclude "${ARM_BOOT}/" --exclude "qemu-arm-static*" "${BUILD_PATH}/" "${ROOT}/" /bin/rsync -rlptogDHx "${ARM_BOOT}/" "${BOOT}/" return 0 }