diff options
Diffstat (limited to 'platforms/generic_aarch64')
-rw-r--r-- | platforms/generic_aarch64/mageia4arm.cfg | 57 | ||||
-rw-r--r-- | platforms/generic_aarch64/second_stage_install.sh | 131 | ||||
-rwxr-xr-x | platforms/generic_aarch64/specialFunctions.sh | 73 |
3 files changed, 261 insertions, 0 deletions
diff --git a/platforms/generic_aarch64/mageia4arm.cfg b/platforms/generic_aarch64/mageia4arm.cfg new file mode 100644 index 0000000..cb80e0e --- /dev/null +++ b/platforms/generic_aarch64/mageia4arm.cfg @@ -0,0 +1,57 @@ + +# 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/>. + + +# Mageia version 7 or later, cauldron. +MAGEIA_VERSION=${MAGEIA_VERSION:="7"} +# Arm version armv7hl, aarch64 +ARM_VERSION="aarch64" + +# Target plateform (odroid or rpi) +TARGET="generic-aarch64" +# Target version (0,2,3 for raspi, 3 or 4 for odroid) +TARGET_VERSION="1" + +# 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}" + +#name of the image +IMAGE="Mageia-${MAGEIA_VERSION}-${TARGET}.img" + +# Default user +# If not set, no user will be defined. +# ID_USER="user" +# PASSWORD="user" + +#root password +#If not set, no root password, at the first login, the system will ask for a password. +# ROOT_PWD="root" + +#Hostname +#If not define, the default value will be "localhost.localdomain". +# HOSTNAME="${TARGET}" + +#Filesystem of boot partitions (default ext4 raspberry pi need vfat) +SEPARATE_BOOT_PARTITION=1 +BOOTFS="vfat" + +#kernel package to install +KERNEL="kernel-server" + +#The arguments for the Kernel +BOOT_ARGS='audit=0' diff --git a/platforms/generic_aarch64/second_stage_install.sh b/platforms/generic_aarch64/second_stage_install.sh new file mode 100644 index 0000000..cba82e9 --- /dev/null +++ b/platforms/generic_aarch64/second_stage_install.sh @@ -0,0 +1,131 @@ +#!/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=arm64 + +/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 + +# #################################################### +# ## To embed a module inside the early boot initrd ## +# #################################################### +# #Set the list space separated of added modules and omitted modules : +# DRIVER_ADD_LIST="sunxi-mmc mmcblk" +# DRIVER_OMI_LIST="drm" +# #Create a configuration file inside the FS, it will be used by dracut for all kernel update +# mkdir -p /etc/dracut.conf.d/ +# echo -e "# Omiting drm as it failed for arm :\nomit_dracutmodules+=\" ${DRIVER_OMI_LIST} \"" >> /etc/dracut.conf.d/30-bananapro.conf +# echo -e "\n\n# Driver to add :\nadd_drivers+=\" ${DRIVER_ADD_LIST} \"\n" > /etc/dracut.conf.d/30-bananapro.conf + + +#Install all packages you need +<INSTALL_EXEC> basesystem grub2-efi efibootmgr chrony polkit lockdev rng-tools man openssh-server rfkill wireless-tools bluez wpa_supplicant make rsync binutils ldetect usbutils #kernel-desktop-latest # systemd-bootchart libcap-utils keyutils mindi-busybox plymouth-scripts lvm2 #dmsetup + +#For the wifi : +# /sbin/urpmi.update "Nonfree Release" +# /sbin/urpmi.update "Nonfree Updates" +# <INSTALL_EXEC> --media "Nonfree Release" --media "Nonfree Updates" kernel-firmware-nonfree + +# <INSTALL_EXEC> grub2-uboot +# <INSTALL_EXEC> --noscripts ./grub2-common-2.02.0-16.mga7.armv7hl.rpm ./grub2-efi-2.02.0-16.mga7.armv7hl.rpm ./grub2-mageia-theme-2.02.0-16.mga7.noarch.rpm +# <INSTALL_EXEC> --noscripts efibootmgr util-linux +/usr/bin/sed -i -e 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 audit=0"/' /etc/default/grub +# /usr/bin/sed -i -e 's/GRUB_TIMEOUT=.*$/GRUB_TIMEOUT=1/' /etc/default/grub + +/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg +/usr/sbin/grub2-install --skip-fs-probe --target=arm64-efi --efi-directory=/boot/EFI + +#For dracut : +# <INSTALL_EXEC> mindi-busybox plymouth-scripts #systemd-bootchart libcap-utils keyutils lvm2 #dmsetup + + +# ############################ +# ## For compiling a module ## +# ############################ +# BUG : Make does not like to build inside chroot. It doesn't find tools. Impossible to build any module there. +# <INSTALL_EXEC> kernel-source-latest +# #See if it is a Server or Desktop kernel : +# rpm -q kernel-serveur-latest +# if [ 0 -ne ${?} ]; then +# K_INST_VERSION=$(rpm -q kernel-desktop-latest | sed -e 's/kernel-\([[:alnum:]]*\)-latest-\([\.[:digit:]]*\)-\([\.[:alnum:]]*\).*$/\2-\1-\3/' ) +# else +# K_INST_VERSION=$(rpm -q kernel-serveur-latest | sed -e 's/kernel-\([[:alnum:]]*\)-latest-\([\.[:digit:]]*\)-\([\.[:alnum:]]*\).*$/\2-\1-\3/' ) +# fi +# #Recover the kernel module path : +# K_MOD_PATH=$(urpmf "modules/${K_INST_VERSION}$" | cut -d ':' -f 2) +# #Recover the source version : +# K_SRC_VERSION=$(rpm -q kernel-source-latest | sed -e 's/kernel-source-latest-\([\.[:digit:]]*\)-\([\.[:alnum:]]*\).*$/\1-\2/' ) +# #Recover the source path : +# K_SRC_PATH=$(urpmf "src/kernel-${K_SRC_VERSION}$" | cut -d ':' -f 2) +# #Set the default Mageia's configuration file into the source path : +# cp /boot/config-${K_INST_VERSION} ${K_SRC_PATH}/.config +# ## Can't go further... Make does not like to build inside chroot. It doesn't find tools. +# ## Impossible to build any module there. + + +# ########################### +# ## Regenerate the initrd ## +# ########################### +# #Generate the initrd : +# OUTPUT=$(ARCH=arm CROSS_COMPILE=arm-linux-gnu- 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 initrd-${K_INST_VERSION}.img ${K_INST_VERSION} 2>&1 | tee /dev/tty ) +# 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} + + +########################################### +## Install a package from testing repo : ## +########################################### +# urpmi.update Testing +# urpmi --auto --media Testing kernel-desktop-latest +# dnf --refresh --enablerepo=updates_testing-\* --assumeyes install kernel-desktop-latest + + +############################################ +## Installing the kernel (not on testing) ## +############################################ +# urpmi --auto kernel-desktop-latest +# dnf --refresh --assumeyes install kernel-desktop-latest + + +############################################### +## Create a symlink for the lastest kernel : ## +############################################### + ## As long as the first installed kernel remains installed, the boot.scr script will continue to work, even if the extlinux.conf file is not working with uboot anymore. +# #Last rpm package : +# KERNELRPM=$(rpm -qa --last | grep "^kernel-[sd]e[[:alpha:]]*-[[:digit:]]" | head -n 1 | cut -d ' ' -f 1 | sed -e 's/\(kernel-[[:alnum:]]*-[\.[:digit:]]*-[\.[:alnum:]]*\)-.*/\1/' ) +# #Get the vmlinuz file : +# VMLINUZ=$(urpmf ${KERNELRPM} | grep "boot/vmlinuz" | cut -d ':' -f 2) +#Get the vmlinuz file : +# VMLINUZ=$(ls --sort=time -1 /boot/vmlinuz-[[:digit:]]* | head -n 1) +# rm -f /boot/uvmlinuz +# ln -r -s "${VMLINUZ}" /boot/uvmlinuz #For the uboot script +# 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 + + +/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 + + +## DO NOT EXIT THE SCRIPT. A second part is automatically added in this script during the process in order to create the default user and set root password. diff --git a/platforms/generic_aarch64/specialFunctions.sh b/platforms/generic_aarch64/specialFunctions.sh new file mode 100755 index 0000000..ccbc9d2 --- /dev/null +++ b/platforms/generic_aarch64/specialFunctions.sh @@ -0,0 +1,73 @@ +#!/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/>. + + +#Fdisk partitionment commands : +DEFAULT="" +NEW_DOSTAB="o" +NEW_PART="n" +PRIMARY="p" +CHANGE_TYPE="t" +TYPE_FAT32LBA="c" +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} + +PART_BOOTandROOT="1" +PART_BOOTandROOT_FIRST_SECTOR="${DEFAULT}" +PART_BOOTandROOT_SIZE="${DEFAULT}" + + +# FDISK_SCRIPT="${NEW_PART}\n${PRIMARY}\n${PART_BOOTandROOT}\n${PART_BOOTandROOT_FIRST_SECTOR}\n${PART_BOOTandROOT_SIZE}\n${CHANGE_BOOTFLAG}\n${APPLY}\n" +SFDISK_SCRIPT=",128M,U,*\n,,L,\nwrite\n" + + +function preImgCreation() +{ +# title "Creating Banana Pro image" + #Nothing to download. + return 0 +} + + +function postPrepareChroot() +{ + #Nothing to do. + return 0 +} + +function bunrningBootloader() +{ + # DEVICE is set just before this function and looped. + return 0 +} + +function copyingCustomSystem() +{ +# installpkg ${CONFIG_PATH}/package.mga7.aarch64.rpm +# installpkg package + return 0 +} |