1
0

added rpi 4 configuration

corrected bug in addmedia for cauldron
need updating u-boot package
This commit is contained in:
Daniel Tartavel 2020-02-15 02:32:56 +01:00
parent f6e6323bf7
commit a27de93bfe
13 changed files with 641 additions and 14 deletions

View File

@ -128,12 +128,21 @@ function genusemirroroptions()
DNF_MIRROROPTS="--config=${DNF_CONFIGPATH} --forcearch=${ARM_VERSION} --nogpgcheck --releasever=${MAGEIA_VERSION}" DNF_MIRROROPTS="--config=${DNF_CONFIGPATH} --forcearch=${ARM_VERSION} --nogpgcheck --releasever=${MAGEIA_VERSION}"
if [ ! -z "${MIRROR}" ]; then if [ ! -z "${MIRROR}" ]; then
DNF_MIRROROPTS="${DNF_MIRROROPTS} --disablerepo=* --repofrompath=mgarel,${MIRROR}/media/core/release/ --repofrompath=mgaup,${MIRROR}/media/core/updates/ --enablerepo=mgarel --enablerepo=mgaup" DNF_MIRROROPTS="${DNF_MIRROROPTS} --disablerepo=* --repofrompath=mgarel,${MIRROR}/media/core/release/ --enablerepo=mgarel"
if [ "${MAGEIA_VERSION}" != "cauldron" ]; then
DNF_MIRROROPTS="${DNF_MIRROROPTS} --repofrompath=mgaup,${MIRROR}/media/core/updates/ --enablerepo=mgaup"
fi
if [ ${NONFREE} -eq 1 ]; then if [ ${NONFREE} -eq 1 ]; then
DNF_MIRROROPTS="${DNF_MIRROROPTS} --repofrompath=mgarel-nonfree,${MIRROR}/media/nonfree/release/ --repofrompath=mgaup-nonfree,${MIRROR}/media/nonfree/updates/ --enablerepo=mgarel-nonfree --enablerepo=mgaup-nonfree" DNF_MIRROROPTS="${DNF_MIRROROPTS} --repofrompath=mgarel-nonfree,${MIRROR}/media/nonfree/release/ --enablerepo=mgarel-nonfree "
if [ "${MAGEIA_VERSION}" != "cauldron" ]; then
DNF_MIRROROPTS="${DNF_MIRROROPTS} --repofrompath=mgaup-nonfree,${MIRROR}/media/nonfree/updates/ --enablerepo=mgaup-nonfree"
fi
fi fi
if [ ${TAINTED} -eq 1 ]; then if [ ${TAINTED} -eq 1 ]; then
DNF_MIRROROPTS="${DNF_MIRROROPTS} --repofrompath=mgarel-tainted,${MIRROR}/media/tainted/release/ --repofrompath=mgaup-tainted,${MIRROR}/media/tainted/updates/ --enablerepo=mgarel-tainted --enablerepo=mgaup-tainted" DNF_MIRROROPTS="${DNF_MIRROROPTS} --repofrompath=mgarel-tainted,${MIRROR}/media/tainted/release/ --enablerepo=mgarel-tainted "
if [ "${MAGEIA_VERSION}" != "cauldron" ]; then
DNF_MIRROROPTS="${DNF_MIRROROPTS} --repofrompath=mgaup-tainted,${MIRROR}/media/tainted/updates/ --enablerepo=mgaup-tainted"
fi
fi fi
fi fi
export DNF_MIRROROPTS export DNF_MIRROROPTS
@ -143,16 +152,21 @@ function genusemirroroptions()
# enabling extra Mageia repositories # enabling extra Mageia repositories
function enableextrarepos() function enableextrarepos()
{ {
if [ "${MAGEIA_VERSION}" = "cauldron" ]; then extrasect_baseprefix="mageia"
extrasect_baseprefix="cauldron" # if [ "${MAGEIA_VERSION}" = "cauldron" ]; then
extrasect_updatesprefix="cauldron-updates" # extrasect_baseprefix="cauldron"
else # extrasect_updatesprefix=""
extrasect_baseprefix="mageia" # else
extrasect_updatesprefix="updates" # extrasect_baseprefix="mageia"
fi extrasect_updatesprefix="updates"
# fi
if [ ${NONFREE} -eq 1 ]; then if [ ${NONFREE} -eq 1 ]; then
title "activating non-free repos" title "activating non-free repos"
/usr/bin/dnf --installroot="${BUILD_PATH}" config-manager --set-enabled "${extrasect_baseprefix}-${ARM_VERSION}-nonfree" --set-enabled "${extrasect_updatesprefix}-${ARM_VERSION}-nonfree" DNFPARAM=--installroot="${BUILD_PATH}" config-manager --set-enabled "${extrasect_baseprefix}-${ARM_VERSION}-nonfree"
if [ "${MAGEIA_VERSION}" != "cauldron" ]; then
DNFPARAM=$DNFPARAM" --set-enabled ${extrasect_updatesprefix}-${ARM_VERSION}-nonfree"
fi
/usr/bin/dnf $DNFPARAM;
err=${?} err=${?}
if [ ${err} -ne 0 ]; then if [ ${err} -ne 0 ]; then
error "line ${LINENO} error ${err} - can't activate nonfree repositories : exiting" error "line ${LINENO} error ${err} - can't activate nonfree repositories : exiting"
@ -161,7 +175,11 @@ function enableextrarepos()
fi fi
if [ ${TAINTED} -eq 1 ]; then if [ ${TAINTED} -eq 1 ]; then
title "activating tainted repos" title "activating tainted repos"
/usr/bin/dnf --installroot="${BUILD_PATH}" config-manager --set-enabled "${extrasect_baseprefix}-${ARM_VERSION}-tainted" --set-enabled "${extrasect_updatesprefix}-${ARM_VERSION}-tainted" DNFPARAM=--installroot="${BUILD_PATH}" config-manager --set-enabled "${extrasect_baseprefix}-${ARM_VERSION}-tainted"
if [ "${MAGEIA_VERSION}" != "cauldron" ]; then
DNFPARAM=$DNFPARAM" --set-enabled ${extrasect_updatesprefix}-${ARM_VERSION}-tainted"
fi
/usr/bin/dnf $DNFPARAM²
err=${?} err=${?}
if [ ${err} -ne 0 ]; then if [ ${err} -ne 0 ]; then
error "line ${LINENO} error ${err} - can't activate tainted repositories : exiting" error "line ${LINENO} error ${err} - can't activate tainted repositories : exiting"
@ -992,7 +1010,7 @@ case ${OPT} in
genusemirroroptions #Generate mirror options, if needed genusemirroroptions #Generate mirror options, if needed
installbasesystem #Generate the rootfs, rootfiles, ... installbasesystem #Generate the rootfs, rootfiles, ...
enableextrarepos enableextrarepos
addurpmimedia # addurpmimedia
mkfstab mkfstab
preparechroot preparechroot
jumpchroot jumpchroot
@ -1001,7 +1019,7 @@ case ${OPT} in
MIRROR= MIRROR=
genusemirroroptions genusemirroroptions
enableextrarepos enableextrarepos
addurpmimedia # addurpmimedia
mountPartitions mountPartitions
copyingsystem copyingsystem
unmountingPartitions unmountingPartitions

66
platforms/mageia4arm.cfg Normal file
View File

@ -0,0 +1,66 @@
# Copyright (C) 2017-2018 Daniel Tartavel-jeannot <contact@librepc.com>
#
# 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/>.
# Mageia version 7 or later, cauldron.
# TO MODIFY
MAGEIA_VERSION=""
# Arm version armv7hl, aarch64
# TO MODIFY
ARM_VERSION=""
# Target plateform (odroid or rpi)
# TO MODIFY
TARGET=""
# Target version (0,2,3 for raspi, 3 or 4 for odroid)
#TO MODIFY
TARGET_VERSION=""
# URL of the Mageia mirror used to install ( see mirrors.mageia.org )
MIRROR="http://ftp.free.fr/mirrors/mageia.org/distrib/$MAGEIA_VERSION/$ARM_VERSION"
# image will be created here
# TO MODIFY
INSTALL_PATH="/path/to/$TARGET"
# Build directory will be created here
BUILD_PATH="$INSTALL_PATH/build"
#name of the image
IMAGE="Mageia-${MAGEIA_VERSION}-$TARGET.img"
#Mount point of image's partitions
BOOT="/mnt/boot"
ROOT="/mnt/root"
# Default user
# TO MODIFY
ID_USER="user login"
PASSWORD="user password"
#root password
ROOT_PWD="root password"
#Hostname
HOSTNAME="$TARGET.$ID_USER"
#Filesystem of boot partitions (default ext4 raspberry pi need vfat)
#BOOTFS=ext4
#kernel package to install (just needed for odroid)
#KERNEL=kernel-odroid
#Path where the raspberry pi firmware is/will be installed ( just needed for raspberry pi )
FIRMWARE_PATH="$INSTALL_PATH/"

View File

@ -0,0 +1 @@
SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"

Binary file not shown.

View File

@ -0,0 +1,66 @@
# NVRAM file for BCM943430WLPTH
# 2.4 GHz, 20 MHz BW mode
# The following parameter values are just placeholders, need to be updated.
manfid=0x2d0
prodid=0x0727
vendid=0x14e4
devid=0x43e2
boardtype=0x0727
boardrev=0x1101
boardnum=22
macaddr=00:90:4c:c5:12:38
sromrev=11
boardflags=0x00404201
boardflags3=0x08000000
xtalfreq=37400
nocrc=1
ag0=255
aa2g=1
ccode=ALL
pa0itssit=0x20
extpagain2g=0
#PA parameters for 2.4GHz, measured at CHIP OUTPUT
pa2ga0=-168,7161,-820
AvVmid_c0=0x0,0xc8
cckpwroffset0=5
# PPR params
maxp2ga0=84
txpwrbckof=6
cckbw202gpo=0
legofdmbw202gpo=0x66111111
mcsbw202gpo=0x77711111
propbw202gpo=0xdd
# OFDM IIR :
ofdmdigfilttype=18
ofdmdigfilttypebe=18
# PAPD mode:
papdmode=1
papdvalidtest=1
pacalidx2g=42
papdepsoffset=-22
papdendidx=58
# LTECX flags
ltecxmux=0
ltecxpadnum=0x0102
ltecxfnsel=0x44
ltecxgcigpio=0x01
il0macaddr=00:90:4c:c5:12:38
wl0id=0x431b
deadman_to=0xffffffff
# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG
muxenab=0x1
# CLDO PWM voltage settings - 0x4 - 1.1 volt
#cldo_pwm=0x4
#VCO freq 326.4MHz
spurconfig=0x3
edonthd20l=-75
edoffthd20ul=-80

Binary file not shown.

View File

@ -0,0 +1,92 @@
# Cloned from bcm94345wlpagb_p2xx.txt
NVRAMRev=$Rev: 498373 $
sromrev=11
vendid=0x14e4
devid=0x43ab
manfid=0x2d0
prodid=0x06e4
#macaddr=00:90:4c:c5:12:38
macaddr=b8:27:eb:74:f2:6c
nocrc=1
boardtype=0x6e4
boardrev=0x1304
#XTAL 37.4MHz
xtalfreq=37400
btc_mode=1
#------------------------------------------------------
#boardflags: 5GHz eTR switch by default
# 2.4GHz eTR switch by default
# bit1 for btcoex
boardflags=0x00480201
boardflags2=0x40800000
boardflags3=0x48200100
phycal_tempdelta=15
rxchain=1
txchain=1
aa2g=1
aa5g=1
tssipos5g=1
tssipos2g=1
femctrl=0
AvVmid_c0=1,165,2,100,2,100,2,100,2,100
pa2ga0=-129,6525,-718
pa2ga1=-149,4408,-601
pa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818
pa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575
itrsw=1
pdoffsetcckma0=2
pdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0
pdoffset2g40ma0=16
pdoffset40ma0=0x8888
pdoffset80ma0=0x8888
extpagain5g=2
extpagain2g=2
tworangetssi2g=1
tworangetssi5g=1
# LTECX flags
# WCI2
ltecxmux=0
ltecxpadnum=0x0504
ltecxfnsel=0x22
ltecxgcigpio=0x32
maxp2ga0=80
ofdmlrbw202gpo=0x0022
dot11agofdmhrbw202gpo=0x4442
mcsbw202gpo=0x98444422
mcsbw402gpo=0x98444422
maxp5ga0=82,82,82,82
mcsbw205glpo=0xb9555000
mcsbw205gmpo=0xb9555000
mcsbw205ghpo=0xb9555000
mcsbw405glpo=0xb9555000
mcsbw405gmpo=0xb9555000
mcsbw405ghpo=0xb9555000
mcsbw805glpo=0xb9555000
mcsbw805gmpo=0xb9555000
mcsbw805ghpo=0xb9555000
swctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff
swctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe
swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3
swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3
vcodivmode=1
deadman_to=481500000
ed_thresh2g=-54
ed_thresh5g=-54
eu_edthresh2g=-54
eu_edthresh5g=-54
ldo1=4
rawtempsense=0x1ff
cckPwrIdxCorr=3
cckTssiDelay=150
ofdmTssiDelay=150
txpwr2gAdcScale=1
txpwr5gAdcScale=1
dot11b_opts=0x3aa85
cbfilttype=1
fdsslevel_ch11=6

View File

@ -0,0 +1,10 @@
menu Welcome to Mageia-Minimal.
timeout 20
default linux
label linux
kernel /boot/vmlinuz
append root=UUID=<UUID> <BOOT_ARGS>
fdtdir /usr/lib/<FDTDIR>
initrd /boot/initrd

View File

@ -0,0 +1,101 @@
# Copyright (C) 2017-2018 Daniel Tartavel-jeannot <contact@librepc.com>
#
# 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/>.
MAGEIA_VERSION="cauldron"
ARM_VERSION="aarch64"
# ARM_VERSION="armv7hl"
#target plateform (xu3-4 or rpi)
TARGET="rpi"
#version of the target
# 0, 1, 2 ,3_32 for rpi and 3 or 4 for odroid
TARGET_VERSION="4"
# URL of the Mageia mirror used to install ( see mirrors.mageia.org )
MIRROR="http://ftp.free.fr/mirrors/mageia.org/distrib/${MAGEIA_VERSION}/${ARM_VERSION}"
#MIRROR="/mnt/STOCK/mageia/distrib/$MAGEIA_VERSION/$ARM_VERSION"
# image will be created here
# INSTALL_PATH="/mnt/perso/raspi-test"
# Build directory will be created here
BUILD_PATH="${INSTALL_PATH}/build"
#name of the image
IMAGE="Mageia-${MAGEIA_VERSION}-${TARGET}.img"
#Default user
# ID_USER="pi"
# PASSWORD="raspberry"
#root password
# ROOT_PWD="piroot"
#Hostname
HOSTNAME="${TARGET}"
#Mount point of image's partitions
BOOT="/mnt/boot"
ROOT="/mnt/root"
#Filesystem of boot partitions (default ext4 raspberry pi need vfat)
SEPARATE_BOOT_PARTITION=1
BOOTFS="vfat"
#The arguments for the Kernel
BOOT_ARGS='dwc_otg.lpm_enable=0 console=ttyS0,115200 kgdboc=ttyS0,115200 console=tty1 rootwait fsck.repair=1 8250.nr_uarts=1 elevator=deadline cma=256M\@512M audit=0'
#Path where the raspberry pi firmware is/will be installed
FIRMWARE_PATH="$INSTALL_PATH"
FIRMWARE_DIR="firmware-stable"
INFORMATION="
https://elinux.org/RPi_Software
https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md
https://github.com/raspberrypi/firmware/blob/master/boot/bootcode.bin
https://github.com/raspberrypi/firmware/blob/master/boot/bcm2710-rpi-3-b-plus.dtb
https://github.com/raspberrypi/firmware/blob/master/boot/fixup.dat
https://github.com/raspberrypi/firmware/blob/master/boot/start.elf
https://github.com/raspberrypi/firmware/blob/master/boot/fixup4.dat #Rpi4
https://github.com/raspberrypi/firmware/blob/master/boot/start4.elf #Rpi4
#Debug (implicitly used with start_debug=1)
https://github.com/raspberrypi/firmware/blob/master/boot/fixup_db.dat
https://github.com/raspberrypi/firmware/blob/master/boot/start_db.elf
https://github.com/raspberrypi/firmware/blob/master/boot/start4db.elf #Rpi4
https://github.com/raspberrypi/firmware/blob/master/boot/fixup4db.dat #Rpi4
#Low GPU Memory (=16MB)
https://github.com/raspberrypi/firmware/blob/master/boot/fixup_cd.dat
https://github.com/raspberrypi/firmware/blob/master/boot/start_cd.elf
https://github.com/raspberrypi/firmware/blob/master/boot/start4cd.elf #Rpi4
https://github.com/raspberrypi/firmware/blob/master/boot/fixup4cd.dat #Rpi4
#Testing versions (eXtra features) (like camera module) (implicitly used with start_x=1 ) :
https://github.com/raspberrypi/firmware/blob/master/boot/fixup_x.dat
https://github.com/raspberrypi/firmware/blob/master/boot/start_x.elf
https://github.com/raspberrypi/firmware/blob/master/boot/start4x.elf #Rpi4
https://github.com/raspberrypi/firmware/blob/master/boot/fixup4x.dat #Rpi4
"
FIRMWARE_DOWNLOAD_URL="https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin
https://github.com/raspberrypi/firmware/raw/master/boot/bcm2711-rpi-4-b.dtb
https://github.com/raspberrypi/firmware/raw/master/boot/fixup4.dat
https://github.com/raspberrypi/firmware/raw/master/boot/start4.elf
https://github.com/raspberrypi/firmware/raw/master/boot/fixup4x.dat
https://github.com/raspberrypi/firmware/raw/master/boot/start4x.elf
"

View File

@ -0,0 +1,56 @@
# Copyright (C) 2017-2018 Daniel Tartavel-jeannot <dtux@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/>.
MAGEIA_VERSION="7"
ARM_VERSION="armv7hl"
#target plateform (xu3-4 or rpi)
TARGET="rpi"
# URL of the Mageia mirror used to install ( see mirrors.mageia.org )
MIRROR="http://ftp.free.fr/mirrors/mageia.org/distrib/$MAGEIA_VERSION/$ARM_VERSION"
# image will be created here
INSTALL_PATH="<change this>"
# Build directory will be created here
BUILD_PATH="$INSTALL_PATH/build"
#name of the image
IMAGE="Mageia-${MAGEIA_VERSION}-$TARGET.img"
#Mount point of image's partitions
#no need to be changed
BOOT="/mnt/boot"
ROOT="/mnt/root"
#Default user
ID_USER="pi"
PASSWORD="raspberry"
#root password
ROOT_PWD="piroot"
#Hostname
HOSTNAME="$TARGET.$ID_USER"
#Filesystem of boot partitions (default ext4 raspberry pi need vfat)
#DO NOT CHANGE THIS
BOOTFS="vfat"
#Path where the raspberry pi firmware is/will be downloaded
FIRMWARE_PATH="$INSTALL_PATH"
FIRMWARE_DIR="firmware-stable"

View File

@ -0,0 +1,3 @@
alias wlan0 brcmfmac
alias eth0 smsc95xx
alias usb0 rndis_host

View File

@ -0,0 +1,55 @@
#!/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/>.
export ARCH=arm
/usr/bin/chown :shadow /etc/shadow /etc/gshadow /etc/login.defs /etc/pam.d/chage-chfn-chsh /etc/pam.d/chpasswd-newusers /etc/pam.d/system-auth /etc/pam.d/user-group-mod /bin/passwd /bin/chage
/usr/bin/chown :systemd-journal -R /var/log/journal
#Install all packages you need
# No verifying rpm due to a bug in packages, some are not signed
/usr/bin/dnf --nogpgcheck --assumeyes install basesystem chrony rng-tools man openssh-server rfkill wireless-tools bluez wpa_supplicant make binutils dracut u-boot rsync kernel-desktop-latest mlocate drakx-kbd-mouse-x11 glibc-i18ndata
/usr/bin/chown :chrony -R /etc/chrony.keys /var/log/chrony
/usr/bin/chown :daemon /etc/wpa_supplicant.conf
/usr/bin/chown :tty /bin/write /bin/wall
/usr/bin/chown :lock /sbin/lockdev
/usr/bin/chown :bin /sbin/traceroute
/usr/bin/chown polkitd /etc/polkit-1/rules.d
# KV=$(basename /boot/vmlinuz-*)
# KV=${KV#vmlinuz-}
# dracut --kver $KV
VMLINUZ=$(ls --sort=time -1 /boot/vmlinuz-[[:digit:]]* | head -n 1)
# Normally, /boot/vmlinuz is generated with the /sbin/installkernel script, but it is not generated with chroot.
rm -f /boot/vmlinuz
ln -r -s "${VMLINUZ}" /boot/vmlinuz #For extlinux.conf
rm -f ${0}
K_INST_VERSION=$(rpm -q kernel-desktop-latest | sed -e 's/kernel-\([[:alnum:]]*\)-latest-\([\.[:digit:]]*\)-\([\.[:alnum:]]*\).*$/\2-\1-\3/')
dracut --no-compress --force --no-hostonly --local --no-early-microcode --confdir "/etc/dracut.conf.d" --kmoddir="/lib/modules/${K_INST_VERSION}" --xz --printsize --kernel-image /boot/vmlinuz --fstab /boot/initrd-${K_INST_VERSION}.img ${K_INST_VERSION}
ln -r -s /boot/initrd-${K_INST_VERSION}.img /boot/initrd.img
echo "Dracut done."
alternatives --set soundprofile /etc/sound/profiles/alsa

View File

@ -0,0 +1,159 @@
#!/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 "Download binary blob for Rpi"
for i in ${FIRMWARE_DOWNLOAD_URL}; do
info "Download ${i}"
curl -L -O -J ${i} -s
done
# 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"
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"
;;
"4")
info "copying u-boot for ${TARGET} 4 64 bits"
cp --preserve=mode "${BUILD_PATH}/usr/lib/u-boot/rpi_4/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
}