From 08f5ca5b50661258964f7b36b6cc0892bf8c65e5 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Sun, 23 Dec 2018 02:18:01 +0100 Subject: Add kernels/linux-libre-x86_64 With this kernel, on machines with an x86_64 compatible CPU, you can run an i686 userspace with an x86_64 kernel. This for instance enables to use the same i686 rootfs on computers with 32bit and 64bit CPUs, while still being able to take advantage of a 64bit kernel on the machines that supports it. The users will then need to force i686 in pacman.conf like that: [options] Architecture = i686 They will also need to select the right kernel at boot. Signed-off-by: Denis 'GNUtoo' Carikli --- ...to-disallow-unprivileged-CLONE_NEWUSER-by.patch | 101 + ...gadget-no-TTY-hangup-on-USB-disconnect-WI.patch | 39 + ...02-fix-Atmel-maXTouch-touchscreen-support.patch | 37 + kernels/linux-libre-x86_64/60-linux.hook | 12 + kernels/linux-libre-x86_64/90-linux.hook | 11 + kernels/linux-libre-x86_64/ChangeLog | 115 + kernels/linux-libre-x86_64/PKGBUILD | 309 + kernels/linux-libre-x86_64/config.x86_64 | 9696 ++++++++++++++++++++ kernels/linux-libre-x86_64/linux.install | 14 + kernels/linux-libre-x86_64/linux.preset | 14 + 10 files changed, 10348 insertions(+) create mode 100644 kernels/linux-libre-x86_64/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch create mode 100644 kernels/linux-libre-x86_64/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch create mode 100644 kernels/linux-libre-x86_64/0002-fix-Atmel-maXTouch-touchscreen-support.patch create mode 100644 kernels/linux-libre-x86_64/60-linux.hook create mode 100644 kernels/linux-libre-x86_64/90-linux.hook create mode 100644 kernels/linux-libre-x86_64/ChangeLog create mode 100644 kernels/linux-libre-x86_64/PKGBUILD create mode 100644 kernels/linux-libre-x86_64/config.x86_64 create mode 100644 kernels/linux-libre-x86_64/linux.install create mode 100644 kernels/linux-libre-x86_64/linux.preset diff --git a/kernels/linux-libre-x86_64/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch b/kernels/linux-libre-x86_64/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch new file mode 100644 index 000000000..22e12e4b0 --- /dev/null +++ b/kernels/linux-libre-x86_64/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch @@ -0,0 +1,101 @@ +From 1ce3e84fdf0b56f477d30acdc8797dedd7330e37 Mon Sep 17 00:00:00 2001 +From: Serge Hallyn +Date: Fri, 31 May 2013 19:12:12 +0100 +Subject: [PATCH] add sysctl to disallow unprivileged CLONE_NEWUSER by default + +Signed-off-by: Serge Hallyn +[bwh: Remove unneeded binary sysctl bits] +Signed-off-by: Daniel Micay +--- + kernel/fork.c | 15 +++++++++++++++ + kernel/sysctl.c | 12 ++++++++++++ + kernel/user_namespace.c | 3 +++ + 3 files changed, 30 insertions(+) + +diff --git a/kernel/fork.c b/kernel/fork.c +index f0b58479534f..8b2d927125c5 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -103,6 +103,11 @@ + + #define CREATE_TRACE_POINTS + #include ++#ifdef CONFIG_USER_NS ++extern int unprivileged_userns_clone; ++#else ++#define unprivileged_userns_clone 0 ++#endif + + /* + * Minimum number of threads to boot the kernel +@@ -1649,6 +1654,10 @@ static __latent_entropy struct task_struct *copy_process( + if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) + return ERR_PTR(-EINVAL); + ++ if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) ++ if (!capable(CAP_SYS_ADMIN)) ++ return ERR_PTR(-EPERM); ++ + /* + * Thread groups must share signals as well, and detached threads + * can only be started up within the thread group. +@@ -2467,6 +2476,12 @@ int ksys_unshare(unsigned long unshare_flags) + if (unshare_flags & CLONE_NEWNS) + unshare_flags |= CLONE_FS; + ++ if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) { ++ err = -EPERM; ++ if (!capable(CAP_SYS_ADMIN)) ++ goto bad_unshare_out; ++ } ++ + err = check_unshare_flags(unshare_flags); + if (err) + goto bad_unshare_out; +diff --git a/kernel/sysctl.c b/kernel/sysctl.c +index cc02050fd0c4..ce2ad2b92897 100644 +--- a/kernel/sysctl.c ++++ b/kernel/sysctl.c +@@ -105,6 +105,9 @@ extern int core_uses_pid; + extern char core_pattern[]; + extern unsigned int core_pipe_limit; + #endif ++#ifdef CONFIG_USER_NS ++extern int unprivileged_userns_clone; ++#endif + extern int pid_max; + extern int pid_max_min, pid_max_max; + extern int percpu_pagelist_fraction; +@@ -514,6 +517,15 @@ static struct ctl_table kern_table[] = { + .proc_handler = proc_dointvec, + }, + #endif ++#ifdef CONFIG_USER_NS ++ { ++ .procname = "unprivileged_userns_clone", ++ .data = &unprivileged_userns_clone, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = proc_dointvec, ++ }, ++#endif + #ifdef CONFIG_PROC_SYSCTL + { + .procname = "tainted", +diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c +index 923414a246e9..6b9dbc257e34 100644 +--- a/kernel/user_namespace.c ++++ b/kernel/user_namespace.c +@@ -26,6 +26,9 @@ + #include + #include + ++/* sysctl */ ++int unprivileged_userns_clone; ++ + static struct kmem_cache *user_ns_cachep __read_mostly; + static DEFINE_MUTEX(userns_state_mutex); + +-- +2.19.1 + diff --git a/kernels/linux-libre-x86_64/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch b/kernels/linux-libre-x86_64/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch new file mode 100644 index 000000000..e9de435fd --- /dev/null +++ b/kernels/linux-libre-x86_64/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch @@ -0,0 +1,39 @@ +From 716120e8010a7f400c6bed7384000e95e1465c94 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= +Date: Mon, 26 Aug 2013 19:19:44 +0300 +Subject: [PATCH 1/2] usb serial gadget: no TTY hangup on USB disconnect [WIP] +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We may want to maintain the TTY over USB disconnects. + +This is useful when we have a terminal console to a host which +power-cycles or for other reasons resets the USB host controller. + +Signed-off-by: Kyösti Mälkki +--- + drivers/usb/gadget/function/u_serial.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c +index b369292..d156a28 100644 +--- a/drivers/usb/gadget/function/u_serial.c ++++ b/drivers/usb/gadget/function/u_serial.c +@@ -1258,8 +1258,13 @@ void gserial_disconnect(struct gserial *gser) + gser->ioport = NULL; + if (port->port.count > 0 || port->openclose) { + wake_up_interruptible(&port->drain_wait); ++#if 0 + if (port->port.tty) + tty_hangup(port->port.tty); ++#else ++ if (port->port.tty) ++ stop_tty(port->port.tty); ++#endif + } + spin_unlock_irqrestore(&port->port_lock, flags); + +-- +1.8.1.1 + diff --git a/kernels/linux-libre-x86_64/0002-fix-Atmel-maXTouch-touchscreen-support.patch b/kernels/linux-libre-x86_64/0002-fix-Atmel-maXTouch-touchscreen-support.patch new file mode 100644 index 000000000..5ad26fc9e --- /dev/null +++ b/kernels/linux-libre-x86_64/0002-fix-Atmel-maXTouch-touchscreen-support.patch @@ -0,0 +1,37 @@ +From ab8cc1b2dc1b716d5c08f72dacbe1eded269f304 Mon Sep 17 00:00:00 2001 +From: André Silva +Date: Tue, 22 Mar 2016 17:58:59 -0300 +Subject: [PATCH 2/2] fix Atmel maXTouch touchscreen support + +The Atmel maXTouch touchscreen works with Linux-libre 3.13-gnu, +but not with the current longterm and mainline kernels in +Parabola. + +Now it needs to load nonfree firmware in mxt_initialize(), +which is in drivers/input/touchscreen/atmel_mxt_ts.c, and the +atmel_mxt_ts driver fails to work. + +This driver works if changing reject_firmware_nowait to +request_firmware_nowait in atmel_mxt_ts.c. This line is +requesting the file named MXT_CFG_NAME, and it's a config file, +not the firmware blob. + +Signed-off-by: André Silva +Signed-off-by: mytbk +--- + drivers/input/touchscreen/atmel_mxt_ts.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c +index 726a83e..d818834 100644 +--- a/drivers/input/touchscreen/atmel_mxt_ts.c ++++ b/drivers/input/touchscreen/atmel_mxt_ts.c +@@ -1989,7 +1989,7 @@ static int mxt_initialize(struct mxt_data *data) + if (error) + goto err_free_object_table; + +- error = reject_firmware_nowait(THIS_MODULE, true, MXT_CFG_NAME, ++ error = request_firmware_nowait(THIS_MODULE, true, MXT_CFG_NAME, + &client->dev, GFP_KERNEL, data, + mxt_config_cb); + if (error) { diff --git a/kernels/linux-libre-x86_64/60-linux.hook b/kernels/linux-libre-x86_64/60-linux.hook new file mode 100644 index 000000000..b33873c85 --- /dev/null +++ b/kernels/linux-libre-x86_64/60-linux.hook @@ -0,0 +1,12 @@ +[Trigger] +Type = File +Operation = Install +Operation = Upgrade +Operation = Remove +Target = usr/lib/modules/%KERNVER%/* +Target = usr/lib/modules/%EXTRAMODULES%/* + +[Action] +Description = Updating %PKGBASE% module dependencies... +When = PostTransaction +Exec = /usr/bin/depmod %KERNVER% diff --git a/kernels/linux-libre-x86_64/90-linux.hook b/kernels/linux-libre-x86_64/90-linux.hook new file mode 100644 index 000000000..fca45abe1 --- /dev/null +++ b/kernels/linux-libre-x86_64/90-linux.hook @@ -0,0 +1,11 @@ +[Trigger] +Type = File +Operation = Install +Operation = Upgrade +Target = usr/lib/modules/%KERNVER%/vmlinuz +Target = usr/lib/initcpio/* + +[Action] +Description = Updating %PKGBASE% initcpios... +When = PostTransaction +Exec = /usr/bin/mkinitcpio -p %PKGBASE% diff --git a/kernels/linux-libre-x86_64/ChangeLog b/kernels/linux-libre-x86_64/ChangeLog new file mode 100644 index 000000000..efca69d26 --- /dev/null +++ b/kernels/linux-libre-x86_64/ChangeLog @@ -0,0 +1,115 @@ +2016-12-23 André Silva + + * linux-libre-4.9_gnu-1 + * Disabled CONFIG_MTD_NAND_NANDSIM [12] + +2016-11-16 André Silva + + * linux-libre-4.8.8_gnu-1 + * Enabled CONFIG_MTD_NAND_NANDSIM [11] + +2016-08-01 André Silva + + * linux-libre-4.6.5_gnu-1 + * Disabled CONFIG_INTEL_MEI_TXE [10] + +2016-05-09 André Silva + + * linux-libre-4.5.3_gnu-1 + * Disabled CONFIG_IO_STRICT_DEVMEM [9] + +2015-12-13 André Silva + + * linux-libre-4.3.2_gnu-1 + * Enabled CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1 and CONFIG_USB_G_DBGP modules [7][8] + +2015-09-23 André Silva + + * linux-libre-4.2.1_gnu-1 + * Removed am335x-pm-firmware.elf from CONFIG_EXTRA_FIRMWARE + +2015-08-20 André Silva + + * linux-libre-4.1.6_gnu-1 + * Added armv7h support + +2015-07-14 André Silva + + * linux-libre-4.1.2_gnu-1 + * Dropped mips64el support + +2015-07-04 André Silva + + * linux-libre-4.0.7_gnu-2 + * Removed linux from conflicts array for the AUR version to avoid making it hard for Arch users to try it out [6] + +2015-03-19 André Silva + + * linux-libre-3.19.2_gnu-1 + * Disabled CONFIG_LOGO, CONFIG_LOGO_LINUX_MONO, CONFIG_LOGO_LINUX_VGA16 and CONFIG_LOGO_LINUX_CLUT224 modules [5] + +2015-03-08 André Silva + + * linux-libre-3.19.1_gnu-1 + * Enabled CONFIG_LOGO, CONFIG_LOGO_LINUX_MONO, CONFIG_LOGO_LINUX_VGA16 and CONFIG_LOGO_LINUX_CLUT224 modules to enable Freedo bootup logos + * Replaced current Freedo to new one from GNU Art Gallery [4] + +2014-08-31 André Silva + + * linux-libre-3.16.1_gnu-1.3 + * Used '_gnu' in kernel pkgver instead of '.gnu' + +2014-08-24 André Silva + + * linux-libre-3.16.1.gnu-1.1 + * Changed upstream format based on the source code + * Disabled CONFIG_LOCALVERSION_AUTO + +2013-07-15 André Silva + + * linux-libre-3.10.1-1 + * Removed linux-libre-kmod-alx package from Parabola due which CONFIG_ALX module was implemented by default in the kernel + +2013-04-30 André Silva + + * linux-libre-3.9-2 + * Removed CONFIG_STUB_POULSBO module from the config files + +2012-12-19 André Silva + + * linux-libre-3.7.1-1 + * Replaced CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" to CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="linux-libre.fsfla.org" + +2012-05-26 André Silva + + * linux-libre-3.4-1.2 + * Disabled CONFIG_MICROCODE_INTEL and CONFIG_MICROCODE_AMD modules [3] + +2012-04-24 André Silva + + * linux-libre-3.3.3-1 + * Disabled CONFIG_STUB_POULSBO module [2] + +2012-04-08 André Silva + + * linux-libre-3.3.1-1.1 + * Disabled CONFIG_IPW2100 and CONFIG_IPW2200 modules [1] + +2012-03-03 André Silva + + * linux-libre-3.2.9-2 + * Enabled CONFIG_FB_VT8623 module [0] + +[0] https://labs.parabola.nu/issues/14 +[1] https://labs.parabola.nu/issues/47 +[2] https://labs.parabola.nu/issues/90 +[3] https://labs.parabola.nu/issues/116 +[4] https://www.gnu.org/graphics/gnu-and-freedo/gnu-and-freedo.html +[5] https://labs.parabola.nu/issues/685 +[6] https://labs.parabola.nu/issues/750 +[7] https://labs.parabola.nu/issues/857 +[8] https://labs.parabola.nu/issues/858 +[9] https://labs.parabola.nu/issues/1000 +[10] https://labs.parabola.nu/issues/1062 +[11] https://labs.parabola.nu/issues/1143 +[12] https://labs.parabola.nu/issues/1143#note-7 diff --git a/kernels/linux-libre-x86_64/PKGBUILD b/kernels/linux-libre-x86_64/PKGBUILD new file mode 100644 index 000000000..bde39668d --- /dev/null +++ b/kernels/linux-libre-x86_64/PKGBUILD @@ -0,0 +1,309 @@ +# Maintainer: David P. +# Contributor: André Silva +# Contributor: Márcio Silva +# Contributor: fauno +# Contributor: Sorin-Mihai Vârgolici +# Contributor: Michał Masłowski +# Contributor: Luke R. +# Contributor: Andreas Grapentin + +# Based on linux package + +pkgbase=linux-libre-x86_64 # Build stock kernel +#pkgbase=linux-libre-custom # Build kernel with a different name +_srcbasever=4.19-gnu +_srcver=4.19.8-gnu + +_replacesarchkernel=('linux%') # '%' gets replaced with _kernelname +_replacesoldkernels=() # '%' gets replaced with _kernelname +_replacesoldmodules=() # '%' gets replaced with _kernelname + +_srcname=linux-${_srcbasever%-*} +_archpkgver=${_srcver%-*} +pkgver=${_srcver//-/_} +pkgrel=1 +arch=(i686) +url="https://linux-libre.fsfla.org/" +license=(GPL2) +makedepends=(xmlto kmod inetutils bc libelf python-sphinx graphviz) +makedepends+=('x86_64-pc-linux-gnu-gcc') +options=('!strip') +source=( + "https://linux-libre.fsfla.org/pub/linux-libre/releases/$_srcbasever/linux-libre-$_srcbasever.tar.xz"{,.sign} + "https://linux-libre.fsfla.org/pub/linux-libre/releases/$_srcver/patch-$_srcbasever-$_srcver.xz"{,.sign} + "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_clut224.ppm"{,.sig} + "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_mono.pbm"{,.sig} + "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_vga16.ppm"{,.sig} + # the kernel config file + 'config.x86_64' + # pacman hooks for depmod and initramfs regeneration + '60-linux.hook' '90-linux.hook' + # standard config files for mkinitcpio ramdisk + 'linux.preset' + # other patches + '0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch' + '0002-fix-Atmel-maXTouch-touchscreen-support.patch' + '0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch' +) +validpgpkeys=( + '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva + '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P. +) +sha512sums=('5bc800b3beff43a8c15bd5515f4e0babe2beb5fa600491b7b37110e22d9b739d293f1e38753ed681be289c51390e0e64b3e60ce0db0a3bfe1f94ee5c014579a3' + 'SKIP' + 'd4de40e6fc7523e9314b89b29cd91af5d9cbbd57bece239e990c5f738ade9ceb53e7cedac30ecbf45009abfb0088a874b6570897dffd52c90e4f39743edd9b0f' + 'SKIP' + '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' + 'SKIP' + '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1' + 'SKIP' + '7a3716bfe3b9f546da309c7492f3e08f8f506813afeb1c737a474c83313d5c313cf4582b65215c2cfce3b74d9d1021c96e8badafe8f6e5b01fe28d2b5c61ae78' + 'SKIP' + '068d6ce4ea72955a1cbdd1d4ba6361a8d4e0e74b56651995e1602c8e62255b7b6e65abe51dc5256d97324ecf56b92f4c1e9cdd20e12914a95820b1058961707c' + '7ad5be75ee422dda3b80edd2eb614d8a9181e2c8228cd68b3881e2fb95953bf2dea6cbe7900ce1013c9de89b2802574b7b24869fc5d7a95d3cc3112c4d27063a' + '2718b58dbbb15063bacb2bde6489e5b3c59afac4c0e0435b97fe720d42c711b6bcba926f67a8687878bd51373c9cf3adb1915a11666d79ccb220bf36e0788ab7' + '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf' + '167bc73c6c1c63931806238905dc44c7d87c5a5c0f6293159f2133dfe717fb44081018d810675716d1605ec7dff5e8333b87b19e09e2de21d0448e447437873b' + 'bb6718984a7357c9b00c37e4788480e5b8b75018c172ecc1441bc3fc5d2d42444eb5d8c7f9d2e3a7d6fed6d03acb565e3c0559486e494c40a7fe6bd0570c9ede' + '143dea30c6da00e504c99984a98a0eb2411f558fcdd9dfa7f607d6c14e9e7dffff9cb00121d9317044b07e3e210808286598c785ee854084b993ec9cb14d8232' + '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af' + 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168' + 'ba561ef861c56002de25ec6f63211e758f3d26eaa7ff0e4a16ffd096d5fe7019d9df343658adc0535684303888d022aa816fc0b282da27ac1ca29dfc0b0e2be0') + +_kernelname=${pkgbase#linux-libre} +_replacesarchkernel=("${_replacesarchkernel[@]/\%/${_kernelname}}") +_replacesoldkernels=("${_replacesoldkernels[@]/\%/${_kernelname}}") +_replacesoldmodules=("${_replacesoldmodules[@]/\%/${_kernelname}}") + +KARCH=x86 + +prepare() { + cd $_srcname + + # add upstream patch + if [ "$_srcbasever" != "$_srcver" ]; then + patch -p1 -i ../patch-$_srcbasever-$_srcver + fi + + # add freedo as boot logo + install -m644 -t drivers/video/logo \ + ../logo_linux_{clut224.ppm,vga16.ppm,mono.pbm} + + # Arch's linux patches + patch -p1 -i ../0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch + + # maintain the TTY over USB disconnects + # http://www.coreboot.org/EHCI_Gadget_Debug + patch -p1 -i ../0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch + + # fix Atmel maXTouch touchscreen support + # https://labs.parabola.nu/issues/877 + # http://www.fsfla.org/pipermail/linux-libre/2015-November/003202.html + patch -p1 -i ../0002-fix-Atmel-maXTouch-touchscreen-support.patch + + msg2 "Setting version..." + scripts/setlocalversion --save-scmversion + echo "-$pkgrel" > localversion.10-pkgrel + echo "$_kernelname" > localversion.20-pkgname + + msg2 "Setting config..." + cp ../config.x86_64 .config + make olddefconfig + + make -s kernelrelease > ../version + msg2 "Prepared %s version %s" "$pkgbase" "$(<../version)" +} + +build() { + cd $_srcname + make CROSS_COMPILE=x86_64-pc-linux-gnu- bzImage modules htmldocs +} + +_package() { + pkgdesc="The ${pkgbase^} kernel and modules" + [[ $pkgbase = linux-libre ]] && groups=(base base-openrc) + depends=(coreutils linux-libre-firmware kmod mkinitcpio) + optdepends=('crda: to set the correct wireless channels of your country') + provides=("${_replacesarchkernel[@]/%/=${_archpkgver}}" "LINUX-ABI_VERSION=${_srcver%%-*}") + conflicts=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}") + replaces=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}") + backup=("etc/mkinitcpio.d/$pkgbase.preset") + install=linux.install + + local kernver="$( "$startdir/$install.pkg" + true && install=$install.pkg + + # fill in mkinitcpio preset and pacman hooks + sed "$subst" ../linux.preset | install -Dm644 /dev/stdin \ + "$pkgdir/etc/mkinitcpio.d/$pkgbase.preset" + 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" + + msg2 "Fixing permissions..." + chmod -Rc u=rwX,go=rX "$pkgdir" +} + +_package-headers() { + pkgdesc="Header files and scripts for building modules for ${pkgbase^} kernel" + provides=("${_replacesarchkernel[@]/%/-headers=${_archpkgver}}") + conflicts=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}") + replaces=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}") + + local builddir="$pkgdir/usr/lib/modules/$(/dev/null && ! mountpoint -q /boot; then + echo "WARNING: /boot appears to be a separate partition but is not mounted." + fi + fi +} + +post_remove() { + rm -f boot/initramfs-%PKGBASE%.img + rm -f boot/initramfs-%PKGBASE%-fallback.img +} + +# vim:set ft=sh ts=8 sts=2 sw=2 et: diff --git a/kernels/linux-libre-x86_64/linux.preset b/kernels/linux-libre-x86_64/linux.preset new file mode 100644 index 000000000..66709a8c1 --- /dev/null +++ b/kernels/linux-libre-x86_64/linux.preset @@ -0,0 +1,14 @@ +# mkinitcpio preset file for the '%PKGBASE%' package + +ALL_config="/etc/mkinitcpio.conf" +ALL_kver="/boot/vmlinuz-%PKGBASE%" + +PRESETS=('default' 'fallback') + +#default_config="/etc/mkinitcpio.conf" +default_image="/boot/initramfs-%PKGBASE%.img" +#default_options="" + +#fallback_config="/etc/mkinitcpio.conf" +fallback_image="/boot/initramfs-%PKGBASE%-fallback.img" +fallback_options="-S autodetect" -- cgit v1.2.2