393 lines
9.5 KiB
Markdown
393 lines
9.5 KiB
Markdown
# Fedora
|
|
|
|
- [Fedora](#fedora)
|
|
- [Framework 16 Fixes](#framework-16-fixes)
|
|
- [Wake from Sleep](#wake-from-sleep)
|
|
- [Wrong keys pressed in the browser](#wrong-keys-pressed-in-the-browser)
|
|
- [Fix wifi disconnecting and reconnecting repeatedly on reboot/resume](#fix-wifi-disconnecting-and-reconnecting-repeatedly-on-rebootresume)
|
|
- [Wifi Powersave](#wifi-powersave)
|
|
- [Podman](#podman)
|
|
- [Autostarting services with quadlets](#autostarting-services-with-quadlets)
|
|
- [Toolbox](#toolbox)
|
|
- [Network](#network)
|
|
- [VLAN Setup with nmcli](#vlan-setup-with-nmcli)
|
|
- [ZRAM](#zram)
|
|
- [Libraries](#libraries)
|
|
- [DNF](#dnf)
|
|
- [Apps](#apps)
|
|
- [DNF](#dnf-1)
|
|
- [VSCode](#vscode)
|
|
- [Virtualization](#virtualization)
|
|
- [NVM](#nvm)
|
|
- [Ollama](#ollama)
|
|
- [UV](#uv)
|
|
- [Pipenv](#pipenv)
|
|
- [Backups](#backups)
|
|
- [BTRFS Snapshots](#btrfs-snapshots)
|
|
- [ROCM](#rocm)
|
|
- [Display](#display)
|
|
- [Scripted Display Modes](#scripted-display-modes)
|
|
|
|
## 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`
|
|
|
|
```conf
|
|
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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```conf
|
|
[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
|
|
```
|
|
|
|
```bash
|
|
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>
|
|
|
|
```bash
|
|
vim /etc/NetworkManager/conf.d/wifi-powersave-off.conf
|
|
```
|
|
|
|
```conf
|
|
[connection]
|
|
# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable).
|
|
wifi.powersave = 2
|
|
```
|
|
|
|
```bash
|
|
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`:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
toolbox create
|
|
toolbox enter
|
|
```
|
|
|
|
## Network
|
|
|
|
### VLAN Setup with nmcli
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Show existing configuration
|
|
zramctl
|
|
#
|
|
swapoff /dev/zram0
|
|
# Reset swap
|
|
zramctl -r /dev/zram0
|
|
|
|
# Set a new size
|
|
zramctl --size 4G /dev/zram0
|
|
```
|
|
|
|
## Libraries
|
|
|
|
### DNF
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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](#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.
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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`
|
|
|
|
```bash
|
|
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'
|
|
``` |