diff --git a/core/linux-rpi/0001-Make-proc-cpuinfo-consistent-on-arm64-and-arm.patch b/core/linux-rpi/0001-Make-proc-cpuinfo-consistent-on-arm64-and-arm.patch new file mode 100644 index 000000000..4b2e24fe1 --- /dev/null +++ b/core/linux-rpi/0001-Make-proc-cpuinfo-consistent-on-arm64-and-arm.patch @@ -0,0 +1,29 @@ +From 988f69b247fa3a1b70876395342aeb8c7dc2e834 Mon Sep 17 00:00:00 2001 +From: graysky +Date: Mon, 7 Dec 2020 13:03:40 -0500 +Subject: [PATCH] Make /proc/cpuinfo consistent on arm64 and arm + +Signed-off-by: graysky +--- + arch/arm64/kernel/cpuinfo.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c +index 721350d21074..88e2b8fcd7e6 100644 +--- a/arch/arm64/kernel/cpuinfo.c ++++ b/arch/arm64/kernel/cpuinfo.c +@@ -153,9 +153,8 @@ static int c_show(struct seq_file *m, void *v) + * "processor". Give glibc what it expects. + */ + seq_printf(m, "processor\t: %d\n", i); +- if (compat) +- seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n", +- MIDR_REVISION(midr), COMPAT_ELF_PLATFORM); ++ seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n", ++ MIDR_REVISION(midr), COMPAT_ELF_PLATFORM); + + seq_printf(m, "BogoMIPS\t: %lu.%02lu\n", + loops_per_jiffy / (500000UL/HZ), +-- +2.29.2 + diff --git a/core/linux-rpi/60-linux.hook b/core/linux-rpi/60-linux.hook new file mode 100644 index 000000000..584ce3537 --- /dev/null +++ b/core/linux-rpi/60-linux.hook @@ -0,0 +1,11 @@ +[Trigger] +Type = File +Operation = Install +Operation = Upgrade +Operation = Remove +Target = usr/lib/modules/%KERNVER%/* + +[Action] +Description = Updating %PKGBASE% module dependencies... +When = PostTransaction +Exec = /usr/bin/depmod %KERNVER% diff --git a/core/linux-rpi/90-linux.hook b/core/linux-rpi/90-linux.hook new file mode 100644 index 000000000..4e62c1676 --- /dev/null +++ b/core/linux-rpi/90-linux.hook @@ -0,0 +1,13 @@ +[Trigger] +Type = File +Operation = Install +Operation = Upgrade +Target = boot/kernel.img +Target = boot/kernel7.img +Target = boot/kernel8.img +Target = usr/lib/initcpio/* + +[Action] +Description = Updating %PKGBASE% initcpios... +When = PostTransaction +Exec = /usr/bin/mkinitcpio -p %PKGBASE% diff --git a/core/linux-rpi/PKGBUILD b/core/linux-rpi/PKGBUILD new file mode 100644 index 000000000..7160fc710 --- /dev/null +++ b/core/linux-rpi/PKGBUILD @@ -0,0 +1,220 @@ +# Maintainer: graysky +# Maintainer: Kevin Mihelich +# Maintainer: Oleg Rakhmanov +# Maintainer: Dave Higham +# Contributer: Jan Alexander Steffens (heftig) + +buildarch=12 + +pkgbase=linux-rpi +_commit=e16e31540935728ce57f22a1de56e8b2da5dd33b +_srcname=linux-${_commit} +_kernelname=${pkgbase#linux} +_desc="RPi 3/4/400/Zero 2 W" +pkgver=5.10.81 +pkgrel=3 +pkgdesc='Linux' +url="http://www.kernel.org/" +arch=(armv7h aarch64) +license=(GPL2) +makedepends=( + bc kmod inetutils +) +options=('!strip') +source_armv7h=('config' 'config.txt') +source_aarch64=('config8' 'config8.txt') +source=("linux-$pkgver-$pkgrel-${_commit:0:10}.tar.gz::https://github.com/raspberrypi/linux/archive/${_commit}.tar.gz" + cmdline.txt + 0001-Make-proc-cpuinfo-consistent-on-arm64-and-arm.patch + linux.preset + 60-linux.hook + 90-linux.hook +) +md5sums=('04add30cbd4e5d412bd1e71a98c2f6ff' + '31c02f4518d46deb5f0c2ad1f8b083cd' + 'f66a7ea3feb708d398ef57e4da4815e9' + '86d4a35722b5410e3b29fc92dae15d4b' + '0a5f16bfec6ad982a2f6782724cca8ba' + '441ec084c47cddc53e592fb0cbce4edf') +md5sums_armv7h=('5ec205f35bac1cc4df6436ba3cb83b07' + 'e302936d860e78ca8e965459e64b2e5b') +md5sums_aarch64=('f460711568c3dc02505000b83703d024' + 'e302936d860e78ca8e965459e64b2e5b') + +# setup vars +if [[ $CARCH == "armv7h" ]]; then + _kernel=kernel7.img KARCH=arm _image=zImage _config=config _bconfig=config.txt +elif [[ $CARCH == "aarch64" ]]; then + _kernel=kernel8.img KARCH=arm64 _image=Image _config=config8 _bconfig=config8.txt +fi + +prepare() { + cd "${srcdir}/${_srcname}" + + # consistent behavior of lscpu on arm/arm64 + patch -Np1 -i ../0001-Make-proc-cpuinfo-consistent-on-arm64-and-arm.patch + + echo "Setting version..." + scripts/setlocalversion --save-scmversion + echo "-$pkgrel" > localversion.10-pkgrel + echo "${pkgbase#linux}" > localversion.20-pkgname + + echo "Setting config..." + cp ../"$_config" .config + make olddefconfig + + make -s kernelrelease > version + echo "Prepared $pkgbase version $(=0.7' 'firmware-raspberrypi') + optdepends=('crda: to set the correct wireless channels of your country') + provides=('kernel26' "linux=${pkgver}" 'WIREGUARD-MODULE') + conflicts=('kernel26' 'linux' 'uboot-raspberrypi') + install=${pkgname}.install + backup=('boot/config.txt' 'boot/cmdline.txt') + replaces=('linux-raspberrypi-latest' 'linux-raspberrypi4') + + cd "${srcdir}/${_srcname}" + + local kernver="$(>> You appear to have dynamic memory (CMA) enabled, which is currently broken" + echo ">>> in newer kernels and will cause many issues if left enabled." + echo ">>> Disabling that for you now." + sed -i 's/^cma_/#cma_/g' /boot/config.txt + fi +} + +correct_fstab() { + # starting with v5.10.y, fstab requires a padded zero in the path to /boot + if [[ -f /etc/fstab ]]; then + if grep -q mmcblk1p1 /etc/fstab; then + sed -i 's/mmcblk1p1/mmcblk01p1/' /etc/fstab + fi + fi +} + +post_install () { + disable_cma +} + +post_upgrade() { + if grep "^[^#]*[[:space:]]/boot" etc/fstab 2>&1 >/dev/null; then + if ! grep "[[:space:]]/boot" etc/mtab 2>&1 >/dev/null; then + echo "WARNING: /boot appears to be a separate partition but is not mounted." + echo " You probably just broke your system. Congratulations." + fi + fi + + disable_cma + + if [ "$(vercmp $2 3.18.3)" -lt 0 ]; then + echo "________________________________________________________________________________" + echo "" + echo "WARNING: This kernel provides updated config.txt and cmdline.txt files." + echo " Check for pacnew files in /boot and merge or replace the existing files" + echo " with the new versions." + echo "________________________________________________________________________________" + echo "" + fi + + if [ "$(vercmp $2 5.10.0)" -lt 0 ]; then + correct_fstab + fi +} + +post_remove() { + rm -f boot/initramfs-linux.img +} diff --git a/core/linux-rpi/linux.preset b/core/linux-rpi/linux.preset new file mode 100644 index 000000000..8d7f379c9 --- /dev/null +++ b/core/linux-rpi/linux.preset @@ -0,0 +1,10 @@ +# mkinitcpio preset file for the '%PKGBASE%' package + +ALL_config="/etc/mkinitcpio.conf" +ALL_kver="%KERNVER%" + +PRESETS=('default') + +#default_config="/etc/mkinitcpio.conf" +default_image="/boot/initramfs-linux.img" +#default_options=""