====== Information ====== * openSUSE * Tumbleweed * Server * Kraityn = Raspberry Pi 4 Model B Rev 1.5 ([[linux:notes:rpi4_ostw|notes]]) ====== Download ====== * https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-Tumbleweed-ARM-JeOS-raspberrypi.aarch64.raw.xz * https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-Tumbleweed-ARM-JeOS-raspberrypi.aarch64.raw.xz.sha256 openSUSE-Tumbleweed-ARM-JeOS-raspberrypi.aarch64.raw ====== Installation Notes ====== ===== Partitioning ===== * 64GB SD Card NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS mmcblk0 179:0 0 59.5G 0 disk ├─mmcblk0p1 179:1 0 64M 0 part /boot/efi ├─mmcblk0p2 179:2 0 500M 0 part [SWAP] └─mmcblk0p3 179:3 0 58.9G 0 part / ====== Initial Set-up ====== * Continue from ''ssh'' * Log-in as ''root'' ===== passwd ===== * :!: Change ''root'' user password passwd ===== Create User ===== * Users -> Add * Defaults ((UID ''1000'', Groups ''users'')) yast2 'users' ===== Disable Root SSH ===== echo 'PermitRootLogin no' | tee '/etc/ssh/sshd_config.d/DenyRootLogin.conf' > '/dev/null' && cat '/etc/ssh/sshd_config.d/DenyRootLogin.conf' systemctl 'reboot' sudo sshd -T | grep 'permitrootlogin' ====== Software ====== ===== Disable Open H.264 Repo ===== sudo zypper modifyrepo --disable 'repo-openh264' ===== Update ===== ==== System ==== sudo zypper clean --all && sudo zypper refresh --force --services && sudo zypper dist-upgrade --details --allow-downgrade --allow-name-change --allow-arch-change --allow-vendor-change && sync ==== EEPROM ==== * TODO ([[linux:notes:rpi4_ostw#eeprom|notes]]) ===== GNU nano ===== * Installs ''nano'' * Sets ''VISUAL'' and ''EDITOR'' to ''nano'' via environment variable * Sets ''nowrap'' for current user sudo zypper install 'nano' && export 'VISUAL=nano' && export 'EDITOR=nano' && echo -e 'export VISUAL=nano\nexport EDITOR=nano' | sudo tee '/etc/profile.d/editor-nano.sh' > '/dev/null' && cat '/etc/profile.d/editor-nano.sh' && mkdir -p ~/'.config/nano' && echo 'set nowrap' | tee ~/'.config/nano/nanorc' > '/dev/null' && cat ~/'.config/nano/nanorc' ===== Remove ===== sudo zypper remove --clean-deps 'irqbalance' sudo zypper addlock 'irqbalance' ===== General ===== sudo zypper install aria2 fastfetch htop 7zip sensors unar ===== Specs ===== clear && fastfetch -l 'small' && uname -a && date ssh '192.168.1.152' -t 'clear && fastfetch -l 'small' && uname -a && date' ====== Settings ====== ===== Hostname ===== sudo hostnamectl set-hostname 'Kraityn' echo '127.0.0.1 Kraityn' | sudo tee --append '/etc/hosts' > '/dev/null' ===== Time ===== sudo timedatectl set-timezone 'America/New_York' && sudo timedatectl 'set-ntp' 'true' && timedatectl status ===== Network ===== ==== DNS ==== * [[servers:upstream_dns_servers|More DNS Servers]] nmcli con show sudo nmcli connection modify 'Wired connection 1' 'ipv4.dns' '192.168.1.1,1.1.1.2,1.0.0.2' sudo nmcli connection modify 'Wired connection 1' 'ipv6.dns' '2606:4700:4700::1112,2606:4700:4700::1002' sudo nmcli connection modify 'Wired connection 1' 'ipv4.address' '192.168.1.152/24' sudo nmcli connection modify 'Wired connection 1' 'ipv4.gateway' '192.168.1.1' sudo nmcli connection modify 'Wired connection 1' 'ipv4.method' 'manual' sudo nmcli connection up 'Wired connection 1' ==== Firewalld ==== * [[linux:notes:firewalld|Notes]] sudo firewall-cmd --get-active-zones sudo firewall-cmd --permanent --zone='docker' --remove-interface='docker0' sudo systemctl restart 'firewalld' ====== Boot Loader ====== ===== YaST ===== sudo yast2 'bootloader' ==== Boot Code Options ==== * Boot Loader: ''GRUB2 for EFI'' * ''[ ]'' Secure Boot Support * ''[x]'' Update NVRAM Entry * Protective MBR flag: ''do not change'' ==== Kernel Parameters ==== * CPU Mitigations: ''Auto'' * ''[ ]'' Graphical console * ''[ ]'' Serial console === Kraityn === * [[linux:notes:kernel_parameters|More Kernel Parameters]] * Last updated: 2026/07/10 quiet bgrt_disable security='' hibernate='no' idle='halt' nohz='off' preempt='lazy' iommu='pt' memory_corruption_check='0' init_on_alloc='0' init_on_free='0' drm_kms_helper.poll='0' drm_kms_helper.fbdev_emulation='0' hostname='localhost' pci='pcie_bus_perf,notph' === Default === security=selinux selinux=1 loglevel=3 splash=silent systemd.show_status=1 ==== Bootloader Options ==== * Timeout in Seconds: ''0'' * ''[ ]'' Probe Foreign OS * ''[ ]'' Hide Menu on Boot * Default Boot Section: ''openSUSE Tumbleweed'' * ''[ ]'' Protect Boot Loader with Password ===== config.txt ===== sudo -e '/boot/efi/extraconfig.txt' # Disable dtoverlay=disable-bt dtoverlay=disable-wifi disable_splash=1 disable_fw_kms_setup=1 # Tweaks arm_boost=1 force_turbo=1 over_voltage=15 arm_freq=2100 max_usb_current=1 # End ====== Drive Maintenance ====== ===== Trim ===== sudo systemctl enable 'fstrim.timer' --now sudo systemctl start 'fstrim' && sync && sudo systemctl status 'fstrim' -l sudo fstrim -v -a ===== ext2 ===== * :!: From LiveUSB/unmounted * TODO sudo e2fsck -D -E 'discard,optimize_extents,inode_count_fullmap' -f -v -y '/dev/sda2' ===== ext4 NAS ===== * [[linux:notes:ext4|Notes]] * TODO: Maintenance service sudo e4defrag -v '/dev/sdb' ====== Tweaks ====== ===== General ===== echo "export LD_BIND_NOW='1'" | sudo tee '/etc/profile.d/general-tweaks.sh' > '/dev/null' ===== modprobe.d ===== * [[linux;notes;modprobe.d_tweaks#alira|Notes]] ===== Dracut ===== sudo -e '/etc/dracut.conf.d/99-tweaks.conf' compress="gzip" do_strip="yes" aggressive_strip="yes" hostonly="yes" hostonly_mode="strict" reproducible="no" enhanced_cpio="no" i18n_install_all="no" kernel_cmdline="rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0" # End sudo dracut --force --regenerate-all ===== journald ===== sudo mkdir -p '/etc/systemd/journald.conf.d' && sudo -e '/etc/systemd/journald.conf.d/99-tweaks.conf' && sudo journalctl --vacuum-time='1s' --rotate [Journal] Storage=none Compress=false MaxLevelStore=0 MaxLevelSyslog=0 MaxLevelKMsg=0 MaxLevelConsole=0 MaxLevelWall=0 # End sudo journalctl --vacuum-time='1s' --rotate ===== fstab ===== sudo -e '/etc/fstab' ==== swap ==== ,discard=once ==== EFI ==== * https://www.kernel.org/doc/Documentation/filesystems/vfat.txt * ''/boot/efi type vfat'' ,discard ====== Automatic Updates ====== ===== Time Sync ===== * Fixes timers firing at boot without early accurate time (no RTC) * :!: WIP * https://raspberrypi.stackexchange.com/questions/94635/how-can-i-delay-the-startup-of-systemd-services-until-the-datetime-is-set-no-rt/95195#95195 * https://terinstock.com/post/2021/12/Systemds-clock-epoch-for-RTC-less-systems/ sudo systemctl enable --now 'systemd-timesyncd.service' ===== Service ===== sudo -e '/etc/systemd/system/suse-up.service' [Service] Type=oneshot ExecStartPre='/usr/bin/zypper' clean --all ExecStart='/usr/bin/zypper' --non-interactive refresh --force --services ExecStart='/usr/bin/zypper' --non-interactive dist-upgrade --auto-agree-with-licenses --allow-downgrade --allow-name-change --allow-arch-change --allow-vendor-change ExecStartPost='/usr/bin/sync' ExecStartPost='/usr/bin/systemctl' reboot # End ===== Timer ===== * ''06:00'' Kraityn sudo -e '/etc/systemd/system/suse-up.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'suse-up.timer' --now [Unit] Description=openSUSE OS Updater After=network-online.target Wants=network-online.target [Timer] OnCalendar=*-*-* 06:00:00 Persistent=true [Install] WantedBy=timers.target # End sudo systemctl start 'suse-up' ====== Notable Folders and Commands ====== * See [[linux:notes:misc]]