Files
homelab/active/os_fedora/fedora.md
ducoterra 7b93f740ec
Some checks failed
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Failing after 2m40s
Podman DDNS Image / build-and-push-ddns (push) Failing after 5s
wyoming updates, borg manual, fedora kscreen, bambu wifi, vscode pylance, stable diffusion
2025-05-23 13:49:03 -04:00

9.5 KiB

Fedora

Framework 16 Fixes

Wake from Sleep

The keyboard/mouse can be pressed through the lid while in a backpack. Disable them to prevent wake from sleep.

/etc/udev/rules.d/69-suspend.rules

ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled"

# https://askubuntu.com/questions/848698/wake-up-from-suspend-using-usb-device
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", RUN+="/bin/sh -c 'echo disabled > /sys$env{DEVPATH}/power/wakeup'"

Reload

sudo udevadm control --reload-rules && sudo udevadm trigger

Wrong keys pressed in the browser

Sometimes keys will stop working when using search bars or do strange things like move the page around. This seems to be caused by some "alt" keypress combination. Pressing "alt" twice fixes it.

Fix wifi disconnecting and reconnecting repeatedly on reboot/resume

Create a file in /etc/systemd/system/reset-iwlwifi.service with the following content:

[Unit]
Description=Reload iwlwifi on wake-up
After=suspend.target
After=multi-user.target

[Service]
ExecStartPre=rmmod iwlmvm iwlwifi
ExecStart=modprobe iwlwifi

[Install]
WantedBy=suspend.target
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable reset-iwlwifi.service

Wifi Powersave

NOTE: THIS DOESN'T WORK. IT CAUSES WIFI DISCONNECT AND RECONNECT ISSUES.

https://www.networkmanager.dev/docs/api/latest/settings-802-11-wireless.html

https://gist.github.com/jcberthon/ea8cfe278998968ba7c5a95344bc8b55

https://askubuntu.com/questions/1230525/ubuntu-20-04-network-performance-extremely-slow

vim /etc/NetworkManager/conf.d/wifi-powersave-off.conf
[connection]
# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable).
wifi.powersave = 2
systemctl restart NetworkManager

Podman

Since you'll be using podman for most container-based services, you'll want to set the the podman auth file to somewhere persistent, otherwise it'll get deleted every time you reboot.

Add this to your .bashrc:

# Podman auth file
export REGISTRY_AUTH_FILE=$HOME/.podman-auth.json

Source that and then run podman login to create the file.

Autostarting services with quadlets

If you want to run something as your user at boot (like a systemd process, think ollama) you can create a user quadlets like so:

# Generate the .container file
podman run --rm ghcr.io/containers/podlet --install --description "Local AI" \
  podman run \
  -d \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  --restart always \
  docker.io/ollama/ollama > ~/.config/containers/systemd/ollama.container

# Verify the service (Note the filename:service, this is required! You will get "Failed to prepare filename" without it)
systemd-analyze verify ~/.config/containers/systemd/ollama.container:ollama.service

# Start the service
systemctl --user daemon-reload
systemctl --user start ollama

Toolbox

toolbox create
toolbox enter

Network

VLAN Setup with nmcli

# VLAN 2
nmcli conn
export NMCLI_DEVICE=enp195s0f4u1u3
nmcli connection add type VLAN con-name $NMCLI_DEVICE.2 dev $NMCLI_DEVICE id 2

ZRAM

Increasing zram size

# Show existing configuration
zramctl
# 
swapoff /dev/zram0
# Reset swap
zramctl -r /dev/zram0

# Set a new size
zramctl --size 4G /dev/zram0

Libraries

DNF

sudo dnf install -y \
make \
gcc \
zlib-devel \
bzip2 \
bzip2-devel \
readline-devel \
sqlite \
sqlite-devel \
openssl-devel \
tk-devel \
libffi-devel \
xz-devel \
libgle-devel

Apps

DNF

sudo dnf install \
  # Advanced text editor for code editing and other tasks.
  vim \
  # Network bandwidth measuring tool.
  iperf3 \
  # Command-line interface for managing Kubernetes clusters.
  kubectl \
  # Package manager and deployment tool for Kubernetes.
  helm \
  # Utility to monitor real-time network usage of processes.
  nethogs \
  # DevOps configuration management tool.
  ansible \
  # Terminal multiplexer.
  tmux \
  # Multimedia player with support for a wide range of codecs and file formats.
  ffmpeg \
  # Microsoft Windows compatibility layer.
  wine \
  # Archive utility similar to GNU tar, used to package files into single archive files.
  unzip \
  # A terminal activity monitor (top clone).
  btop \
  # Command-line JSON processor.
  jq \
  # YAML-based configuration-as-code tool for command-line interfaces written in Go, Rust, Python, and more.
  yq \
  # An image manipulation software suite based on ImageMagick.
  ImageMagick \
  # The Go programming language environment including a toolchain (gc) and libraries.
  go \
  # Rust package manager and compiler installation utility.
  rust rustup \
  # Distributed version control system, Git extension that adds support for large files like multimedia assets.
  git git-lfs \
  # Provides traditional network tools such as ifconfig, netstat, hostname, etc., in a single package.
  net-tools \
  # Document conversion tool and markup language converter.
  pandoc \
  # Comprehensive LaTeX distribution for high-quality typesetting of documents.
  texlive-latex \
  # Generate strong passwords.
  pwgen \
  # Reattach to running processes
  reptyr \
  # Netcat, for basic tcp/udp operations
  netcat \
  # 7zip support
  p7zip

VSCode

https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions

Virtualization

# Virtualization
sudo dnf group install --with-optional virtualization

NVM

https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating

Ollama

https://ollama.com/download

Run the installation script as normal. Make sure you have the ROCM drivers installed for GPU acceleration. The script should automatically pull the ROCM drivers after installing the base packages. If not, you should install them manually.

For starting ollama as a service, follow the link below:

https://github.com/ollama/ollama/blob/main/docs/linux.md#adding-ollama-as-a-startup-service-recommended

UV

https://docs.astral.sh/uv/getting-started/installation/

Pipenv

https://pipenv.pypa.io/en/latest/installation.html#installing-pipenv

Backups

BTRFS Snapshots

https://en.opensuse.org/openSUSE:Snapper_Tutorial

http://snapper.io/manpages/snapper-configs.html

We'll be using snapper, a tool for automating and controlling snapshot behavior.

dnf install snapper dnf-plugin-snapper

# Allow selinux management
semanage permissive -a snapperd_t

# Note, if you mess something up you can run snapper -c root delete-config to delete
# System configs are stored in /etc/sysconfig/snapper as well as /etc/snapper
snapper -c root create-config /
snapper -c data create-config /path/to/other/data

# Enable automatic snapshots
systemctl enable --now snapper-timeline.timer
# Enable automatic cleanup
systemctl enable --now snapper-cleanup.timer
# Enable snapshots on boot
systemctl enable --now snapper-boot.timer

# List snapshots
snapper -c root list
# Create snapshot manually
snapper -c root create --description "test snapshot"
# Delete first snapshot
snapper -c root delete 1

Note - you probably don't want to keep yearly snapshots. Edit /etc/snapper/configs/root and change TIMELINE_LIMIT_YEARLY= to 0.

ROCM

sudo dnf install \
hipblas-develhipblaslt-devel \
hipcc \
hipcc-libomp-devel \
hipcub-devel \
hipfft-devel \
hipfort-devel \
hiprand-devel \
hiprt-devel \
hipsolver-devel \
hipsparse-devel \
rocalution-devel \
rocblas-devel \
rocfft-devel \
rocm-clang-devel \
rocm-clang-tools-extra-devel \
rocm-cmake \
rocm-comgr-devel \
rocm-core-devel \
rocm-hip-devel \
rocm-libc++-devel \
rocm-libc++-static \
rocm-llvm-devel \
rocm-omp-devel \
rocm-runtime-devel \
rocm-rpp-devel \
rocm-smi-devel \
rocminfo \
rocdecode-devel \
rocjpeg-devel \
rocprim-devel \
rocrand-devel \
rocsolver-devel \
rocsparse-devel \
rocthrust-devel \
roctracer-devel \
miopen

Display

Scripted Display Modes

Put something like these in ~/.bashrc.d/screen.sh

alias screen-reset='kscreen-doctor \
output.eDP-2.enable \
output.eDP-2.position.0,0 \
output.eDP-2.primary \
output.eDP-2.mode.2560x1600@165 \
output.eDP-2.scale.1.25'

alias screen-1080='kscreen-doctor \
output.eDP-2.enable \
output.eDP-2.position.0,0 \
output.eDP-2.primary \
output.eDP-2.mode.1920x1080@165 \
output.eDP-2.scale.1'