commit ecfc1992d3912fe0e09ad29a01df7d4ecbf98bd5 Author: root Date: Tue Sep 29 22:50:16 2020 +0200 Add precompile Add kernbuild diff --git a/gentoo/emerge-precompile/README.md b/gentoo/emerge-precompile/README.md new file mode 100644 index 0000000..37fe4da --- /dev/null +++ b/gentoo/emerge-precompile/README.md @@ -0,0 +1,13 @@ +Based on idea/code from Sven Vermeulen of Gentoo. + +Run in nightly crontab to update packages and precompile them to binary +ebuilds to save time on install. + +To use them in emerge use parameter `-k`, e.g. like `emerge -DNvuak --with-bdeps=yes world` + +Stuff that makes no sense is exluded like modules and virtual packages. + + +Requires +- bash +- logger \ No newline at end of file diff --git a/gentoo/emerge-precompile/emerge-precompile.sh b/gentoo/emerge-precompile/emerge-precompile.sh new file mode 100755 index 0000000..7b8138c --- /dev/null +++ b/gentoo/emerge-precompile/emerge-precompile.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# VERSION=2018-01-28.2 +# TODO: Register failed packes to /var/eos/precompile.failed +# and skip on rerun +# + + +# script based on idea of +# sven vermeulen http://blog.siphos.be/2013/04/gentoo-protip-using-buildpkgonly/ + +echo "Start w/ eix-sync" | logger -t precompile +eix-sync -q + + + +LIST=$(mktemp); + +#emerge -puDN --with-bdeps=y --color=n --columns --quiet=y world | grep "^.*[a-z][a-z][a-z]-.*/[a-z0-9].*" | awk '{print $2}' > ${LIST}; + +# New: Skip already compiled packages, by excluding result starting with [binary +# New: Include --binpkg-respect-use=y, should be default in this case, but just to be sure. +# New: Set PORTAGE_ELOG_SYSTEM-env-var so we won't get per-package-mails from ebuild on systems having sending mails enabled in make.conf +PORTAGE_ELOG_SYSTEM="save" emerge -puDNk --with-bdeps=y --changed-deps=y --binpkg-respect-use=y --color=n --quiet=y world | grep "^\[ebuild " | sed -nr 's/^\[.+\]\ ([^\ ]+)(\ .*|$)/\1/p' > ${LIST}; + +for PACKAGE in $(cat ${LIST}); +do + skip=0 + if [ -f /etc/eos/precompile.exclude ]; then + for i in `cat /etc/eos/precompile.exclude | grep -v "^#"`; do + if [ "`echo ${PACKAGE} | grep "^${i}" | wc -l`" == "1" ]; then + skip=1 + break; + fi + done + fi + if [ "$skip" == "1" ]; then + echo "Skipping ${PACKAGE} due to /etc/eos/precompile.exclude" + echo "Skipping ${PACKAGE} due to /etc/eos/precompile.exclude" | logger -t precompile + else + printf "Building binary package for ${PACKAGE}... " + emerge -1uN --quiet-build --quiet=y --changed-deps=y --buildpkgonly =${PACKAGE}; + if [[ $? -eq 0 ]]; + then + echo "ok"; + echo "OK: ${PACKAGE} " | logger -t precompile + else + echo "failed"; + echo "FAILED: ${PACKAGE} " | logger -t precompile + fi + fi +done + +echo "Cleaning distfiles + packages" | logger -t precompile +eclean packages +eclean distfiles +rm $LIST + +echo "Ending" | logger -t precompile diff --git a/gentoo/kernbuild/README.md b/gentoo/kernbuild/README.md new file mode 100644 index 0000000..2b90925 --- /dev/null +++ b/gentoo/kernbuild/README.md @@ -0,0 +1,22 @@ + + +## kernbuild_w_zfs + +Builds an prepares a kernel together with an initramfs. + +Includes ZFS-modules. Also builds a shiftfs-module (for LXD, not for use with overlayfs!) + +Requires: +- genkernel +- linux-source + +Parameters: +- Suffix for your kernel e.g. turing1 (adds -turing1 to final kernel version instead of x86_64) + +Howto: +- emerge gentoo-source +- check link /usr/src/linux to new source is OK +- make menuconfig +- Run script +- In boot check existances of new kernels +- Add to bootloader diff --git a/gentoo/kernbuild/kernbuild_w_zfs b/gentoo/kernbuild/kernbuild_w_zfs new file mode 100755 index 0000000..1568f90 --- /dev/null +++ b/gentoo/kernbuild/kernbuild_w_zfs @@ -0,0 +1,90 @@ +#!/bin/sh + + +LOCALVERSION="-x86_64" + + +if [ "$1" != "" ]; then + LOCALVERSION="-eo${1}" +fi + + +echo "Going after kernel with localversion ${LOCALVERSION}" + +sleep 2 + +PARAM="--no-clean --no-save-config --no-clean --mountboot \ + --no-lvm \ + --busybox \ + --mdadm \ + --no-iscsi \ + --e2fsprogs \ + --disklabel \ + --hyperv \ + --virtio \ + --zfs \ + --install \ + --microcode \ + --kernel-localversion=${LOCALVERSION} +" + +genkernel $PARAM all || exit 1 +emerge @module-rebuild || exit 1 +genkernel $PARAM initramfs || exit 1 + +########### ShiftFS + + +echo "Now rebuilding shiftfs" + +S=`dirname $0` +T="/usr/src/shiftfs" +mkdir -p $T + +echo "LOCALVERSION=${LOCALVERSION}" > $T/Makefile + +cat >>$T/Makefile <<'EOF' + +modname := shiftfs +obj-m := $(modname).o + +KVERSION := $(shell readlink /usr/src/linux | tr -d '/' | cut -b 7- ) +KDIR := /lib/modules/$(KVERSION)$(LOCALVERSION) +PWD := "$$(pwd)" + +ifdef DEBUG +CFLAGS_$(obj-m) := -DDEBUG +endif + +EXTRA_CFLAGS := -DSHIFTFS_MAGIC=0x6a656a62 + +default: + $(MAKE) -C $(KDIR)/build M=$(PWD) EXTRA_CFLAGS="${EXTRA_CFLAGS}" modules + +clean: + $(MAKE) O=$(PWD) -C $(KDIR)/build M=$(PWD) clean + +load: + -rmmod $(modname) + insmod $(modname).ko + +install: + install -m 0755 -o root -g root -d $(KDIR)/extra/fs + install -m 0755 -o root -g root $(modname).ko $(KDIR)/extra/fs/ + depmod -a $(KVERSION)$(LOCALVERSION) + +uninstall: + rm $(KDIR)/extra/fs/$(modname).ko + depmod -a $(KVERSION)$(LOCALVERSION) + + +EOF + + + +#cp ${S}/Makefile.shiftfs $T/Makefile || exit 1 +mv -f $T/shiftfs.c $T/shiftfs.c.bak 2> /dev/null +wget -O $T/shiftfs.c https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/focal/plain/fs/shiftfs.c +make -C $T clean && make -C $T && make -C $T install || exit 1 + +echo Complete with success