PKGBUILDs/core/linux-rpi/PKGBUILD
graysky 4e550fef50 core/linux-rpi: slim down cmdline.txt
Removed the following parameters:
1. selinux=0
2. plymouth.enable=0
3. smsc95xx.turbo_mode=N
4. dwc_otg.lpm_enable=0
5. kgdboc=serial0,115200

Notes:
1. force not loading SELinux infrastructure which we currently do not supply
2. force disabling of plymouth which I think we do not supply
3. avoided network issues under heavy load circa 2012 likely no longer needed
4. turned off link power management which may have prevented issues with shitty
   drivers in older kernels likely not an issue on a modern kernel tree
5. enabled debugging over the serial console which is unnecessary for most
   user... advanced users will likely be savvy enough with cmdline.txt to
   edit it to match their needs
2022-09-03 16:42:24 -04:00

218 lines
7.3 KiB
Bash

# Maintainer: graysky <graysky@archlinux.us>
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
# Maintainer: Oleg Rakhmanov <oleg@archlinuxarm.org>
# Maintainer: Dave Higham <pepedog@archlinuxarm.org>
# Contributer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
pkgbase=linux-rpi
_commit=f64b5666e11dce481737208027d4af300c63842d
_srcname=linux-${_commit}
_kernelname=${pkgbase#linux}
pkgver=5.15.61
pkgrel=4
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-${_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=('decc95d4231f214895ba5cf61d8c2233'
'6f2eb280d7f10c1926ae6ebe54fbcc96'
'f66a7ea3feb708d398ef57e4da4815e9'
'86d4a35722b5410e3b29fc92dae15d4b'
'0a5f16bfec6ad982a2f6782724cca8ba'
'441ec084c47cddc53e592fb0cbce4edf')
md5sums_armv7h=('225a2949ad41780c180f26b9d98fcd8c'
'aedda0148db2692971671e6aa90ad9ff')
md5sums_aarch64=('5ceb9b8d4b3cf53830fffcdeb9533762'
'7e4403dea857e40005bf76beda9927ff')
# 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 $(<version)"
}
build() {
cd "${srcdir}/${_srcname}"
make "$_image" modules dtbs
}
_package() {
pkgdesc="RPi Foundation patched Linux kernel and modules"
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7' 'firmware-raspberrypi')
optdepends=('wireless-regdb: to set the correct wireless channels of your country')
provides=("linux=${pkgver}" 'WIREGUARD-MODULE')
conflicts=('linux' 'uboot-raspberrypi')
install=${pkgname}.install
backup=('boot/config.txt' 'boot/cmdline.txt')
replaces=('linux-raspberrypi-latest' 'linux-raspberrypi4')
cd "${srcdir}/${_srcname}"
local kernver="$(<version)"
local modulesdir="$pkgdir/usr/lib/modules/$kernver"
# Used by mkinitcpio to name the kernel
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
echo "Installing modules..."
make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
DEPMOD=/doesnt/exist modules_install # Suppress depmod
# remove build and source links
rm "$modulesdir"/{source,build}
echo "Installing Arch ARM specific stuff..."
mkdir -p "${pkgdir}"/boot
make INSTALL_DTBS_PATH="${pkgdir}/boot" dtbs_install
if [[ $CARCH == "aarch64" ]]; then
# drop hard-coded devicetree=foo.dtb in /boot/config.txt for
# autodetected load of supported of models at boot
find "${pkgdir}/boot/broadcom" -type f -print0 | xargs -0 mv -t "${pkgdir}/boot"
rmdir "${pkgdir}/boot/broadcom"
fi
cp arch/$KARCH/boot/$_image "${pkgdir}/boot/$_kernel"
cp arch/$KARCH/boot/dts/overlays/README "${pkgdir}/boot/overlays"
install -m644 ../$_bconfig "${pkgdir}/boot/config.txt"
install -m644 ../cmdline.txt "${pkgdir}/boot"
# sed expression for following substitutions
local _subst="
s|%PKGBASE%|${pkgbase}|g
s|%KERNVER%|${kernver}|g
"
# install mkinitcpio preset file
sed "${_subst}" ../linux.preset |
install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
# install pacman hooks
sed "${_subst}" ../60-linux.hook |
install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/60-${pkgbase}.hook"
sed "${_subst}" ../90-linux.hook |
install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook"
}
_package-headers() {
pkgdesc="RPi Foundation header and scripts for building modules for Linux kernel"
provides=("linux-headers=${pkgver}")
conflicts=('linux-headers')
replaces=('linux-raspberrypi-latest-headers' 'linux-raspberrypi4-headers')
cd ${_srcname}
local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
echo "Installing build files..."
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
localversion.* version
install -Dt "$builddir/kernel" -m644 kernel/Makefile
install -Dt "$builddir/arch/$KARCH" -m644 "arch/$KARCH/Makefile"
cp -t "$builddir" -a scripts
# add xfs and shmem for aufs building
mkdir -p "$builddir"/{fs/xfs,mm}
echo "Installing headers..."
cp -t "$builddir" -a include
cp -t "$builddir/arch/$KARCH" -a "arch/$KARCH/include"
install -Dt "$builddir/arch/$KARCH/kernel" -m644 "arch/$KARCH/kernel/asm-offsets.s"
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
# https://bugs.archlinux.org/task/13146
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# https://bugs.archlinux.org/task/20402
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
# https://bugs.archlinux.org/task/71392
install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h
echo "Installing KConfig files..."
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
echo "Removing unneeded architectures..."
local _arch
for _arch in "$builddir"/arch/*/; do
if [[ $CARCH == "aarch64" ]]; then
[[ $_arch = */"$KARCH"/ || $_arch == */arm/ ]] && continue
else
[[ $_arch = */"$KARCH"/ ]] && continue
fi
echo "Removing $(basename "$_arch")"
rm -r "$_arch"
done
echo "Removing documentation..."
rm -r "$builddir/Documentation"
echo "Removing broken symlinks..."
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
echo "Removing loose objects..."
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
echo "Stripping build tools..."
local file
while read -rd '' file; do
case "$(file -bi "$file")" in
application/x-sharedlib\;*) # Libraries (.so)
strip -v $STRIP_SHARED "$file" ;;
application/x-archive\;*) # Libraries (.a)
strip -v $STRIP_STATIC "$file" ;;
application/x-executable\;*) # Binaries
strip -v $STRIP_BINARIES "$file" ;;
application/x-pie-executable\;*) # Relocatable binaries
strip -v $STRIP_SHARED "$file" ;;
esac
done < <(find "$builddir" -type f -perm -u+x)
echo "Adding symlink..."
mkdir -p "$pkgdir/usr/src"
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
}
pkgname=("${pkgbase}" "${pkgbase}-headers")
for _p in ${pkgname[@]}; do
eval "package_${_p}() {
_package${_p#${pkgbase}}
}"
done