From a27de93bfead360c409acae50a1e265dd0269e19 Mon Sep 17 00:00:00 2001 From: Daniel Tartavel Date: Sat, 15 Feb 2020 02:32:56 +0100 Subject: [PATCH] added rpi 4 configuration corrected bug in addmedia for cauldron need updating u-boot package --- create_arm_image.sh | 46 ++++-- platforms/mageia4arm.cfg | 66 +++++++++ platforms/rpi4/10-vchiq-permissions.rules | 1 + platforms/rpi4/bcm2711-rpi-4-b.dtb | Bin 0 -> 40988 bytes platforms/rpi4/brcmfmac43430-sdio.txt | 66 +++++++++ platforms/rpi4/brcmfmac43455-sdio.clm_blob | Bin 0 -> 11231 bytes platforms/rpi4/brcmfmac43455-sdio.txt | 92 ++++++++++++ platforms/rpi4/extlinux.conf | 10 ++ platforms/rpi4/mageia4arm.cfg | 101 +++++++++++++ platforms/rpi4/mageia4arm.cfg.original | 56 ++++++++ platforms/rpi4/modprobe.conf | 3 + platforms/rpi4/second_stage_install.sh | 55 +++++++ platforms/rpi4/specialFunctions.sh | 159 +++++++++++++++++++++ 13 files changed, 641 insertions(+), 14 deletions(-) create mode 100644 platforms/mageia4arm.cfg create mode 100644 platforms/rpi4/10-vchiq-permissions.rules create mode 100644 platforms/rpi4/bcm2711-rpi-4-b.dtb create mode 100644 platforms/rpi4/brcmfmac43430-sdio.txt create mode 100644 platforms/rpi4/brcmfmac43455-sdio.clm_blob create mode 100644 platforms/rpi4/brcmfmac43455-sdio.txt create mode 100644 platforms/rpi4/extlinux.conf create mode 100644 platforms/rpi4/mageia4arm.cfg create mode 100644 platforms/rpi4/mageia4arm.cfg.original create mode 100644 platforms/rpi4/modprobe.conf create mode 100644 platforms/rpi4/second_stage_install.sh create mode 100755 platforms/rpi4/specialFunctions.sh diff --git a/create_arm_image.sh b/create_arm_image.sh index 2754368..28ef4fe 100755 --- a/create_arm_image.sh +++ b/create_arm_image.sh @@ -128,12 +128,21 @@ function genusemirroroptions() DNF_MIRROROPTS="--config=${DNF_CONFIGPATH} --forcearch=${ARM_VERSION} --nogpgcheck --releasever=${MAGEIA_VERSION}" 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 - 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 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 export DNF_MIRROROPTS @@ -143,16 +152,21 @@ function genusemirroroptions() # enabling extra Mageia repositories function enableextrarepos() { - if [ "${MAGEIA_VERSION}" = "cauldron" ]; then - extrasect_baseprefix="cauldron" - extrasect_updatesprefix="cauldron-updates" - else - extrasect_baseprefix="mageia" - extrasect_updatesprefix="updates" - fi + extrasect_baseprefix="mageia" + # if [ "${MAGEIA_VERSION}" = "cauldron" ]; then + # extrasect_baseprefix="cauldron" + # extrasect_updatesprefix="" + # else + # extrasect_baseprefix="mageia" + extrasect_updatesprefix="updates" + # fi if [ ${NONFREE} -eq 1 ]; then 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=${?} if [ ${err} -ne 0 ]; then error "line ${LINENO} error ${err} - can't activate nonfree repositories : exiting" @@ -161,7 +175,11 @@ function enableextrarepos() fi if [ ${TAINTED} -eq 1 ]; then 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=${?} if [ ${err} -ne 0 ]; then error "line ${LINENO} error ${err} - can't activate tainted repositories : exiting" @@ -992,7 +1010,7 @@ case ${OPT} in genusemirroroptions #Generate mirror options, if needed installbasesystem #Generate the rootfs, rootfiles, ... enableextrarepos - addurpmimedia +# addurpmimedia mkfstab preparechroot jumpchroot @@ -1001,7 +1019,7 @@ case ${OPT} in MIRROR= genusemirroroptions enableextrarepos - addurpmimedia +# addurpmimedia mountPartitions copyingsystem unmountingPartitions diff --git a/platforms/mageia4arm.cfg b/platforms/mageia4arm.cfg new file mode 100644 index 0000000..78e2698 --- /dev/null +++ b/platforms/mageia4arm.cfg @@ -0,0 +1,66 @@ + +# Copyright (C) 2017-2018 Daniel Tartavel-jeannot +# +# 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 . + +# 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/" diff --git a/platforms/rpi4/10-vchiq-permissions.rules b/platforms/rpi4/10-vchiq-permissions.rules new file mode 100644 index 0000000..bacea0e --- /dev/null +++ b/platforms/rpi4/10-vchiq-permissions.rules @@ -0,0 +1 @@ +SUBSYSTEM=="vchiq",GROUP="video",MODE="0660" diff --git a/platforms/rpi4/bcm2711-rpi-4-b.dtb b/platforms/rpi4/bcm2711-rpi-4-b.dtb new file mode 100644 index 0000000000000000000000000000000000000000..f078295108fc25d0596ab682250aac362062eea5 GIT binary patch literal 40988 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 VvuB?_`}yaefBsYa{2aG$^xt@eZ`%L> literal 0 HcmV?d00001 diff --git a/platforms/rpi4/brcmfmac43455-sdio.txt b/platforms/rpi4/brcmfmac43455-sdio.txt new file mode 100644 index 0000000..260c929 --- /dev/null +++ b/platforms/rpi4/brcmfmac43455-sdio.txt @@ -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 diff --git a/platforms/rpi4/extlinux.conf b/platforms/rpi4/extlinux.conf new file mode 100644 index 0000000..bd8b64e --- /dev/null +++ b/platforms/rpi4/extlinux.conf @@ -0,0 +1,10 @@ +menu Welcome to Mageia-Minimal. +timeout 20 +default linux + +label linux + kernel /boot/vmlinuz + append root=UUID= + fdtdir /usr/lib/ + initrd /boot/initrd + diff --git a/platforms/rpi4/mageia4arm.cfg b/platforms/rpi4/mageia4arm.cfg new file mode 100644 index 0000000..e1b3d24 --- /dev/null +++ b/platforms/rpi4/mageia4arm.cfg @@ -0,0 +1,101 @@ + +# Copyright (C) 2017-2018 Daniel Tartavel-jeannot +# +# 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 . + + +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 +" diff --git a/platforms/rpi4/mageia4arm.cfg.original b/platforms/rpi4/mageia4arm.cfg.original new file mode 100644 index 0000000..e1b78d9 --- /dev/null +++ b/platforms/rpi4/mageia4arm.cfg.original @@ -0,0 +1,56 @@ + +# Copyright (C) 2017-2018 Daniel Tartavel-jeannot +# +# 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 . + + +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="" + +# 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" diff --git a/platforms/rpi4/modprobe.conf b/platforms/rpi4/modprobe.conf new file mode 100644 index 0000000..7725dae --- /dev/null +++ b/platforms/rpi4/modprobe.conf @@ -0,0 +1,3 @@ +alias wlan0 brcmfmac +alias eth0 smsc95xx +alias usb0 rndis_host diff --git a/platforms/rpi4/second_stage_install.sh b/platforms/rpi4/second_stage_install.sh new file mode 100644 index 0000000..aee1d53 --- /dev/null +++ b/platforms/rpi4/second_stage_install.sh @@ -0,0 +1,55 @@ +#!/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 . + +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 diff --git a/platforms/rpi4/specialFunctions.sh b/platforms/rpi4/specialFunctions.sh new file mode 100755 index 0000000..ada30a4 --- /dev/null +++ b/platforms/rpi4/specialFunctions.sh @@ -0,0 +1,159 @@ +#!/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 "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 +}