17a7741afSMartin Matuska#!/usr/bin/env bash 27a7741afSMartin Matuska 37a7741afSMartin Matuska###################################################################### 47a7741afSMartin Matuska# 3) install dependencies for compiling and loading 57a7741afSMartin Matuska###################################################################### 67a7741afSMartin Matuska 77a7741afSMartin Matuskaset -eu 87a7741afSMartin Matuska 97a7741afSMartin Matuskafunction archlinux() { 107a7741afSMartin Matuska echo "##[group]Running pacman -Syu" 117a7741afSMartin Matuska sudo btrfs filesystem resize max / 127a7741afSMartin Matuska sudo pacman -Syu --noconfirm 137a7741afSMartin Matuska echo "##[endgroup]" 147a7741afSMartin Matuska 157a7741afSMartin Matuska echo "##[group]Install Development Tools" 165c65a0a9SMartin Matuska sudo pacman -Sy --noconfirm base-devel bc cpio cryptsetup dhclient dkms \ 175c65a0a9SMartin Matuska fakeroot fio gdb inetutils jq less linux linux-headers lsscsi nfs-utils \ 185c65a0a9SMartin Matuska parted pax perf python-packaging python-setuptools qemu-guest-agent ksh \ 195c65a0a9SMartin Matuska samba sysstat rng-tools rsync wget xxhash 207a7741afSMartin Matuska echo "##[endgroup]" 217a7741afSMartin Matuska} 227a7741afSMartin Matuska 237a7741afSMartin Matuskafunction debian() { 247a7741afSMartin Matuska export DEBIAN_FRONTEND="noninteractive" 257a7741afSMartin Matuska 267a7741afSMartin Matuska echo "##[group]Running apt-get update+upgrade" 277a7741afSMartin Matuska sudo apt-get update -y 287a7741afSMartin Matuska sudo apt-get upgrade -y 297a7741afSMartin Matuska echo "##[endgroup]" 307a7741afSMartin Matuska 317a7741afSMartin Matuska echo "##[group]Install Development Tools" 327a7741afSMartin Matuska sudo apt-get install -y \ 335c65a0a9SMartin Matuska acl alien attr autoconf bc cpio cryptsetup curl dbench dh-python dkms \ 345c65a0a9SMartin Matuska fakeroot fio gdb gdebi git ksh lcov isc-dhcp-client jq libacl1-dev \ 355c65a0a9SMartin Matuska libaio-dev libattr1-dev libblkid-dev libcurl4-openssl-dev libdevmapper-dev \ 365c65a0a9SMartin Matuska libelf-dev libffi-dev libmount-dev libpam0g-dev libselinux-dev libssl-dev \ 375c65a0a9SMartin Matuska libtool libtool-bin libudev-dev libunwind-dev linux-headers-$(uname -r) \ 387a7741afSMartin Matuska lsscsi nfs-kernel-server pamtester parted python3 python3-all-dev \ 397a7741afSMartin Matuska python3-cffi python3-dev python3-distlib python3-packaging \ 407a7741afSMartin Matuska python3-setuptools python3-sphinx qemu-guest-agent rng-tools rpm2cpio \ 417a7741afSMartin Matuska rsync samba sysstat uuid-dev watchdog wget xfslibs-dev xxhash zlib1g-dev 427a7741afSMartin Matuska echo "##[endgroup]" 437a7741afSMartin Matuska} 447a7741afSMartin Matuska 457a7741afSMartin Matuskafunction freebsd() { 467a7741afSMartin Matuska export ASSUME_ALWAYS_YES="YES" 477a7741afSMartin Matuska 487a7741afSMartin Matuska echo "##[group]Install Development Tools" 497a7741afSMartin Matuska sudo pkg install -y autoconf automake autotools base64 checkbashisms fio \ 507a7741afSMartin Matuska gdb gettext gettext-runtime git gmake gsed jq ksh93 lcov libtool lscpu \ 517a7741afSMartin Matuska pkgconf python python3 pamtester pamtester qemu-guest-agent rsync xxhash 527a7741afSMartin Matuska sudo pkg install -xy \ 537a7741afSMartin Matuska '^samba4[[:digit:]]+$' \ 547a7741afSMartin Matuska '^py3[[:digit:]]+-cffi$' \ 557a7741afSMartin Matuska '^py3[[:digit:]]+-sysctl$' \ 567a7741afSMartin Matuska '^py3[[:digit:]]+-packaging$' 577a7741afSMartin Matuska echo "##[endgroup]" 587a7741afSMartin Matuska} 597a7741afSMartin Matuska 607a7741afSMartin Matuska# common packages for: almalinux, centos, redhat 617a7741afSMartin Matuskafunction rhel() { 627a7741afSMartin Matuska echo "##[group]Running dnf update" 637a7741afSMartin Matuska echo "max_parallel_downloads=10" | sudo -E tee -a /etc/dnf/dnf.conf 647a7741afSMartin Matuska sudo dnf clean all 657a7741afSMartin Matuska sudo dnf update -y --setopt=fastestmirror=1 --refresh 667a7741afSMartin Matuska echo "##[endgroup]" 677a7741afSMartin Matuska 687a7741afSMartin Matuska echo "##[group]Install Development Tools" 695c65a0a9SMartin Matuska 705c65a0a9SMartin Matuska # Alma wants "Development Tools", Fedora 41 wants "development-tools" 715c65a0a9SMartin Matuska if ! sudo dnf group install -y "Development Tools" ; then 725c65a0a9SMartin Matuska echo "Trying 'development-tools' instead of 'Development Tools'" 735c65a0a9SMartin Matuska sudo dnf group install -y development-tools 745c65a0a9SMartin Matuska fi 755c65a0a9SMartin Matuska 767a7741afSMartin Matuska sudo dnf install -y \ 775c65a0a9SMartin Matuska acl attr bc bzip2 cryptsetup curl dbench dkms elfutils-libelf-devel fio \ 785c65a0a9SMartin Matuska gdb git jq kernel-rpm-macros ksh libacl-devel libaio-devel \ 795c65a0a9SMartin Matuska libargon2-devel libattr-devel libblkid-devel libcurl-devel libffi-devel \ 805c65a0a9SMartin Matuska ncompress libselinux-devel libtirpc-devel libtool libudev-devel \ 815c65a0a9SMartin Matuska libuuid-devel lsscsi mdadm nfs-utils openssl-devel pam-devel pamtester \ 825c65a0a9SMartin Matuska parted perf python3 python3-cffi python3-devel python3-packaging \ 835c65a0a9SMartin Matuska kernel-devel python3-setuptools qemu-guest-agent rng-tools rpcgen \ 845c65a0a9SMartin Matuska rpm-build rsync samba sysstat systemd watchdog wget xfsprogs-devel xxhash \ 855c65a0a9SMartin Matuska zlib-devel 867a7741afSMartin Matuska echo "##[endgroup]" 877a7741afSMartin Matuska} 887a7741afSMartin Matuska 897a7741afSMartin Matuskafunction tumbleweed() { 907a7741afSMartin Matuska echo "##[group]Running zypper is TODO!" 917a7741afSMartin Matuska sleep 23456 927a7741afSMartin Matuska echo "##[endgroup]" 937a7741afSMartin Matuska} 947a7741afSMartin Matuska 957a7741afSMartin Matuska# Install dependencies 967a7741afSMartin Matuskacase "$1" in 977a7741afSMartin Matuska almalinux8) 987a7741afSMartin Matuska echo "##[group]Enable epel and powertools repositories" 997a7741afSMartin Matuska sudo dnf config-manager -y --set-enabled powertools 1007a7741afSMartin Matuska sudo dnf install -y epel-release 1017a7741afSMartin Matuska echo "##[endgroup]" 1027a7741afSMartin Matuska rhel 1037a7741afSMartin Matuska echo "##[group]Install kernel-abi-whitelists" 1047a7741afSMartin Matuska sudo dnf install -y kernel-abi-whitelists 1057a7741afSMartin Matuska echo "##[endgroup]" 1067a7741afSMartin Matuska ;; 107*dd215568SMartin Matuska almalinux9|centos-stream9|centos-stream10) 1087a7741afSMartin Matuska echo "##[group]Enable epel and crb repositories" 1097a7741afSMartin Matuska sudo dnf config-manager -y --set-enabled crb 1107a7741afSMartin Matuska sudo dnf install -y epel-release 1117a7741afSMartin Matuska echo "##[endgroup]" 1127a7741afSMartin Matuska rhel 1137a7741afSMartin Matuska echo "##[group]Install kernel-abi-stablelists" 1147a7741afSMartin Matuska sudo dnf install -y kernel-abi-stablelists 1157a7741afSMartin Matuska echo "##[endgroup]" 1167a7741afSMartin Matuska ;; 1177a7741afSMartin Matuska archlinux) 1187a7741afSMartin Matuska archlinux 1197a7741afSMartin Matuska ;; 1207a7741afSMartin Matuska debian*) 1215c65a0a9SMartin Matuska echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections 1227a7741afSMartin Matuska debian 1237a7741afSMartin Matuska echo "##[group]Install Debian specific" 1247a7741afSMartin Matuska sudo apt-get install -yq linux-perf dh-sequence-dkms 1257a7741afSMartin Matuska echo "##[endgroup]" 1267a7741afSMartin Matuska ;; 1277a7741afSMartin Matuska fedora*) 1287a7741afSMartin Matuska rhel 1297a7741afSMartin Matuska ;; 1307a7741afSMartin Matuska freebsd*) 1317a7741afSMartin Matuska freebsd 1327a7741afSMartin Matuska ;; 1337a7741afSMartin Matuska tumbleweed) 1347a7741afSMartin Matuska tumbleweed 1357a7741afSMartin Matuska ;; 1367a7741afSMartin Matuska ubuntu*) 1377a7741afSMartin Matuska debian 1387a7741afSMartin Matuska echo "##[group]Install Ubuntu specific" 1397a7741afSMartin Matuska sudo apt-get install -yq linux-tools-common libtirpc-dev \ 1407a7741afSMartin Matuska linux-modules-extra-$(uname -r) 1417a7741afSMartin Matuska if [ "$1" != "ubuntu20" ]; then 1427a7741afSMartin Matuska sudo apt-get install -yq dh-sequence-dkms 1437a7741afSMartin Matuska fi 1447a7741afSMartin Matuska echo "##[endgroup]" 1457a7741afSMartin Matuska echo "##[group]Delete Ubuntu OpenZFS modules" 1467a7741afSMartin Matuska for i in $(find /lib/modules -name zfs -type d); do sudo rm -rvf $i; done 1477a7741afSMartin Matuska echo "##[endgroup]" 1487a7741afSMartin Matuska ;; 1497a7741afSMartin Matuskaesac 1507a7741afSMartin Matuska 1517a7741afSMartin Matuska# This script is used for checkstyle + zloop deps also. 1527a7741afSMartin Matuska# Install only the needed packages and exit - when used this way. 1537a7741afSMartin Matuskatest -z "${ONLY_DEPS:-}" || exit 0 1547a7741afSMartin Matuska 1557a7741afSMartin Matuska# Start services 1567a7741afSMartin Matuskaecho "##[group]Enable services" 1577a7741afSMartin Matuskacase "$1" in 1587a7741afSMartin Matuska freebsd*) 1597a7741afSMartin Matuska # add virtio things 1607a7741afSMartin Matuska echo 'virtio_load="YES"' | sudo -E tee -a /boot/loader.conf 1617a7741afSMartin Matuska for i in balloon blk console random scsi; do 1627a7741afSMartin Matuska echo "virtio_${i}_load=\"YES\"" | sudo -E tee -a /boot/loader.conf 1637a7741afSMartin Matuska done 1647a7741afSMartin Matuska echo "fdescfs /dev/fd fdescfs rw 0 0" | sudo -E tee -a /etc/fstab 1657a7741afSMartin Matuska sudo -E mount /dev/fd 1667a7741afSMartin Matuska sudo -E touch /etc/zfs/exports 1677a7741afSMartin Matuska sudo -E sysrc mountd_flags="/etc/zfs/exports" 1687a7741afSMartin Matuska echo '[global]' | sudo -E tee /usr/local/etc/smb4.conf >/dev/null 1697a7741afSMartin Matuska sudo -E service nfsd enable 1707a7741afSMartin Matuska sudo -E service qemu-guest-agent enable 1717a7741afSMartin Matuska sudo -E service samba_server enable 1727a7741afSMartin Matuska ;; 1737a7741afSMartin Matuska debian*|ubuntu*) 1747a7741afSMartin Matuska sudo -E systemctl enable nfs-kernel-server 1757a7741afSMartin Matuska sudo -E systemctl enable qemu-guest-agent 1767a7741afSMartin Matuska sudo -E systemctl enable smbd 1777a7741afSMartin Matuska ;; 1787a7741afSMartin Matuska *) 1797a7741afSMartin Matuska # All other linux distros 1807a7741afSMartin Matuska sudo -E systemctl enable nfs-server 1817a7741afSMartin Matuska sudo -E systemctl enable qemu-guest-agent 1827a7741afSMartin Matuska sudo -E systemctl enable smb 1837a7741afSMartin Matuska ;; 1847a7741afSMartin Matuskaesac 1857a7741afSMartin Matuskaecho "##[endgroup]" 1867a7741afSMartin Matuska 1877a7741afSMartin Matuska# Setup Kernel cmdline 1887a7741afSMartin MatuskaCMDLINE="console=tty0 console=ttyS0,115200n8" 1897a7741afSMartin MatuskaCMDLINE="$CMDLINE selinux=0" 1907a7741afSMartin MatuskaCMDLINE="$CMDLINE random.trust_cpu=on" 1917a7741afSMartin MatuskaCMDLINE="$CMDLINE no_timer_check" 1927a7741afSMartin Matuskacase "$1" in 1937a7741afSMartin Matuska almalinux*|centos*|fedora*) 1947a7741afSMartin Matuska GRUB_CFG="/boot/grub2/grub.cfg" 1957a7741afSMartin Matuska GRUB_MKCONFIG="grub2-mkconfig" 1967a7741afSMartin Matuska CMDLINE="$CMDLINE biosdevname=0 net.ifnames=0" 1977a7741afSMartin Matuska echo 'GRUB_SERIAL_COMMAND="serial --speed=115200"' \ 1987a7741afSMartin Matuska | sudo tee -a /etc/default/grub >/dev/null 1997a7741afSMartin Matuska ;; 2007a7741afSMartin Matuska ubuntu24) 2017a7741afSMartin Matuska GRUB_CFG="/boot/grub/grub.cfg" 2027a7741afSMartin Matuska GRUB_MKCONFIG="grub-mkconfig" 2037a7741afSMartin Matuska echo 'GRUB_DISABLE_OS_PROBER="false"' \ 2047a7741afSMartin Matuska | sudo tee -a /etc/default/grub >/dev/null 2057a7741afSMartin Matuska ;; 2067a7741afSMartin Matuska *) 2077a7741afSMartin Matuska GRUB_CFG="/boot/grub/grub.cfg" 2087a7741afSMartin Matuska GRUB_MKCONFIG="grub-mkconfig" 2097a7741afSMartin Matuska ;; 2107a7741afSMartin Matuskaesac 2117a7741afSMartin Matuska 2127a7741afSMartin Matuskacase "$1" in 2137a7741afSMartin Matuska archlinux|freebsd*) 2147a7741afSMartin Matuska true 2157a7741afSMartin Matuska ;; 2167a7741afSMartin Matuska *) 2177a7741afSMartin Matuska echo "##[group]Edit kernel cmdline" 2187a7741afSMartin Matuska sudo sed -i -e '/^GRUB_CMDLINE_LINUX/d' /etc/default/grub || true 2197a7741afSMartin Matuska echo "GRUB_CMDLINE_LINUX=\"$CMDLINE\"" \ 2207a7741afSMartin Matuska | sudo tee -a /etc/default/grub >/dev/null 2217a7741afSMartin Matuska sudo $GRUB_MKCONFIG -o $GRUB_CFG 2227a7741afSMartin Matuska echo "##[endgroup]" 2237a7741afSMartin Matuska ;; 2247a7741afSMartin Matuskaesac 2257a7741afSMartin Matuska 2267a7741afSMartin Matuska# reset cloud-init configuration and poweroff 2277a7741afSMartin Matuskasudo cloud-init clean --logs 2287a7741afSMartin Matuskasleep 2 && sudo poweroff & 2297a7741afSMartin Matuskaexit 0 230