diff options
author | Kyle K <kylek389@gmail.com> | 2020-01-27 17:10:23 -0600 |
---|---|---|
committer | Kyle K <kylek389@gmail.com> | 2020-01-27 17:10:23 -0600 |
commit | f4f7b4ac910b7d74daf7524f86833ce242e9aaa1 (patch) | |
tree | a414285c8e08c00c426f0c6f726c05c6b381424a /gentoox_build.sh | |
parent | 10976d5eac561ca712aac29d3f5e5f50988af390 (diff) | |
download | gentoox-f4f7b4ac910b7d74daf7524f86833ce242e9aaa1.tar.gz gentoox-f4f7b4ac910b7d74daf7524f86833ce242e9aaa1.tar.bz2 gentoox-f4f7b4ac910b7d74daf7524f86833ce242e9aaa1.zip |
20200127 update
- provide script to build stage3 gcc graphite tarball
- linux 5.5
- use zstd10 for ISO
- enable UEFI booting
Diffstat (limited to 'gentoox_build.sh')
-rwxr-xr-x | gentoox_build.sh | 237 |
1 files changed, 199 insertions, 38 deletions
diff --git a/gentoox_build.sh b/gentoox_build.sh index 0b06ca8..ed3fcd6 100755 --- a/gentoox_build.sh +++ b/gentoox_build.sh @@ -5,7 +5,11 @@ if [ $(id -u) != "0" ]; then fi # -# Notes: start with clean /var/db/, if you have /var/cache/distfiles/ on host only rsync that to chroot +# Notes +# • start with clean /var/db/, if you have binpkgs or distfiles on a host you can mount --bind or rsync them to the chroot +# • plymouth graphical splash via genkernel-next is commented out as it only supports systemd, GentooX is using OpenRC +# • ZFS temporarily disabled as it's not officially supported in Linux 5.5 and also errors with: +# FATAL: modpost: GPL-incompatible module zfs.ko uses GPL-only symbol '__rcu_read_lock' # # dependencies # base install: genkernel btrfs-progs portage-utils gentoolkit cpuid2cpuflags cryptsetup lvm2 mdadm dev-vcs/git @@ -16,24 +20,46 @@ gitprefix="https://gitgud.io/cloveros/cloveros/raw/master" rootpassword=gentoox username=gentoox userpassword=gentoox -builddate="20200101.graphite" +#builddate="$(date +%Y%m%d).graphite" +builddate="20200127.graphite" +builddir="build-$(date +%Y%m%d)" +KERNEL_CONFIG_DIFF="0001-kernel-config-cfs-r2.patch" +binpkgs=/root/var/cache/binpkgs/ +distfiles=/root/var/cache/distfiles/ + +build_weston=y #build_kde=y -#clover_rice="y" +#build_steam=y #configure_user=y +#clover_rice="y" #build_iso=y +if [[ ! -d $builddir ]]; then mkdir -v $builddir; fi +cd $builddir + if [[ ! -f 'image/etc/gentoo-release' ]]; then mkdir image/ cd image/ cp -v /var/tmp/catalyst/builds/default/stage3-amd64-$builddate.tar.xz . + if [[ $? -ne 0 ]]; then exit 1; fi + echo 'extracting stage3 tarball...' tar xJpf /var/tmp/catalyst/builds/default/stage3-amd64-$builddate.tar.xz --xattrs --numeric-owner rm -f stage3* - cp ../0001-kernel-config-cfs-r2.patch usr/src - rsync -a ../var/ var/ + + cp ../../$KERNEL_CONFIG_DIFF usr/src + mkdir -p etc/portage/patches/app-crypt/efitools + cp ../../efitools-1.9.2-fixup-UNKNOWN_GLYPH.patch etc/portage/patches/app-crypt/efitools/ + + if [[ ! -z $binpkgs ]] && [[ ! -z $distfiles ]]; then + #rsync -a $binpkgs var/cache/binpkgs/ + #rsync -a $distfiles var/cache/distfiles/ + mount --bind $binpkgs var/cache/binpkgs/ + mount --bind $distfiles var/cache/distfiles/ + fi cp /etc/resolv.conf etc/ cd .. @@ -82,13 +108,14 @@ echo 'CFLAGS="\${CFLAGS} -fno-lto" CXXFLAGS="\${CFLAGS} -fno-lto"' > /etc/portage/env/nolto.conf echo 'dev-libs/elfutils nolto.conf +app-crypt/efitools nolto.conf dev-libs/libaio nolto.conf media-libs/alsa-lib nolto.conf media-libs/mesa nolto.conf media-libs/x264 nolto.conf dev-libs/weston nolto.conf sys-auth/elogind nolto.conf -dev-lang/spidermonkey +dev-lang/spidermonkey nolto.conf x11-drivers/xf86-video-intel nolto.conf x11-drivers/xf86-video-amdgpu nolto.conf x11-drivers/xf86-video-ati nolto.conf @@ -98,17 +125,19 @@ echo 'sys-devel/gcc graphite sys-apps/kmod lzma sys-kernel/linux-firmware initramfs redistributable unknown-license x11-libs/libdrm libkms -www-client/firefox hwaccel pgo lto wayland +media-libs/mesa d3d9 lm-sensors opencl vaapi vdpau vulkan vulkan-overlay xa xvmc +www-client/firefox -system-libvpx hwaccel pgo lto wayland +dev-libs/boost python dev-lang/python sqlite sys-fs/squashfs-tools zstd -sys-boot/grub:2 libzfs mount +sys-boot/grub:2 mount # libzfs x11-libs/libxcb xkb' > /etc/portage/package.use/gentoox rm -rf /etc/portage/package.accept_keywords/ echo -n > /etc/portage/package.accept_keywords emerge --autounmask=y --autounmask-write=y -vDN @world -emerge -v gentoo-sources genkernel btrfs-progs portage-utils gentoolkit cpuid2cpuflags cryptsetup lvm2 mdadm dev-vcs/git +emerge -v gentoo-sources genkernel portage-utils gentoolkit cpuid2cpuflags cryptsetup lvm2 mdadm dev-vcs/git btrfs-progs app-arch/lz4 ntfs3g dosfstools exfat-utils gptfdisk efitools shim touch /tmp/gentoox-base-done HEREDOC #rsync -av --delete var/cache/{binpkgs,distfiles} ../var/cache/ @@ -120,37 +149,67 @@ if [[ ! -f 'tmp/gentoox-kernel-done' ]]; then cat <<HEREDOC | chroot . source /etc/profile && export PS1="(chroot) \$PS1" KERNELVERSION=\$(qlist -Iv gentoo-sources | tr '-' ' ' | awk '{print \$4}') + +#echo -e '\nPLYMOUTH="yes" +#PLYMOUTH_THEME="fade-in"' >> /etc/genkernel.conf +#echo -e '\nrc_interactive="NO"' >> /etc/rc.conf cd /usr/src/linux/ if [[ ! -f '/tmp/gentoox-kernelpatches-applied' ]]; then - wget 'https://gitea.artixlinux.org/artixlinux/packages-kernel/raw/branch/master/linux/trunk/config' -O .config + wget --quiet 'https://gitea.artixlinux.org/artixlinux/packages-kernel/raw/branch/master/linux/trunk/config' -O .config git clone https://github.com/graysky2/kernel_gcc_patch.git - wget https://gitlab.com/post-factum/pf-kernel/commit/cf7a8ad26e0bd6ca8afba89f53d2e9dc43ee2598.diff -O O3-always-available.diff - #wget --quiet -m -np -c 'ck.kolivas.org/patches/5.0/5.4/5.4-ck1/patches/' - #wget https://gitlab.com/sirlucjan/kernel-patches/raw/master/5.4/aufs-patches/0001-aufs-20191223.patch - wget https://raw.githubusercontent.com/sirlucjan/kernel-patches/master/5.4/aufs-patches/0001-aufs-20200113.patch - wget https://git.froggi.es/tkg/PKGBUILDS/raw/master/linux54-tkg/linux54-tkg-patches/0007-v5.4-fsync.patch - wget https://git.froggi.es/tkg/PKGBUILDS/raw/master/linux54-tkg/linux54-tkg-patches/0011-ZFS-fix.patch - - patch -p1 < kernel_gcc_patch/enable_additional_cpu_optimizations_for_gcc_v9.1+_kernel_v4.13+.patch + wget --quiet https://gitlab.com/post-factum/pf-kernel/commit/cf7a8ad26e0bd6ca8afba89f53d2e9dc43ee2598.diff -O O3-always-available.diff + #wget --quiet -m -np -c 'ck.kolivas.org/patches/5.0/5.5/5.5-ck1/patches/' + wget --quiet https://gitlab.com/sirlucjan/kernel-patches/raw/master/5.5/aufs-patches/0001-aufs-20200127.patch + wget --quiet https://git.froggi.es/tkg/PKGBUILDS/raw/master/linux55-tkg/linux55-tkg-patches/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch + wget --quiet https://git.froggi.es/tkg/PKGBUILDS/raw/master/linux55-tkg/linux55-tkg-patches/0002-clear-patches.patch + wget --quiet https://git.froggi.es/tkg/PKGBUILDS/raw/master/linux55-tkg/linux55-tkg-patches/0006-add-acs-overrides_iommu.patch + wget --quiet https://git.froggi.es/tkg/PKGBUILDS/raw/master/linux55-tkg/linux55-tkg-patches/0007-v5.5-fsync.patch + wget --quiet https://git.froggi.es/tkg/PKGBUILDS/raw/master/linux55-tkg/linux55-tkg-patches/0011-ZFS-fix.patch + + patch -p1 < kernel_gcc_patch/enable_additional_cpu_optimizations_for_gcc_v9.1+_kernel_v5.5+.patch patch -p1 < O3-always-available.diff - #for f in ck.kolivas.org/patches/5.0/5.4/5.4-ck1/patches/*.patch; do patch -p1 < "\$f"; done - patch -p0 < ../0001-kernel-config-cfs-r2.patch - patch -p1 < 0001-aufs-20200113.patch + #for f in ck.kolivas.org/patches/5.0/5.5/5.5-ck1/patches/*.patch; do patch -p1 < "\$f"; done + patch -p0 < ../$KERNEL_CONFIG_DIFF + patch -p1 < 0001-aufs-20200127.patch echo -e "CONFIG_AUFS_FS=y\nCONFIG_AUFS_BRANCH_MAX_127=y\nCONFIG_AUFS_BRANCH_MAX_511=n\nCONFIG_AUFS_BRANCH_MAX_1023=n\nCONFIG_AUFS_BRANCH_MAX_32767=n\nCONFIG_AUFS_HNOTIFY=y\nCONFIG_AUFS_EXPORT=n\nCONFIG_AUFS_XATTR=y\nCONFIG_AUFS_FHSM=y\nCONFIG_AUFS_RDU=n\nCONFIG_AUFS_DIRREN=n\nCONFIG_AUFS_SHWH=n\nCONFIG_AUFS_BR_RAMFS=y\nCONFIG_AUFS_BR_FUSE=n\nCONFIG_AUFS_BR_HFSPLUS=n\nCONFIG_AUFS_DEBUG=n" >> .config sed -i "s/CONFIG_ISO9660_FS=m/CONFIG_ISO9660_FS=y/" .config - patch -p1 < 0007-v5.4-fsync.patch + patch -p1 < 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch + patch -p1 < 0002-clear-patches.patch + patch -p1 < 0006-add-acs-overrides_iommu.patch + patch -p1 < 0007-v5.5-fsync.patch patch -p1 < 0011-ZFS-fix.patch + sed -i 's/CONFIG_DEFAULT_HOSTNAME="artixlinux"/CONFIG_DEFAULT_HOSTNAME="gentoox"/' .config make oldconfig touch /tmp/gentoox-kernelpatches-applied fi -cd .. -rm -f 0001-kernel-config-cfs-r2.patch -genkernel --kernel-config=/usr/src/linux-\$KERNELVERSION-gentoo/.config --no-mrproper --microcode --luks --lvm --mdadm --btrfs --disklabel all +cd /usr/src +rm -f $KERNEL_CONFIG_DIFF +#mkdir -p /usr/share/genkernel/distfiles/ +#wget https://www.busybox.net/downloads/busybox-1.20.2.tar.bz2 -d /usr/share/genkernel/distfiles/ +#cho -e '\nMAKEOPTS="-j12"' >> /etc/genkernel.conf + +# former command is genkernel-next (systemd only), latter is for genkernel +#genkernel --kernel-config=/usr/src/linux-\$KERNELVERSION-gentoo/.config --no-mrproper --udev --plymouth --luks --lvm --mdadm --btrfs --zfs all +genkernel --kernel-config=/usr/src/linux-\$KERNELVERSION-gentoo/.config --no-mrproper kernel + +#unmask zfs to prompt installation of masked zfs-9999 zfs-kmod-9999 +#echo 'sys-fs/zfs +#sys-fs/zfs-kmod' >> /etc/portage/package.unmask +#echo 'sys-fs/zfs ** +#sys-fs/zfs-kmod **' >> /etc/portage/package.accept_keywords +emerge -v squashfs-tools linux-firmware os-prober # zfs zfs-kmod + +genkernel --microcode --luks --lvm --mdadm --btrfs --disklabel initramfs # --zfs XZ_OPT="--lzma1=preset=9e,dict=128MB,nice=273,depth=200,lc=4" tar --lzma -cf /usr/src/kernel-gentoox.tar.lzma /boot/*\${KERNELVERSION}* -C /lib/modules/ . -emerge -v squashfs-tools linux-firmware os-prober grub:2 +emerge -v grub:2 +sed -i "s/#GRUB_CMDLINE_LINUX_DEFAULT=\"\"/GRUB_CMDLINE_LINUX_DEFAULT=\"zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold\"/" /etc/default/grub +sed -i "s/#GRUB_GFXMODE=640x480/GRUB_GFXMODE=auto/" /etc/default/grub +sed -i "s/#GRUB_GFXPAYLOAD_LINUX=/GRUB_GFXPAYLOAD_LINUX=keep/" /etc/default/grub +#rc-update add zfs-import boot +#rc-update add zfs-mount boot touch /tmp/gentoox-kernel-done HEREDOC cp -v usr/src/kernel-gentoox.tar.lzma ../ @@ -158,22 +217,41 @@ exit 0 else echo "kernel already compiled, skipping..."; fi -if [[ ! -f 'tmp/gentoox-weston-done' ]]; then +if [[ ! -z $build_weston ]] && [[ ! -f 'tmp/gentoox-weston-done' ]]; then cat <<HEREDOC | chroot . source /etc/profile && export PS1="(chroot) \$PS1" -sed -i -r "s/^USE=\"([^\"]*)\"$/USE=\"\1 elogind -consolekit -systemd udev dbus X wayland gles plymouth pulseaudio ffmpeg ipv6\"/g" /etc/portage/make.conf +sed -i -r "s/^USE=\"([^\"]*)\"$/USE=\"\1 elogind -consolekit -systemd udev dbus X wayland gles vulkan plymouth pulseaudio ffmpeg ipv6\"/g" /etc/portage/make.conf FEATURES="-userpriv" emerge dev-lang/yasm # yasm fails to build otherwise -emerge -v --autounmask=y --autounmask-write=y --keep-going=y --deep --newuse xorg-server elogind sudo vim weston wpa_supplicant nfs-utils cifs-utils dhcpcd zsh zsh-completions +#echo 'sys-kernel/genkernel-next plymouth +#sys-boot/plymouth gdm' > /etc/portage/package.use/gentoox + +echo -e '\ndev-ruby/minitest ruby_targets_ruby27 +dev-ruby/net-telnet ruby_targets_ruby27 +dev-ruby/power_assert ruby_targets_ruby27 +dev-ruby/rake ruby_targets_ruby27 +dev-ruby/test-unit ruby_targets_ruby27 +dev-ruby/xmlrpc ruby_targets_ruby27 +dev-ruby/bundler ruby_targets_ruby27 +dev-ruby/did_you_mean ruby_targets_ruby27 +dev-ruby/json ruby_targets_ruby27 +dev-ruby/rdoc ruby_targets_ruby27 +virtual/rubygems ruby_targets_ruby27 +dev-ruby/rubygems ruby_targets_ruby27 +dev-ruby/kpeg ruby_targets_ruby27 +dev-ruby/racc ruby_targets_ruby27' >> /etc/portage/package.use/gentoox + +emerge -v --autounmask=y --autounmask-write=y --keep-going=y --deep --newuse xorg-server elogind sudo vim weston wpa_supplicant snapper \ +nfs-utils cifs-utils samba dhcpcd nss-mdns zsh zsh-completions powertop lm-sensors #plymouth-openrc-plugin #emerge -v --depclean -rc-update add dhcpcd default touch /tmp/gentoox-weston-done HEREDOC exit 0 fi +exit 0 -if [[ ! -z $build_kde ]]; then +if [[ ! -z $build_kde ]] && [[ ! -f 'tmp/gentoox-kde-done' ]]; then cat <<HEREDOC | chroot . source /etc/profile && export PS1="(chroot) \$PS1" eselect profile set "default/linux/amd64/17.1/desktop/plasma" @@ -193,18 +271,90 @@ emerge sys-config/ltoize sed -i '1s/^/source make.conf.lto\n/' /etc/portage/make.conf sed -i '1s/^/NTHREADS="12"\n/' /etc/portage/make.conf -emerge -v --jobs=4 --keep-going=y --autounmask=y --autounmask-write=y --deep --newuse kde-plasma/plasma-meta kde-apps/kde-apps-meta firefox mpv +echo -e '\nkde-plasma/plasma-meta discover networkmanager thunderbolt +kde-apps/kio-extras samba' >> /etc/portage/package.use/gentoox +emerge -v --jobs=4 --keep-going=y --autounmask=y --autounmask-write=y --deep --newuse kde-plasma/plasma-meta kde-apps/kde-apps-meta kde-apps/kmail calamares firefox mpv + +yes | layman -o https://raw.githubusercontent.com/fosero/flatpak-overlay/master/repositories.xml -f -a flatpak-overlay -q +emerge -v sys-apps/flatpak + cd /home/$username/ echo 'exec dbus-launch --exit-with-session startplasma-x11' > .xinitrc chown -R $username /home/$username/ +su - gentoox +flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +touch /tmp/gentoox-kde-done HEREDOC exit 0 fi -if [[ ! -z $configure_user ]]; then +if [[ ! -z $build_steam ]] && [[ ! -f 'tmp/gentoox-steam-done' ]]; then cat <<HEREDOC | chroot . source /etc/profile && export PS1="(chroot) \$PS1" +yes | layman -a steam-overlay -q +USE="abi_x86_32" emerge -O gpm +echo -e '\n# steam +app-arch/bzip2 abi_x86_32 +dev-libs/elfutils abi_x86_32 +dev-libs/expat abi_x86_32 +dev-libs/icu abi_x86_32 +dev-libs/libffi abi_x86_32 +dev-libs/libpthread-stubs abi_x86_32 +dev-libs/libxml2 abi_x86_32 +dev-libs/ocl-icd abi_x86_32 +dev-libs/wayland abi_x86_32 +dev-util/glslang abi_x86_32 +dev-util/pkgconf abi_x86_32 +media-libs/mesa abi_x86_32 +sys-apps/lm-sensors abi_x86_32 +sys-devel/clang abi_x86_32 +sys-devel/llvm abi_x86_32 +sys-libs/gpm abi_x86_32 +sys-libs/ncurses abi_x86_32 +sys-libs/zlib abi_x86_32 +virtual/libelf abi_x86_32 +virtual/libffi abi_x86_32 +virtual/opengl abi_x86_32 +virtual/pkgconfig abi_x86_32 +x11-base/xcb-proto abi_x86_32 +x11-libs/libdrm abi_x86_32 +x11-libs/libpciaccess abi_x86_32 +x11-libs/libva abi_x86_32 +x11-libs/libva-intel-driver abi_x86_32 +x11-libs/libva-vdpau-driver abi_x86_32 +x11-libs/libvdpau abi_x86_32 +x11-libs/libX11 abi_x86_32 +x11-libs/libXau abi_x86_32 +x11-libs/libxcb abi_x86_32 +x11-libs/libXdamage abi_x86_32 +x11-libs/libXdmcp abi_x86_32 +x11-libs/libXext abi_x86_32 +x11-libs/libXfixes abi_x86_32 +x11-libs/libXrandr abi_x86_32 +x11-libs/libXrender abi_x86_32 +x11-libs/libxshmfence abi_x86_32 +x11-libs/libXv abi_x86_32 +x11-libs/libXvMC abi_x86_32 +x11-libs/libXxf86vm abi_x86_32' >> /etc/portage/package.use/gentoox +emerge -v steam-meta +touch /tmp/gentoox-steam-done +HEREDOC +exit 0 +fi + + +if [[ ! -z $configure_user ]] && [[ ! -f 'tmp/gentoox-user-configured' ]]; then +cat <<HEREDOC | chroot . +source /etc/profile && export PS1="(chroot) \$PS1" + +sed -i "s/localhost/gentoox/g" /etc/conf.d/hostname +sed -i "s/127.0.0.1 localhost/127.0.0.1 gentoox.haxx.dafuq gentoox localhost/" /etc/hosts +sed -i "s/::1 localhost/::1 gentoox.haxx.dafuq gentoox localhost/" /etc/hosts +echo 'dns_domain_lo="haxx.local" +nis_domain_lo="haxx.local"' > /etc/conf.d/net +echo 'nameserver 1.1.1.1 +nameserver 2606:4700:4700::1111' > /etc/resolv.conf echo "root:$rootpassword" | chpasswd useradd $username @@ -225,7 +375,16 @@ eselect fontconfig enable 52-infinality.conf eselect infinality set infinality eselect lcdfilter set infinality -usermod -aG audio,video,games,input $username +usermod -aG users,portage,lp,adm,audio,cdrom,disk,games,input,usb,video,cron $username + +cp /etc/samba/smb.conf.default /etc/samba/smb.conf +sed -i "s/ workgroup = MYGROUP/ workgroup = WORKGROUP/" /etc/samba/smb.conf +rc-update add dbus default +rc-update add dhcpcd default +rc-update add avahi-daemon default +rc-update add samba default + +touch /tmp/gentoox-user-configured HEREDOC exit 0 fi @@ -270,9 +429,10 @@ if [[ ! -z $build_iso ]]; then #rm -f /tmp/* #ToDo: clear bash history, truncate logs in /var/log/ cd .. +umount -l image/var/cache/{binpkgs,distfiles} umount -l image/* mv image/usr/src/kernel-gentoox.tar.lzma . -mksquashfs image/ image.squashfs -b 1M -comp xz -Xbcj x86 -Xdict-size 1M +mksquashfs image/ image.squashfs -b 1M -comp zstd -Xcompression-level 10 mkdir iso/ builddate=$(wget -O - http://distfiles.gentoo.org/releases/amd64/autobuilds/current-install-amd64-minimal/ | sed -nr "s/.*href=\"install-amd64-minimal-([0-9].*).iso\">.*/\1/p") if [[ ! -f "current-install-amd64-minimal/install-amd64-minimal-$builddate.iso" ]]; then @@ -288,10 +448,11 @@ sed -i "s@dokeymap@aufs@g" iso/grub/grub.cfg xorriso -as mkisofs -r -J \ -joliet-long -l -cache-inodes \ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ - -partition_offset 16 -A "Gentoo Live" \ + -partition_offset 16 -A "GentooX Live" \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ - -o Gentoox-x86_64-$builddate.iso iso/ + -no-emul-boot -boot-load-size 4 -boot-info-table \ + -eltorito-alt-boot -e gentoo.efimg -no-emul-boot -isohybrid-gpt-basdat \ + -V "GentooX Live" -o Gentoox-x86_64-$builddate.iso iso/ #rm -Rf image/ iso/ kernel-gentoox.tar.lzma fi |