Proxmox : LXC Unprivileged konvertieren zu Privileged

Ich setzte zuhause Proxmox ein und lasse alles auf LXC laufen, da es einiges an Overhead spart.
Normalerweise läuft ein LXC als "Unprivileged container" in machen Fällen kann es jedoch vorkommen das ein LXC als "Privileged container" laufen muss. Ein konvertieren des LXC ist nur über einen kleinen Umweg möglich.

Das einfachste Vorgehen :

1.) Stoppen des LXCs (in meinen Fall 102)
2.) einen Snapshot des LXC erstellen
2.) Diesen Snapshot dann als neue Maschine (hier 103) restoren und den Parameter für unprivileged auf 0 setzen
pct restore 103 /var/lib/vz/dump/vzdump-lxc-102-2021_11_18-22_49_58.tar.zst -ignore-unpack-errors 1 -unprivileged 0 --storage ZFS-DATA

3.) Starten des LXC

Dieses Vorgehen sollte aber nur verwendet werden wenn es GAR NICHT anders geht ;-)

Privileged containers: container uid 0 is mapped to the host's uid 0.
Unprivileged containers: container uid 0 is mapped to an unprivileged user on the host.

das bedeutet bei einem Privileged containers ist der user root im container auch der root user auf dem proxmox host

Proxmox : https://www.proxmox.com/de/
LXC : https://de.wikipedia.org/wiki/LXC

Ubuntu 20.04 : zweite Festplatte verschlüsseln

Ich habe in meinem Laptop mehrere Festplatten und möchte nun auch die zweite Festplatte über LUKS verschlüsseln. Die erste Festplatte habe ich bereits bei der Installation verschlüsselt. Die Benutzung soll aber recht einfach sein. Es gibt bestimmt mehrere Wege das zu erreichen, ich zeige hier meinen ;-)

Als erstes legt man mal mit fdisk eine neue Partition an. Hierzu möchte ich mich an dieser Stelle nicht weiter auslassen. Diese verschlüsselt man dann mit cryptsetup.
cryptsetup -y -s 512 luksFormat /dev/sda1
/dev/sda1 ist hier die neu angelegt Partition (ALLE DATEN WERDEN GELÖSCHT !)
LUKS - Step 1
Als erstes müssen wir die verschlüsselte Partition mit cryptsetup mounten
cryptsetup luksOpen /dev/sda1 lvmsda1
dann muss ein volume initialisiert werden , eine volume group erstellt werden und ein logical volume angelegt werden. Das erledigen wir so
pvcreate /dev/mapper/lvmsda1
vgcreate -s64M vgdata /dev/mapper/lvmsda1
lvcreate -n DATA -L 1.8TB vgdata
LUKS - Step 2
Jetzt bekommt unser lv noch ein Dateisystem
mkfs.ext4 /dev/vgdata/DATA
LUKS - Step 3
Jetzt tragen wir die neue HDD in der crypttab ein und in der fstab
vi /etc/crypttab
vi /etc/fstab
die jeweiligen Werte könnte ihr aus dem Screenshot entnehmenLUKS - Step 4

Linux : ~/ sichern mit Borgbackup

Ich habe hier einiges an sensible Daten in meinem Homeverzeichnis die ich nicht verlieren möchte. Deswegen habe ich mir ein borgbackup eingerichtet das mir alle 30 Minuten ein Backup auf meine zweite HDD schiebt. Da beide HDD bei mir mit LUKS verschlüsselt sind ist das Repo nicht gesondert gesichert.

Sollte man hier auf ein NFS oder ein anderes unverschlüsseltes Ziel sichern rate ich zu einer encryption !

Installieren von borgbackup
sudo apt install borgbackup
dann richten wir auf der zweiten HDD ein Repo ein. Das hab ich dann so gemacht
mkdir -p /media/chris/hdd2/backup
cd /media/chris/hdd2/backup
natürlich muss der mountpoint eurer Umgebung angepasst werden. Jetzt initialisieren wir das REPO für das Backup
borg init -e none /media/chris/hdd2/backup
Nochmal der Hinweis -e none kommt bei mir nur zum Einsatz da ALLE HDDs in meinem Notebook mit LUKS verschlüsselt sind
Ab jetzt kann man Backups in das Verzeichnis machen. Ich hab mir hier das ein Script zusammengebaut
!/bin/bash
_bbin=$(which borg)
_tbin=$(which tee)
# -----------------------------------------------------------------
# VARs
# -----------------------------------------------------------------
_own_path=$(dirname $(readlink -f ${0}))
_mnt_path="" # mount point 2 hdd
_src_path="" # was soll gesichert werden ? z.B. /home/test sichert das komplette Homeverzeichniss
_exclude="" # welche Verzeichnisse sollten nicht gesichert werden ? z.B. /home/test/Downloads
_tar_path="" # Wohin wird gesichert
_repo_name="HOME-$(date '+%Y%m%d-%H%M%S')" # Name der Sicherung
_borg_para="-v --stats -C lz4" # Parameter für das Borgbackup
_borg_log="${_own_path}/logs/borg.log" # wo liegt das log
# -----------------------------------------------------------------
# parameter for borg prune
# https://borgbackup.readthedocs.io/en/stable/usage/prune.html
KH=2    # keep hourly
KD=2    # keep daily
KW=4    # keep weekly
KM=3    # keep monthly
# create prune parameter
_borg_prune=""
if [ ${KH} != 0 ]; then
    _borg_prune="${_borg_prune} --keep-hourly=${KH}"
fi

if [ ${KD} != 0 ]; then
    _borg_prune="${_borg_prune} --keep-daily=${KD}"
fi

if [ ${KW} != 0 ]; then
    _borg_prune="${_borg_prune} --keep-weekly=${KW}"
fi

if [ ${KM} != 0 ]; then
    _borg_prune="${_borg_prune} --keep-monthly=${KM}"
fi
# -----------------------------------------------------------------
# check folders
if [ ! -d "${_own_path}/logs" ]; then
    mkdir -p "${_own_path}/logs"
fi
# -----------------------------------------------------------------
# write all to logfile
exec > >(${_tbin} -i ${_borg_log})
exec 2>&1
# -----------------------------------------------------------------
_chk_mnt=$(mount | grep -iq "${_mnt_path}")
if [ $? -eq 0 ]; then
    echo -e "\n#----------------------------------------------------------------------------------------------#"
    echo "############### borg create ####################################################################"
    echo -e "#----------------------------------------------------------------------------------------------#\n"
    ${_bbin} create ${_borg_para} ${_tar_path}::${_repo_name} ${_src_path}
    if [ $? -eq 0 ]; then
        echo -e "\n#----------------------------------------------------------------------------------------------#"
        echo "############### borg prune #####################################################################"
        echo -e "#----------------------------------------------------------------------------------------------#\n"
        ${_bbin} prune --list ${_tar_path} ${_borg_prune}
        echo -e "\n#----------------------------------------------------------------------------------------------#"
        echo "############### borg list ######################################################################"
        echo -e "#----------------------------------------------------------------------------------------------#\n"
        ${_bbin} list ${_tar_path}
        echo -e "\n#----------------------------------------------------------------------------------------------#"
        echo "############### borg info ######################################################################"
        echo -e "#----------------------------------------------------------------------------------------------#\n"
        ${_bbin} info ${_tar_path}
    fi
    exit 0
else
    echo "$(date '%Y%m%d %H:%M') - ${_mnt_path} is not mounted exited" >> ${_borg_log}
    exit 1
fi
diese Script legt man sich jetzt irgendwo auf die Platte und ruft es in crontab auf z.B. alle 30 Minuten
*/30 * * * * /scripts/create_borg_backup.sh

Ubuntu 20.04 : Kein Sound nach Update von 19.10

TL;DR :
sudo echo "options snd-hda-intel model=auto index=1" >> /etc/modprobe.d/alsa-base.conf
sudo echo "blacklist snd_soc_skl" >> /etc/modprobe.d/blacklist.conf >> 
Problem : Nach meinem Update von Ubuntu 19.10 auf Ubuntu 20.04 hatte ich keinen Sound mehr von der OnBoard Soundkarte. Das Headset hat funktioniert und die HDMI Targets auch nur der 3,5" Klinke war stumm.

Lösung : Der Fehler bestand darin das das Kernelmodul nicht geladen wurde.
sudo vi /etc/modprobe.d/alsa-base.conf
dort an das Ende der Datei die beiden Zeilen reinkopieren.
# Load Intel
options snd-hda-intel model=auto index=1
und das modul snd_soc_skl auf die Blacklist verfrachten
sudo vi /etc/modprobe.d/blacklist.conf
dort an das Ende der Datei die Zeile reinkopieren
# require for intel snd_hda_intel
blacklist snd_soc_skl

nach einem Neustart war mein Sound wieder da ;-)

Um sich anzeigen zu lassen welche Soundkarten bzw. Target erkannt werden kann man diesen Befehl ausführen
cat /proc/asound/cards
der output sollte dann so ähnlich aussehen
 0 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xdf080000 irq 17
 1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xdf440000 irq 149
 2 [C615           ]: USB-Audio - HD Webcam C615
                      HD Webcam C615 at usb-0000:00:14.0-1, high speed
 3 [Device         ]: USB-Audio - USB PnP Sound Device
                      C-Media Electronics Inc. USB PnP Sound Device at usb-0000:00:14.0-2, full speed

Linux : Ermitteln über die verbaute Hardware

Mal schnell unter Linux ermitteln welches Mainboard verbaut ist
sudo dmidecode -t 2

# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.0 present.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
	Manufacturer: MSI
	Product Name: Z270 GAMING PRO CARBON (MS-7A63)
	Version: 1.0
	Serial Number: H216226023
	Asset Tag: Default string
	Features:
		Board is a hosting board
		Board is replaceable
	Location In Chassis: Default string
	Chassis Handle: 0x0003
	Type: Motherboard
	Contained Object Handles: 0
Die Befehle inxi und lshw zeigen z.B. schön aufbereitet den Arbeitsspeicher an
 >> sudo inxi -m
Memory:    RAM: total: 31.32 GiB used: 1.13 GiB (3.6%) 
           Array-1: capacity: 64 GiB slots: 4 EC: None 
           Device-1: ChannelA-DIMM0 size: 8 GiB speed: 3000 MT/s 
           Device-2: ChannelA-DIMM1 size: 8 GiB speed: 3000 MT/s 
           Device-3: ChannelB-DIMM0 size: 8 GiB speed: 3000 MT/s 
           Device-4: ChannelB-DIMM1 size: 8 GiB speed: 3000 MT/s 
>> sudo lshw -C memory | grep bank -A 9
     *-bank:0
          Beschreibung: DIMM DDR4 Synchron 3000 MHz (0,3 ns)
          Produkt: F4-3000C15-8GRK
          Hersteller: Fujitsu
          Physische ID: 0
          Seriennummer: 00000000
          Steckplatz: ChannelA-DIMM0
          Größe: 8GiB
          Breite: 64 bits
          Takt: 3GHz (0.3ns)
     *-bank:1
          Beschreibung: DIMM DDR4 Synchron 3000 MHz (0,3 ns)
          Produkt: F4-3000C15-8GRK
          Hersteller: Fujitsu
          ....
für die CPU reicht ein
cat /proc/cpuinfo
oder man verwendet wieder lshw
sudo lshw -C cpu
  *-cpu                     
       Beschreibung: CPU
       Produkt: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
       ....
Kleine Spielerrei am Rande der Output von neofetch
neofetch

ffmpeg : schneiden von Videos

da ich mir immer wieder in der ManPage das zusammen Suche schreib ich jetzt einfach mal einen Eintrag hier.
Man kann relativ schnell mit ffmpeg ein Video scheiden, ich selbst schneide meine Screencast damit und bin recht zufrieden. Ein Keyframe genaus scheiden ist damit aber leider nicht möglich, ist immer ein wenig Bastelei. Jedoch entfällt das üblich neu kodieren des Videos das z.B. bei OpenShot fällig wird.
ffmpeg -ss 15 -i recorded-stream.mkv -to 01:55:21 -c copy configure-atp-on-office365.mkv
Auszug aus der Manpage
  -ss  position (input/output)
  -i   input_file
  -to  position (input/output)
  -c   [:stream_specifier] codec (input/output,per-stream)
soll heißen hier wird der codec des audio stream und des video stream kopiert.
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)