2020-01-04 08:52:48 +01:00
|
|
|
#!/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()
|
|
|
|
{
|
2020-01-05 12:26:18 +01:00
|
|
|
|
|
|
|
title "Download binary blob for Rpi"
|
|
|
|
for i in ${FIRMWARE_DOWNLOAD_URL}; do
|
|
|
|
info "Download ${i}"
|
|
|
|
curl -L -O -J ${i} -s
|
|
|
|
done
|
2020-01-04 08:52:48 +01:00
|
|
|
|
2020-01-05 12:26:18 +01:00
|
|
|
# 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 "Creating Pi image"
|
2020-01-04 08:52:48 +01:00
|
|
|
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
|
|
|
|
}
|