Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
  • Multimedia
  • Windows

Cloud

  • OpenStack
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Incus
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid

tmux

Links
https://superuser.com/questions/210125/scroll-shell-output-with-mouse-in-tmux

Ubuntu autoinstall

HowTo
https://canonical-subiquity.readthedocs-hosted.com/en/latest/tutorial/providing-autoinstall.html#providing-autoinstall

Download Ubuntu iso
https://releases.ubuntu.com/24.04/ubuntu-24.04-desktop-amd64.iso

wget https://releases.ubuntu.com/24.04/ubuntu-24.04-desktop-amd64.iso -O ~/Downloads/iso/ubuntu-24.04-desktop-amd64.iso

Prepare

sudo apt install -y qemu-system-x86

# mount ISO by double click
#sudo mount -r ~/Downloads/iso/ubuntu-24.04-desktop-amd64.iso /mnt

autoinstall.yaml

cat < autoinstall.yaml
#cloud-config
autoinstall:
  version: 1
  locale: en_US.UTF-8
  keyboard:
    layout: de
  identity:
    hostname: u2104
    username: root
    password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0" # ubuntu
  ssh:
    install-server: yes
    allow-pw: no
    # authorized-keys:
    #   - "ssh-rsa xxxxxxxxxx foo-key"
  apt:
    geoip: true
  # storage:
  #   layout:
  #     name: lvm
  late-commands:
    - curtin in-target --target=/target -- apt update
    - curtin in-target --target=/target -- apt upgrade -y
    - curtin in-target --target=/target -- apt autoremove -y
    - curtin in-target --target=/target -- ssh-import-id-gh panticz
EOF
#touch meta-data
touch vendor-data

# start webserver
python3 -m http.server 3003

VM

Automatically move photos from memory card to hard drive with udev

Create udev rule

cat < /etc/udev/rules.d/70-persistent-dcim.rules
KERNEL=="sd*1",SUBSYSTEM=="block",ATTR{partition}=="1",ACTION=="add",RUN+="/usr/sbin/mvdcim.sh \$KERNEL"
EOF

Create mvdcim.sh script

cat < /usr/sbin/mvdcim.sh  
#!/bin/bash

DEVICE=/dev/\${1}
SOURCE=/mnt/DCIM/100NIKON
TARGET=/home/hafr/dcim

mount \${DEVICE} /mnt
if [ -d \${SOURCE} ]; then
        mv \${SOURCE}/*.jpg \${TARGET}         
        chmod 666 \${TARGET}/*.jpg
        eject \${DEVICE}
else
        umount /mnt
fi
EOF
chmod +x /usr/sbin/mvdcim.sh

udev
http://www.panticz.de/udev

Links
http://wiki.ubuntuusers.de/UDEV

PulseAudio

PulseAudio CLI

pulseaudio --check
pulseaudio -k
pulseaudio -D

PulseAudio CLI
https://rastating.github.io/setting-default-audio-device-in-ubuntu-18-04/
https://wiki.archlinux.org/index.php/PulseAudio/Examples

pactl list short sinks
pactl list short sources

pactl set-sink-volume 35 17%

# restart
systemctl --user restart pulseaudio

Equalizer

# https://raw.githubusercontent.com/panticz/installit/master/install.pulseaudio-equalizer.sh

if [ "$(pulseaudio-equalizer status | grep "Equalizer status" | cut -d"[" -f2 | cut -d"]" -f1)" == "enabled" ]; then
    pulseaudio-equalizer disable
else
    pulseaudio-equalizer enable
fi
INPUT_INDEX=$(pacmd list-sink-inputs | grep index | cut -d":" -f2)

pactl load-module module-null-sink sink_name=steam
pactl move-sink-input ${INPUT_INDEX} steam

DEFAULT_OUTPUT=$(pacmd list-sinks | grep -A1 "* index" | grep -oP "<\K[^ >]+")
echo $DEFAULT_OUTPUT

pactl load-module module-combine-sink \
    sink_name=record-n-play slaves=$DEFAULT_OUTPUT \
    sink_properties=device.description="Record-and-Play"

parec --format=s16le -d record-n-play.monitor | \
    lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3" \
    > /dev/null &1>/dev/null

pacmd list-sinks | grep -A1 "* index" | grep -oP "<\K[^ >]+"

Switch audio output with CLI

pactl list short sinks
pacmd set-default-sink 6
pacmd set-default-sink alsa_output.pci-0000_00_03.0.hdmi-stereo

# get default
LANG=en pactl info | sed -En 's/Default Sink: (.*)/\1/p'
pacmd list-sinks | grep -e 'name:' -e index | paste - -

Switch to next output sink

parted

Install

apt-get install -y parted
parted /dev/sdX print
parted /dev/sdX unit MB print free

parted /dev/sdX unit GB mkpart primary ntfs 468 520

parted /dev/sdX mkpart primary ext2 468GB 520GB

parted /dev/sdX mkpart primary ext2 468012 520008

sudo parted -s /dev/sdX mkpart primary 0% 100%
sudo parted -s /dev/sdX mklabel msdos

parted /dev/sdX -s rm 1
parted /dev/sdX -s mklabel msdos
parted /dev/sdX -s mkpart primary ext4 0% 99%
parted /dev/sdX -s mkpart primary linux-swap 99% 100%

parted /dev/sdX -s rm 1
parted /dev/sdX -s mklabel msdos
parted /dev/sdX -s mkpart primary 1 256G
parted /dev/sdX -s mkpart primary 256G 128G
parted /dev/sdX -s mkpart primary 2048s 100%
parted /dev/sdX -s set 1 raid on

Ubuntu 25.04 Plucky Puffin LTS

Schedule
https://wiki.ubuntu.com/PluckyPuffin/ReleaseSchedule

ReleaseNotes
https://wiki.ubuntu.com/PluckyPuffin/ReleaseNotes

Known issues
https://wiki.ubuntu.com/FocalFossa/ReleaseNotes#Known_issues

Download
Releases: https://releases.ubuntu.com/releases/25.04
Cloud image (minimal): https://cloud-images.ubuntu.com/minimal/daily/focal/current/focal-minimal-cloudimg-amd64.img
Netboot: http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/images/netboot/mini.iso
Torrent: http://releases.ubuntu.com/20.04/ubuntu-20.04-desktop-amd64.iso.torrent

Repository

echo "deb http://de.archive.ubuntu.com/ubuntu focal main restricted universe multiverse" \
    sudo tee /etc/apt/sources.list.d/ubuntu-focal.list
echo "deb http://de.archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse" \
    sudo tee /etc/apt/sources.list.d/ubuntu-focal-updates.list

# v2
deb [arch=amd64] http://de.archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb [arch=amd64] http://de.archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb [arch=amd64] http://de.archive.ubuntu.com/ubuntu focal-security main restricted universe multiverse
deb [arch=amd64] http://de.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse

sudo apt update

DEP

Workarounds

# skip disk check
fsck.mode=skip

# Install and configure python2 as default
sudo apt install -y python-is-python2

# set python3 as default
apt install -y python-is-python3

# Install PIP 2 under Ubuntu 20.04
wget https://bootstrap.pypa.io/2.7/get-pip.py -qO- | python2

Reenable hle and rtm CPU flags
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1853200
https://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean
https://access.redhat.com/articles/tsx-asynchronousabort

logrotate

Install

apt-get install -y logrotate

/etc/logrotate.d/rsyslog

/var/log/syslog
{
	rotate 7
	daily
        size 100M
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		/usr/lib/rsyslog/rsyslog-rotate
	endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
	rotate 4
	weekly
	missingok
	notifempty
	compress
	delaycompress
	sharedscripts
	postrotate
		/usr/lib/rsyslog/rsyslog-rotate
	endscript
}

Force logrotate

logrotate -vf /etc/logrotate.conf

Manuall compress logfiles

find /srv/log/*/202*/0{1..3}/ -type f -size +128M | xargs gzip

ddrescue

Install

apt install -y gddrescue
dpkg -i gddrescue_1.22-1_amd64.deb

Rescue

ddrescue /dev/sda sda.dd sda.ddrescue.log

restic

Install

sudo apt install -y restic

Configure systemd

cat < ~/.config/systemd/user/restic-backup.service
[Unit]
Description=Restic backup service

[Service]
Type=oneshot
Environment=BACKUP_PATHS="vault.pass vault-private.pass .gtkrc-2.0 .bashrc .icons .themes .thunderbird .config .ssh/config"
Environment=BACKUP_EXCLUDES="--exclude=Code --exclude=google-chrome --exclude=VirtualBox --exclude=ImapMail"
Environment=RETENTION_HOURS=8
Environment=RETENTION_DAYS=5
Environment=RETENTION_WEEKS=0
Environment=RETENTION_MONTHS=0
Environment=RETENTION_YEARS=0
Environment=RESTIC_REPOSITORY=%h/Backup
Environment=RESTIC_PASSWORD=sup3r_s3cr3t_r3p0_p4ssw0rd
ExecStart=restic backup --tag systemd.timer $BACKUP_EXCLUDES $BACKUP_PATHS
ExecStartPost=restic forget --tag systemd.timer --group-by "paths,tags" --prune --keep-hourly $RETENTION_HOURS --keep-daily $RETENTION_DAYS 
#--keep-weekly $RETENTION_WEEKS --keep-monthly $RETENTION_MONTHS --keep-yearly $RETENTION_YEARS
ExecStartPost=rsync -aHAXx --numeric-ids --delete --stats --info=progress2 --out-format="[%%t]:%%o:%%f:Last Modified %%M" --verbose -e "ssh -o Compression=no -x" "%h/Backup/" restic@BACKUP_SERVER_FQDN:/home/restic/HOSTNAME/
EOF
<code>

<strong>Links</strong>
https://www.geekbundle.org/backups-mit-restic/

sysctl

configure parameter

# determine the maximum size of a shared memory segment
cat /proc/sys/kernel/shmmax

# set default shared memory limit for shmmax (16 GB)
echo 17179869184 > /proc/sys/kernel/shmmax

# add the following line to /etc/sysctl.conf to make a change permanent
echo "kernel.shmmax=4294967296" >> /etc/sysctl.d/90-shmmax.conf

# load parameter
/sbin/sysctl -p /etc/sysctl.d/90-shmmax.conf

reduce swap usage
https://en.wikipedia.org/wiki/Swappiness

# get swappiness
cat /proc/sys/vm/swappiness

# set swappiness
echo "vm.swappiness = 1" > /etc/sysctl.d/90-swap.conf

# disable IPv6
echo "net.ipv6.conf.all.disable_ipv6 = 1" > /etc/sysctl.d/01-disable-ipv6.conf

# load kernel settings from all system configuration files
sysctl --system

# load settings from default configuration /etc/sysctl.conf
sysctl -p

# load settings from specified file
sysctl -p /etc/sysctl.d/filename.conf

# limit
sysctl net.inet.icmp.icmplim=2000

Links
https://www.cyberciti.biz/faq/reload-sysctl-conf-on-linux-using-sysctl/

Pagination

  • Previous page
  • 2
  • Next page
linux
Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung