diff options
Diffstat (limited to 'libre')
-rw-r--r-- | libre/linux-libre/PKGBUILD | 47 | ||||
-rw-r--r-- | libre/linux-libre/kernel.its | 217 | ||||
-rw-r--r-- | libre/linux-libre/kernel.keyblock | bin | 0 -> 1208 bytes | |||
-rw-r--r-- | libre/linux-libre/kernel_data_key.vbprivk | bin | 0 -> 1199 bytes | |||
-rw-r--r-- | libre/linux-libre/linux-chromebook.install | 25 |
5 files changed, 285 insertions, 4 deletions
diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD index c2f2a48e3..f9529edd7 100644 --- a/libre/linux-libre/PKGBUILD +++ b/libre/linux-libre/PKGBUILD @@ -12,7 +12,7 @@ pkgbase=linux-libre # Build stock kernel #pkgbase=linux-libre-custom # Build kernel with a different name _srcbasever=4.19-gnu -_srcver=4.19.5-gnu +_srcver=4.19.8-gnu _replacesarchkernel=('linux%') # '%' gets replaced with _kernelname _replacesoldkernels=() # '%' gets replaced with _kernelname @@ -22,11 +22,12 @@ _srcname=linux-${_srcbasever%-*} _archpkgver=${_srcver%-*} pkgver=${_srcver//-/_} pkgrel=1 -rcnrel=armv7-x9 +rcnrel=armv7-x11 arch=(i686 x86_64 armv7h) url="https://linux-libre.fsfla.org/" license=(GPL2) makedepends=(xmlto kmod inetutils bc libelf python-sphinx graphviz) +makedepends_armv7h=(uboot-tools vboot-utils dtc) # for linux-libre-chromebook options=('!strip') source=( "https://linux-libre.fsfla.org/pub/linux-libre/releases/$_srcbasever/linux-libre-$_srcbasever.tar.xz"{,.sign} @@ -40,6 +41,8 @@ source=( '60-linux.hook' '90-linux.hook' # standard config files for mkinitcpio ramdisk 'linux.preset' + # files for signing Chromebooks kernels + 'kernel.its' 'kernel.keyblock' 'kernel_data_key.vbprivk' # armv7h patches "https://repo.parabola.nu/other/rcn-libre/patches/${_srcver%-*}/rcn-libre-${_srcver%-*}-$rcnrel.patch"{,.sig} '0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch' @@ -62,7 +65,7 @@ validpgpkeys=( ) sha512sums=('5bc800b3beff43a8c15bd5515f4e0babe2beb5fa600491b7b37110e22d9b739d293f1e38753ed681be289c51390e0e64b3e60ce0db0a3bfe1f94ee5c014579a3' 'SKIP' - 'dbb9b21c9c89e199ea6e719287f3ef1b7c07dfbda55108216499dfd1f981d80777dde191132417502772a25615511e9ae58a3f7efcf2f023d6a41d734a3099a9' + 'd4de40e6fc7523e9314b89b29cd91af5d9cbbd57bece239e990c5f738ade9ceb53e7cedac30ecbf45009abfb0088a874b6570897dffd52c90e4f39743edd9b0f' 'SKIP' '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' 'SKIP' @@ -76,7 +79,10 @@ sha512sums=('5bc800b3beff43a8c15bd5515f4e0babe2beb5fa600491b7b37110e22d9b739d293 '7ad5be75ee422dda3b80edd2eb614d8a9181e2c8228cd68b3881e2fb95953bf2dea6cbe7900ce1013c9de89b2802574b7b24869fc5d7a95d3cc3112c4d27063a' '2718b58dbbb15063bacb2bde6489e5b3c59afac4c0e0435b97fe720d42c711b6bcba926f67a8687878bd51373c9cf3adb1915a11666d79ccb220bf36e0788ab7' '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf' - 'fa32060ea7a44b94ce8ddc0c204a2ef1ec58551dfa20f94cd0237218c605e23783ff5aa0d2f802c40e58cef1502f0a770e34ac3302c40b5fba46d71ea9f75529' + '167bc73c6c1c63931806238905dc44c7d87c5a5c0f6293159f2133dfe717fb44081018d810675716d1605ec7dff5e8333b87b19e09e2de21d0448e447437873b' + 'bb6718984a7357c9b00c37e4788480e5b8b75018c172ecc1441bc3fc5d2d42444eb5d8c7f9d2e3a7d6fed6d03acb565e3c0559486e494c40a7fe6bd0570c9ede' + '143dea30c6da00e504c99984a98a0eb2411f558fcdd9dfa7f607d6c14e9e7dffff9cb00121d9317044b07e3e210808286598c785ee854084b993ec9cb14d8232' + '8e0485049f64c0532e933e864266b043a087b3c91e2eb564cc692ccd5c25f36f902fed4fae1c4b4b896cfab99b8e239e55965c914674dd360dd6ae847c94768a' 'SKIP' '60aa432465eb3ac10f565799d3dfecea21aaf08e83909c1161d9359e932626edbd1353e712d616c3d785c65a0f699e9c45df35bd9e86365c25399c6b2d45b9e4' '86809feb5ae2759b449ec0cb7a6b3fb457874ed82a72dfda00607e8819c804a0714b5d6a17cbbba44996a36872224af42d1b85f1b3932f43bccb419041d25dc7' @@ -376,7 +382,40 @@ _package-docs() { chmod -Rc u=rwX,go=rX "$pkgdir" } +_package-chromebook() { + pkgdesc="The ${pkgbase^} kernel and modules - Chromebooks" + depends=('linux-libre') + provides=("${_replacesarchkernel[@]/%/-armv7-chromebook=${_archpkgver}}") + conflicts=("${_replacesarchkernel[@]/%/-armv7-chromebook}" "${_replacesoldkernels[@]/%/-armv7-chromebook}") + replaces=("${_replacesarchkernel[@]/%/-armv7-chromebook}" "${_replacesoldkernels[@]/%/-armv7-chromebook}") + install=linux-chromebook.install + + cd $_srcname + + msg2 "Setting options for device tree compiler..." + cp ../kernel.its . + mkimage -D "-I dts -O dtb -p 2048" -f kernel.its kernel.itb + dd if=/dev/zero of=bootloader.bin bs=512 count=1 + echo 'console=tty0 init=/sbin/init root=PARTUUID=%U/PARTNROFF=1 rootwait rw noinitrd' > cmdline + + msg2 "Signing kernel image..." + vbutil_kernel \ + --pack vmlinux.kpart \ + --version 1 \ + --vmlinuz kernel.itb \ + --arch arm \ + --keyblock ../kernel.keyblock \ + --signprivate ../kernel_data_key.vbprivk \ + --config cmdline \ + --bootloader bootloader.bin + + msg2 "Installing kernel sign..." + mkdir -p "$pkgdir/boot" + cp vmlinux.kpart "$pkgdir/boot" +} + pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-docs") +[[ $CARCH = armv7h ]] && pkgname+=("$pkgbase-chromebook") for _p in "${pkgname[@]}"; do eval "package_$_p() { $(declare -f "_package${_p#$pkgbase}") diff --git a/libre/linux-libre/kernel.its b/libre/linux-libre/kernel.its new file mode 100644 index 000000000..66114a49e --- /dev/null +++ b/libre/linux-libre/kernel.its @@ -0,0 +1,217 @@ +/dts-v1/; + +/ { + description = "Chrome OS kernel image with one or more FDT blobs"; + #address-cells = <1>; + images { + kernel@1 { + description = "kernel"; + data = /incbin/("arch/arm/boot/zImage"); + type = "kernel_noload"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0>; + entry = <0>; + }; + fdt@1 { + description = "exynos5250-snow.dtb"; + data = /incbin/("arch/arm/boot/dts/exynos5250-snow.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@2 { + description = "exynos5250-snow-rev5.dtb"; + data = /incbin/("arch/arm/boot/dts/exynos5250-snow-rev5.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@3 { + description = "exynos5250-spring.dtb"; + data = /incbin/("arch/arm/boot/dts/exynos5250-spring.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@4 { + description = "exynos5800-peach-pi.dtb"; + data = /incbin/("arch/arm/boot/dts/exynos5800-peach-pi.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1{ + algo = "sha1"; + }; + }; + fdt@5 { + description = "exynos5420-peach-pit.dtb"; + data = /incbin/("arch/arm/boot/dts/exynos5420-peach-pit.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@6 { + description = "rk3288-veyron-brain.dtb"; + data = /incbin/("arch/arm/boot/dts/rk3288-veyron-brain.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@7 { + description = "rk3288-veyron-jaq.dtb"; + data = /incbin/("arch/arm/boot/dts/rk3288-veyron-jaq.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@8 { + description = "rk3288-veyron-jerry.dtb"; + data = /incbin/("arch/arm/boot/dts/rk3288-veyron-jerry.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@9 { + description = "rk3288-veyron-mickey.dtb"; + data = /incbin/("arch/arm/boot/dts/rk3288-veyron-mickey.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@10 { + description = "rk3288-veyron-minnie.dtb"; + data = /incbin/("arch/arm/boot/dts/rk3288-veyron-minnie.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@11 { + description = "rk3288-veyron-pinky.dtb"; + data = /incbin/("arch/arm/boot/dts/rk3288-veyron-pinky.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1{ + algo = "sha1"; + }; + }; + fdt@12 { + description = "rk3288-veyron-speedy.dtb"; + data = /incbin/("arch/arm/boot/dts/rk3288-veyron-speedy.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@13 { + description = "tegra124-nyan-big.dtb"; + data = /incbin/("arch/arm/boot/dts/tegra124-nyan-big.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + fdt@14 { + description = "tegra124-nyan-blaze.dtb"; + data = /incbin/("arch/arm/boot/dts/tegra124-nyan-blaze.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + }; + configurations { + default = "conf@1"; + conf@1 { + kernel = "kernel@1"; + fdt = "fdt@1"; + }; + conf@2 { + kernel = "kernel@1"; + fdt = "fdt@2"; + }; + conf@3 { + kernel = "kernel@1"; + fdt = "fdt@3"; + }; + conf@4 { + kernel = "kernel@1"; + fdt = "fdt@4"; + }; + conf@5 { + kernel = "kernel@1"; + fdt = "fdt@5"; + }; + conf@6 { + kernel = "kernel@1"; + fdt = "fdt@6"; + }; + conf@7 { + kernel = "kernel@1"; + fdt = "fdt@7"; + }; + conf@8 { + kernel = "kernel@1"; + fdt = "fdt@8"; + }; + conf@9 { + kernel = "kernel@1"; + fdt = "fdt@9"; + }; + conf@10 { + kernel = "kernel@1"; + fdt = "fdt@10"; + }; + conf@11 { + kernel = "kernel@1"; + fdt = "fdt@11"; + }; + conf@12 { + kernel = "kernel@1"; + fdt = "fdt@12"; + }; + conf@13 { + kernel = "kernel@1"; + fdt = "fdt@13"; + }; + conf@14 { + kernel = "kernel@1"; + fdt = "fdt@14"; + }; + }; +}; diff --git a/libre/linux-libre/kernel.keyblock b/libre/linux-libre/kernel.keyblock Binary files differnew file mode 100644 index 000000000..9740be4e6 --- /dev/null +++ b/libre/linux-libre/kernel.keyblock diff --git a/libre/linux-libre/kernel_data_key.vbprivk b/libre/linux-libre/kernel_data_key.vbprivk Binary files differnew file mode 100644 index 000000000..8d392fb29 --- /dev/null +++ b/libre/linux-libre/kernel_data_key.vbprivk diff --git a/libre/linux-libre/linux-chromebook.install b/libre/linux-libre/linux-chromebook.install new file mode 100644 index 000000000..02e08464d --- /dev/null +++ b/libre/linux-libre/linux-chromebook.install @@ -0,0 +1,25 @@ +flash_kernel() { + major=$(mountpoint -d / | cut -f 1 -d ':') + minor=$(mountpoint -d / | cut -f 2 -d ':') + device=$(cat /proc/partitions | awk {'if ($1 == "'${major}'" && $2 == "'${minor}'") print $4 '}) + device="/dev/${device/%2/1}" + + echo "A new kernel version needs to be flashed onto ${device}." + echo "Do you want to do this now? [y|N]" + read -r shouldwe + if [[ $shouldwe =~ ^([yY][eE][sS]|[yY])$ ]]; then + dd if=/boot/vmlinux.kpart of=${device} + sync + else + echo "You can do this later by running:" + echo "# dd if=/boot/vmlinux.kpart of=${device}" + fi +} + +post_install () { + flash_kernel +} + +post_upgrade() { + flash_kernel +} |