# Kickstart file for OpenCloudOS Stream RISC-V (riscv64) Developer #install text #reboot lang en_US.UTF-8 keyboard us # short hostname still allows DHCP to assign domain name network --bootproto dhcp --device=link --hostname=riscv64.developer.ocs23 --activate rootpw --plaintext riscv666! firewall --enabled --ssh timezone --utc US/Eastern selinux --enforcing services --enabled=sshd,NetworkManager,chronyd,haveged --disabled=lm_sensors,libvirtd bootloader --location=none --extlinux zerombr clearpart --all --initlabel --disklabel=gpt part /boot --size=512 --fstype ext4 --asprimary part / --fstype="ext4" --size=8680 # Halt the system once configuration has finished. poweroff # Package setup %packages @core @buildsys-build @hardware-support @rpm-development-tools @c-development @development-tools opencloudos-stream-release opencloudos-rpm-config kernel kernel-core kernel-devel kernel-modules linux-firmware # uboot opensbi-unstable extlinux-bootloader uboot-tools uboot-images-riscv64 # Remove this in %post dracut-config-generic -dracut-config-rescue openssh openssh-server glibc-langpack-en lsof nano chrony systemd-udev vim-minimal hostname bind-utils tmux strace pciutils nfs-utils ethtool rsync hdparm git mercurial rpmdevtools mailx mutt patchutils ninja-build cmake elfutils gdisk util-linux parted fpaste vim-common hexedit lftp mtr traceroute wget curl emacs vim #bash-completion zsh nvme-cli dtc bc bison elfutils-devel flex m4 man-db net-tools openssl-devel perl-devel perl-generators pesign elinks lynx qemu-guest-agent autoconf autoconf-archive automake gettext gdb libtool texinfo policycoreutils policycoreutils-python-utils setools-console coreutils setroubleshoot-server audit selinux-policy selinux-policy-targeted execstack stress-ng realtime-tests python3-pyelftools # Below packages are needed for creating disk images via koji-builder livecd-tools python-imgcreate-sysdeps python3-imgcreate python3-pyparted isomd5sum python3-isomd5sum pykickstart python3-kickstart appliance-tools qemu-img nbdkit # end of creating disk image packages list dosfstools btrfs-progs e2fsprogs ntfsprogs udftools xfsprogs kpartx guestfs-tools bpftool kernel-tools perf python3-perf libgpiod libgpiod-c++ libgpiod-devel libgpiod-utils python3-libgpiod i2c-tools i2c-tools-perl libi2c libi2c-devel python3-i2c-tools # Add gcc packages cpp gcc gcc-c++ gcc-gdb-plugin gcc-gfortran gcc-plugin-devel libatomic libatomic-static libgcc libgfortran libgfortran-static libgomp libstdc++ libstdc++-devel libstdc++-static gcc-gnat libgnat libgnat-devel libgnat-static usbutils haveged # end of gcc packages watchdog ipxe-roms-qemu -grubby grubby-deprecated # No longer in @core since 2018-10, but needed for livesys script initscripts chkconfig # Lets resize / on first boot #dracut-modules-growroot meson cloud-utils-growpart iperf3 sysstat fio zstd xz NetworkManager-tui python3-psutil # Add dependencies (BR) for kernel, gcc, gdb, binutils, rpm, util-linux, glibc, # bash and coreutils bzip2-devel dbus-devel dejagnu docbook5-style-xsl dwarves expat-devel file-devel gd-devel gettext-devel glibc-all-langpacks ima-evm-utils-devel libacl-devel libarchive-devel libattr-devel libbabeltrace-devel libcap-devel libcap-ng-devel libdb-devel libpng-devel libselinux-devel libuser-devel libutempter-devel libzstd-devel lua-devel ncurses-devel pam-devel pcre2-devel perl popt-devel python3-devel python3-langtable python3-sphinx readline-devel rpm-devel sharutils source-highlight-devel systemd-devel zlib-static # end of dependencies (BR) dos2unix acpica-tools glib2 expect openssl gnutls-utils iw info jq sysfsutils golang golang-bin flashrom glib2-devel json-c-devel libxcb-devel zlib-devel xxhash-devel xz-devel mpfr-devel libglvnd-devel libgcrypt-devel kmod-devel eigen3-devel libaio-devel xorg-x11-proto-devel lksctp-tools-devel brotli-devel libuv-devel libnghttp2-devel libicu-devel libX11-devel libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel libXext-devel libXau-devel cups-devel fontconfig-devel alsa-lib-devel freetype-devel libdwarf-devel rust cargo # Avoid pulling these packages by default via COMPS -valgrind -s390utils %end %post # Disable default repositories (not riscv64 in upstream) dnf config-manager --set-disabled rawhide updates updates-testing fedora fedora-modular fedora-cisco-openh264 updates-modular updates-testing-modular rawhide-modular dnf -y remove dracut-config-generic # systemd on no-SMP boots (i.e. single core) sometimes timeout waiting for storage # devices. After entering emergency prompt all disk are mounted. # For more information see: # https://www.suse.com/support/kb/doc/?id=7018491 # https://www.freedesktop.org/software/systemd/man/systemd.mount.html # https://github.com/systemd/systemd/issues/3446 # We modify /etc/fstab to give more time for device detection (the problematic part) # and mounting processes. This should help on systems where boot takes longer. sed -i 's|noatime|noatime,x-systemd.device-timeout=300s,x-systemd.mount-timeout=300s|g' /etc/fstab # https://fedoraproject.org/wiki/Changes/DisableRootPasswordLoginInSshd cat > /etc/rc.d/init.d/livesys << EOF #!/bin/bash # # live: Init script for live image # # chkconfig: 345 00 99 # description: Init script for live image. ### BEGIN INIT INFO # X-Start-Before: display-manager chronyd ### END INIT INFO . /etc/rc.d/init.d/functions useradd -c "OCS RISCV User" riscv echo riscv666! | passwd --stdin riscv > /dev/null usermod -aG wheel riscv > /dev/null usermod -aG mock riscv > /dev/null exit 0 EOF chmod 755 /etc/rc.d/init.d/livesys /sbin/restorecon /etc/rc.d/init.d/livesys /sbin/chkconfig --add livesys # systemd starts serial consoles on /dev/ttyS0 and /dev/hvc0. The # only problem is they are the same serial console. Mask one. systemctl mask serial-getty@hvc0.service # Disable tmpfs for /tmp # Most boards don't have a lot of RAM. systemctl mask tmp.mount # setup login message cat << EOF | tee /etc/issue /etc/issue.net Welcome to the OpenCloudOS-Stream/RISC-V disk image Build date: $(date --utc) Kernel \r on an \m (\l) The root password is 'riscv666!'. root password logins are disabled in SSH. User 'riscv' with password 'riscv666!' in 'wheel' and 'mock' groups is provided. To install new packages use 'dnf install ...' To upgrade disk image use 'dnf upgrade --best' If DNS isn’t working, try editing ‘/etc/yum.repos.d/OpenCloudOS-Stream.repo’. EOF # Remove machine-id on pre generated images rm -f /etc/machine-id touch /etc/machine-id # remove random seed, the newly installed instance should make it's own rm -f /var/lib/systemd/random-seed # Note that running rpm recreates the rpm db files which aren't needed or wanted rm -f /var/lib/rpm/__db* # go ahead and pre-make the man -k cache (#455968) /usr/bin/mandb # make sure there aren't core files lying around rm -f /core* echo "Packages within this disk image" rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' | sort -rn %end # EOF