From 870278cb0f5d0e3b0f65a6bd336ea6cb5c7b355f Mon Sep 17 00:00:00 2001 From: yafen Date: Thu, 4 Mar 2021 22:29:52 +0800 Subject: [PATCH 1/3] build raspberrypi-kernel.rpm --- _multibuild | 3 + raspberrypi-kernel.spec | 170 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 _multibuild create mode 100644 raspberrypi-kernel.spec diff --git a/_multibuild b/_multibuild new file mode 100644 index 00000000..01794d81 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + raspberrypi-kernel + \ No newline at end of file diff --git a/raspberrypi-kernel.spec b/raspberrypi-kernel.spec new file mode 100644 index 00000000..4bb969a2 --- /dev/null +++ b/raspberrypi-kernel.spec @@ -0,0 +1,170 @@ +%global Arch $(echo %{_host_cpu} | sed -e s/i.86/x86/ -e s/x86_64/x86/ -e s/aarch64.*/arm64/) + +%global KernelVer %{version}-%{release}.raspi.%{_target_cpu} + +%global hulkrelease 4.7.0 + +%global debug_package %{nil} + +Name: raspberrypi-kernel +Version: 5.10.0 +Release: %{hulkrelease}.1 +Summary: Linux Kernel +License: GPLv2 +URL: http://www.kernel.org/ +Source0: kernel.tar.gz + +BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, tar +BuildRequires: bzip2, xz, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk +BuildRequires: gcc >= 3.4.2, binutils >= 2.12 +BuildRequires: hostname, net-tools, bc +BuildRequires: xmlto, asciidoc +BuildRequires: openssl-devel +BuildRequires: hmaccalc +BuildRequires: ncurses-devel +BuildRequires: elfutils-libelf-devel +BuildRequires: rpm >= 4.14.2 +BuildRequires: elfutils-devel zlib-devel binutils-devel newt-devel perl(ExtUtils::Embed) bison +BuildRequires: audit-libs-devel +BuildRequires: pciutils-devel gettext +BuildRequires: rpm-build, elfutils +BuildRequires: numactl-devel python3-devel glibc-static python3-docutils +BuildRequires: perl-generators perl(Carp) libunwind-devel gtk2-devel libbabeltrace-devel java-1.8.0-openjdk +AutoReq: no +AutoProv: yes + +Provides: raspberrypi-kernel-aarch64 = %{version}-%{release} + +ExclusiveArch: aarch64 +ExclusiveOS: Linux + +%description +The Linux Kernel image for RaspberryPi. + +%prep +%setup -q -n kernel-%{version} -c +mv kernel linux-%{version} +cp -rl linux-%{version} linux-%{KernelVer} + +cd linux-%{KernelVer} + +find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null +find . -name .gitignore -exec rm -f {} \; >/dev/null + +%build +cd linux-%{KernelVer} + +perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{release}.raspi.%{_target_cpu}/" Makefile + +make ARCH=%{Arch} %{?_smp_mflags} bcm2711_defconfig + +make ARCH=%{Arch} %{?_smp_mflags} KERNELRELEASE=%{KernelVer} + +%install +cd linux-%{KernelVer} + +## install linux + +make ARCH=%{Arch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=%{KernelVer} +rm -rf $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/source $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build + +mkdir -p $RPM_BUILD_ROOT/boot +TargetImage=$(make -s image_name) +TargetImage=${TargetImage%.*} +install -m 755 $TargetImage $RPM_BUILD_ROOT/boot/vmlinuz-%{KernelVer} +install -m 644 .config $RPM_BUILD_ROOT/boot/config-%{KernelVer} +install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-%{KernelVer} + +mkdir -p $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays +install -m 644 $(find arch/%{Arch}/boot/dts/broadcom/ -name "*.dtb") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/ +install -m 644 $(find arch/%{Arch}/boot/dts/overlays/ -name "*.dtbo") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays/ +install -m 644 $(find arch/%{Arch}/boot/dts/overlays/ -name "*.dtb") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays/ +install -m 644 arch/%{Arch}/boot/dts/overlays/README $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays/ + +%postun +version_old=0 +if [ "$1" == "0" ]; then + version_old=old +else + version_tmp=0 + name_len=`echo -n %{name}-|wc -c` + for item in `rpm -qa %{name} 2>/dev/null` + do + cur_version=${item:name_len} + cpu_version=${cur_version##*.} + if [ "$cpu_version" == "%{_target_cpu}" ]; then + cur_version=${cur_version%.*} + cur_version=$cur_version.raspi.$cpu_version + if [[ "$cur_version" != "%{KernelVer}" && "$cur_version" > "$version_tmp" ]]; then + version_tmp=$cur_version + fi + fi + done + if [[ "$version_tmp" < "%{KernelVer}" ]]; then + version_old=$version_tmp + fi +fi +if [ "$version_old" != "0" ]; then + if [ -f /boot/vmlinuz-$version_old ] && [ -d /boot/dtb-$version_old ] && ( [ "$version_old" == "old" ] || [ -d /lib/modules/$version_old ] ); then + ls /boot/dtb-$version_old/overlays/*.dtbo > /dev/null 2>&1 + if [ "$?" == "0" ]; then + ls /boot/dtb-$version_old/*.dtb > /dev/null 2>&1 + if [ "$?" == "0" ]; then + rm -rf /boot/*.dtb /boot/overlays /boot/kernel8.img + mkdir /boot/overlays + install -m 755 /boot/vmlinuz-$version_old /boot/kernel8.img + for file in `ls /boot/dtb-$version_old/*.dtb 2>/dev/null` + do + if [ -f $file ]; then + install -m 644 $file /boot/`basename $file` + fi + done + install -m 644 $(find /boot/dtb-$version_old/overlays/ -name "*.dtbo") /boot/overlays/ + install -m 644 $(find /boot/dtb-$version_old/overlays/ -name "*.dtb") /boot/overlays/ + install -m 644 /boot/dtb-$version_old/overlays/README /boot/overlays/ + else + echo "warning: files in /boot/dtb-$version_old/*.dtb missing when resetting kernel as $version_old, something may go wrong when starting this device next time." + fi + else + echo "warning: files in /boot/dtb-$version_old/overlays missing when resetting kernel as $version_old, something may go wrong when starting this device next time." + fi + else + echo "warning: files missing when resetting kernel as $version_old, something may go wrong when starting this device next time." + fi +fi + +%posttrans +if [ "$1" == "1" ]; then + if [ ! -f /boot/vmlinuz-old ] && [ -f /boot/kernel8.img ]; then + mkdir /boot/dtb-old + mv /boot/*.dtb /boot/dtb-old + mv /boot/overlays /boot/dtb-old/ + mv /boot/kernel8.img /boot/vmlinuz-old + fi +fi +rm -rf /boot/*.dtb /boot/overlays /boot/kernel8.img +mkdir -p /boot/overlays +install -m 755 /boot/vmlinuz-%{KernelVer} /boot/kernel8.img +for file in `ls /boot/dtb-%{KernelVer}/*.dtb 2>/dev/null` +do + if [ -f $file ]; then + install -m 644 $file /boot/`basename $file` + fi +done +install -m 644 $(find /boot/dtb-%{KernelVer}/overlays/ -name "*.dtbo") /boot/overlays/ +install -m 644 $(find /boot/dtb-%{KernelVer}/overlays/ -name "*.dtb") /boot/overlays/ +install -m 644 /boot/dtb-%{KernelVer}/overlays/README /boot/overlays/ + + +%files +%defattr (-, root, root) +%doc +/boot/config-* +/boot/System.map-* +/boot/vmlinuz-* +/boot/dtb-* +/lib/modules/%{KernelVer} + +%changelog +* Thu Mar 4 2021 Yafen Fang - 5.10.0-4.7.0.1 +- package init based on openEuler 5.10.0-4.7.0 -- Gitee From 7535aeaa3161c8ee4bde5a0ef8897747c74a046f Mon Sep 17 00:00:00 2001 From: yafen Date: Fri, 5 Mar 2021 14:52:34 +0800 Subject: [PATCH 2/3] fix: cp overlays/*.dtb in RPi --- raspberrypi-kernel.spec | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/raspberrypi-kernel.spec b/raspberrypi-kernel.spec index 4bb969a2..81e47893 100644 --- a/raspberrypi-kernel.spec +++ b/raspberrypi-kernel.spec @@ -78,7 +78,9 @@ install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-%{KernelVer} mkdir -p $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays install -m 644 $(find arch/%{Arch}/boot/dts/broadcom/ -name "*.dtb") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/ install -m 644 $(find arch/%{Arch}/boot/dts/overlays/ -name "*.dtbo") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays/ -install -m 644 $(find arch/%{Arch}/boot/dts/overlays/ -name "*.dtb") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays/ +if ls arch/%{Arch}/boot/dts/overlays/*.dtb > /dev/null 2>&1; then + install -m 644 $(find arch/%{Arch}/boot/dts/overlays/ -name "*.dtb") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays/ +fi install -m 644 arch/%{Arch}/boot/dts/overlays/README $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/overlays/ %postun @@ -120,7 +122,9 @@ if [ "$version_old" != "0" ]; then fi done install -m 644 $(find /boot/dtb-$version_old/overlays/ -name "*.dtbo") /boot/overlays/ - install -m 644 $(find /boot/dtb-$version_old/overlays/ -name "*.dtb") /boot/overlays/ + if ls /boot/dtb-$version_old/overlays/*.dtb > /dev/null 2>&1; then + install -m 644 $(find /boot/dtb-$version_old/overlays/ -name "*.dtb") /boot/overlays/ + fi install -m 644 /boot/dtb-$version_old/overlays/README /boot/overlays/ else echo "warning: files in /boot/dtb-$version_old/*.dtb missing when resetting kernel as $version_old, something may go wrong when starting this device next time." @@ -152,7 +156,9 @@ do fi done install -m 644 $(find /boot/dtb-%{KernelVer}/overlays/ -name "*.dtbo") /boot/overlays/ -install -m 644 $(find /boot/dtb-%{KernelVer}/overlays/ -name "*.dtb") /boot/overlays/ +if ls /boot/dtb-%{KernelVer}/overlays/*.dtb > /dev/null 2>&1; then + install -m 644 $(find /boot/dtb-%{KernelVer}/overlays/ -name "*.dtb") /boot/overlays/ +fi install -m 644 /boot/dtb-%{KernelVer}/overlays/README /boot/overlays/ -- Gitee From 48c208068a6318159dbb3c5052a3b38f736bb18a Mon Sep 17 00:00:00 2001 From: yafen Date: Tue, 9 Mar 2021 21:14:40 +0800 Subject: [PATCH 3/3] update to openEuler 5.10.0-4.9.0 --- raspberrypi-kernel.spec | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/raspberrypi-kernel.spec b/raspberrypi-kernel.spec index 81e47893..5df70612 100644 --- a/raspberrypi-kernel.spec +++ b/raspberrypi-kernel.spec @@ -2,13 +2,13 @@ %global KernelVer %{version}-%{release}.raspi.%{_target_cpu} -%global hulkrelease 4.7.0 +%global hulkrelease 4.9.0 %global debug_package %{nil} Name: raspberrypi-kernel Version: 5.10.0 -Release: %{hulkrelease}.1 +Release: %{hulkrelease}.2 Summary: Linux Kernel License: GPLv2 URL: http://www.kernel.org/ @@ -172,5 +172,19 @@ install -m 644 /boot/dtb-%{KernelVer}/overlays/README /boot/overlays/ /lib/modules/%{KernelVer} %changelog +* Tue Mar 9 2021 Yafen Fang - 5.10.0-4.9.0.2 +- arm64: ipi_nmi: fix compile error when CONFIG_KGDB is disabled +- kbuild: fix compile error in Makefile.lib +- kbuild: keep the original function for non-RPi +- arm64: keep the original function for non-RPi +- usb: keep the original function for non-RPi +- mm: keep the original function for non-RPi +- video&logo: keep the original function for non-RPi +- serial: keep the original function for non-RPi +- some drivers: keep the original function for non-RPi +- net: keep the original function for non-RPi +- gpio:keep the original function for non-RPi +- arm64: add Raspberry Pi specific config: CONFIG_OPENEULER_RASPBERRYPI for openEuler + * Thu Mar 4 2021 Yafen Fang - 5.10.0-4.7.0.1 - package init based on openEuler 5.10.0-4.7.0 -- Gitee