Benutzer-Werkzeuge

Webseiten-Werkzeuge


debian

Debian

LMDE vs Debian | DistroWars

Debian ist eine Linux-Distribution, die seit Version 6.0 ausschließlich Freie Software enthält. Debian basiert seit der 1996 veröffentlichten ersten stabilen Version 1.1 Buzz bis zur Version 5.0.8 Lenny auf dem Linux-Kernel. Seit Version 6.0 Squeeze, wird auch ein FreeBSD-Kernel unterstützt. Ab Version 7.0 Wheezy wird auch GNU Hurd unterstützt werden.

Weil die meisten grundlegenden Systemwerkzeuge vom GNU-Projekt stammen, wird auch von Debian GNU/Linux gesprochen.

Linuxdistributionen, die auf Debian GNU/Linux basieren:

der alternative WindowManager:

> dpkg-reconfigure locales

APT

siehe: apt

Allgemeines

Installation

Die Installation von Firmware-Paketen erfordert höchstwahrscheinlich die Aktivierung des non-free-Abschnitts des Debian-Archivs. In Debian GNU/Linux 11.0 erledigt der Befehl isenkram-autoinstall-firmware dies automatisch für Sie, indem eine entsprechende Datei (/etc/apt/sources.list.d/isenkram-autoinstall-firmware.list) im System angelegt wird, die auf einen generischen Spiegelserver zeigt.

ISO-Image auf einen USB-Stick (/dev/sdg) schreiben:

> dd if=/dev/zero of=/dev/sdg bs=1M count=1024
> parted /dev/sdg
(parted) mklabel gpt
(parted) u %
(parted) mkpart primary 0% 100%
(parted) p
(parted) q

> dd if=debian-11.5.0-amd64-DVD-1.iso of=/dev/sdg1

ich brauche beispielsweise diese hier:

> apt install net-tools
> apt install vim screen mc vlc mplayer ffmpeg mkvtoolnix autofs cifs-utils sysstat smbclient flatpak gnome-software-plugin-flatpak gir1.2-gtop-2.0

Pakete die ich immer als erstes installiere und konfiguriere

### Debian 11 (11.5)
> apt install xterm mc screen vim zfsutils-linux autofs smbclient cifs-utils openvpn net-tools bridge-utils openvpn-systemd-resolved command-not-found chromium chromium-l10n thunderbird thunderbird-l10n-de vlc mplayer icewm software-properties-common apt-transport-https wget ca-certificates gnupg2 curl gir1.2-gtop-2.0 nvidia-detect nvidia-driver

> echo "let g:skip_defaults_vim = 1" > ~/.vimrc
> echo "set mouse-=a" > ~/.vimrc
> echo -e ":colors delek\n:setl noai nocin nosi inde=\nfiletype indent off\n" > ~/.vimrc

Nvidia-Treiber

Debian 12

  • siehe apt_quellen für das hinzufügen von non-free repos (empfohlen: main contrib non-free-firmware non-free)
# linux kernel image & headers
> apt install linux-image-generic linux-headers-generic

# driver, video acceleration, vulkan
> apt install firmware-misc-nonfree nvidia-detect nvidia-driver nvidia-settings nvidia-smi nvidia-suspend-common nvidia-vaapi-driver nvidia-vdpau-driver nvidia-vulkan-common

# driver, video acceleration, vulkan, cuda
> apt install firmware-misc-nonfree nvidia-detect nvidia-driver nvidia-settings nvidia-smi nvidia-suspend-common nvidia-vaapi-driver nvidia-vdpau-driver nvidia-vulkan-common nvidia-cuda-dev nvidia-cuda-toolkit nvidia-cudnn
# for wayland
> echo 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX nvidia-drm.modeset=1"' > /etc/default/grub.d/nvidia-modeset.cfg

> vim /etc/modprobe.d/nvidia-options.conf
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia-current NVreg_PreserveVideoMemoryAllocations=1

> systemctl enable nvidia-hibernate.service nvidia-resume.service nvidia-suspend.service

> update-initramfs -k all -u
> update-grub

Danach rebooten (aber vorher prüfen, ob die schritte in secure_boot_dkms befolgt wurden, falls secure boot genutzt werden soll)

Debian 11

Der "nouveau"-Treiber ist Schrott! Der bringt mein System (mit einer "GeForce GTX 1650") zum stehen bzw. zum Absturz!

> lsb_release -cs
bullseye

> vi /etc/apt/sources.list.d/nvidia.list
deb http://deb.debian.org/debian/ bullseye-updates main non-free contrib
#deb-src http://deb.debian.org/debian/ bullseye-updates main non-free contrib
#
deb http://deb.debian.org/debian/ bullseye main non-free contrib
#deb-src http://deb.debian.org/debian/ bullseye main non-free contrib
> apt update
> apt install nvidia-detect nvidia-driver
> nvidia-detect
...
It is recommended to install the
    nvidia-driver
package.
> apt install nvidia-driver
> reboot
> nvidia-settings

Microsoft Teams

Secure Boot & DKMS

Zuerst prüfen, ob bereits ein bestehender MOK (Machine Owner Key) vorhanden ist, falls nicht siehe den verlinkten debian wiki eintrag, da wird erklärt wie man einen MOK erstellt

> ls -aFhl /var/lib/dkms /var/lib/shim-signed/mok

Den Pfad zum vorhandenen oder erstellten MOK in DKMS überprüfen und ggf. konfigurieren (default: /var/lib/dkms)

> vim /etc/dkms/framework.conf
mok_signing_key=/var/lib/dkms/mok.key
mok_certificate=/var/lib/dkms/mok.pub

Falls kernel module (z.b. nvidia oder zfs) installiert sind, diese neubauen & neuinstallieren, initramfs neubauen und grub config aktualisieren

> dkms status
> modinfo nvidia-current
> dkms build nvidia-current/525.147.05 --force
> dkms install nvidia-current/525.147.05 --force
> update-initramfs -k all -u && update-grub

MOK import anstoßen, neustarten, enrollment durchführen und testen ob es erfolgreich war (Einmalpasswort muss vergeben werden und nach dem reboot während des imports bestätigt werden)

# has to be DER format
> mokutil --import /var/lib/dkms/mok.pub
# after reboot check if it was successful
> mokutil --test-key /var/lib/dkms/mok.pub
# you can also check if secure boot is enabled
> mokutil --sb-state

Reparatur

Unter anderem bei einem uefi firmware update kann es passieren, dass der MOK nicht mehr im uefi hinterlegt ist, da es dabei oftmals zurückgesetzt wird.

Wenn der Key im uefi fehlt:

  • secure boot im uefi deaktivieren
  • MOK import (siehe oben) ausführen
  • secure boot im uefi wieder aktivieren

Wenn der booteintrag nicht mehr funktioniert (z.b. uefi versucht grub direkt zu starten, also kein shim chainloading):

  • secure boot im uefi deaktivieren
  • booteinträge mit efibootmgr neu erstellen (siehe unten)
  • secure boot im uefi wieder aktivieren

Wichtig:

  • es kann sein, dass beide schritte notwendig sind, diese können auch direkt zusammen ohne reboot dazwischen ausgeführt werden
  • allerdings liegt es in den allermeisten fällen nur am MOK, denn grub legt bei seiner installation die datei /boot/efi/EFI/debian/BOOTX64.CSV an (angenommen die efi partition ist unter /boot/efi gemounted), in dieser wird shimx64.efi referenziert, wodurch das uefi beim scan aller efi partitionen den booteintrag einfach wieder automatisch anlegen kann
    • grub kann man folgendermaßen neuinstallieren: grub-install --recheck --efi-directory=/boot/efi

efibootmgr:

# read man page
man efibootmgr
 
# show current uefi boot entries
sudo efibootmgr
 
# delete the non functional entry (if it exists)
# (note the correct boot number from above command to avoid accidentally deleting the wrong one, this example assumes windows is 0 and linux is 1)
sudo efibootmgr --bootnum 1 --delete-bootnum
 
# create boot entry for shim which chainloads grub for secure boot support with microsoft keys
sudo efibootmgr --create --disk /dev/nvme0n1 --loader '\EFI\debian\shimx64.efi' --label 'debian'
 
# optional: update boot order
sudo efibootmgr --bootorder 1,0
 
# optional: set boot next (this will temporarily overwrite the bootorder and boot the specified entry only on the next boot)
sudo efibootmgr --bootnext 1
 
sudo efibootmgr

Hier wird angenommen, dass sich die efi partition auf der disk /dev/nvme0n1 befindet.

  • efi partition finden: output von mount | grep -Ei 'efi|vfat' ist z.b. /dev/nvme0n1p1 on /boot/efi, d.h. die efi partition ist auf /boot/efi gemountet
  • efi bootloader finden (shim ist relevant für secure boot): output von find /boot/efi -type f -iname '*.efi' ist z.b. /boot/efi/EFI/debian/shimx64.efi
  • daraus ergibt sich der efi pfad: \EFI\debian\shimx64.efi
    • uefi nutzt backslashes (\) als pfadtrennzeichen
    • der pfad ist relativ zur efi partition, daher wird nicht die partition (/dev/nvme0n1p1), sondern die disk (/dev/nvme0n1) angegeben

Taktfrequenz per Kommandozeile verstellen

minimale Taktfrequenz per Kommandozeile einstellen:

# cpufreq-set -f $(awk '{print $NF}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)

maximale Taktfrequenz per Kommandozeile einstellen:

# cpufreq-set -f $(awk '{print $1}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)

IBM Informix DB

Hier wird beispielhaft beschrieben, wie man eine IBM Informix DB auf einem Ubuntu 10.04 installiert:

Netzwerkkonfiguration

# vi /etc/network/interfaces

bei dynamischer IP-Zuweisung wird nichts spezielles zur Netzwerkkarte in die Konfigurationsdatei geschrieben:

# The loopback network interface
auto lo
iface lo inet loopback

bei statischer IP-Konfiguration wird alles in die Konfigurationsdatei geschrieben:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.251
        netmask 255.255.255.0
        gateway 192.168.1.254
        # dns-* options are implemented by the resolv.conf package, if installed
        dns-nameservers 192.168.1.4

bei einer WLAN-Konfiguration wird dem entsprechenden Netzwerkgerät die WPA-Supplicant-Konfigurationsdatei übergeben:

# The loopback network interface
auto lo
iface lo inet loopback

# W-LAN
auto wlan0
iface wlan0 inet dhcp
      wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

laut Debian-Handbuch

DHCP

/etc/systemd/network/dhcp.network
[Match]
Name=en*
 
[Network]
DHCP=yes

so funktioniert es bei mir:

/etc/systemd/network/default.network
# systemctl --version -> systemd 252
[Match]
Name=eth0 enp0s*
 
[Network]
DHCP=true
DHCPServer=false
IPv6LinkLocalAddressGenerationMode=stable-privacy
LLMNR=false
MulticastDNS=false
DNSOverTLS=false
DNSSEC=false
IPv6PrivacyExtensions=false
IPv6AcceptRA=true
 
[Route]
Gateway=_dhcp4
Gateway=_ipv6ra
GatewayOnLink=true
 
[DHCPv4]
SendHostname=true
Anonymize=true
 
[DHCPv6]
RapidCommit=true
 
[IPv6AcceptRA]
Token=prefixstable

statisch

/etc/systemd/network/static.network
[Match]
Name=en*
 
[Network]
Address=192.168.1.251/24
Gateway=192.168.1.254
/etc/resolv.conf
domain fritz.box
nameserver 192.168.1.254

Installation automatisieren

FIXME

Preseed-Datei

Mit dieser Datei kann man die Fragen schon im Vorfeld beantworten, die das Installationsprogramm stellt.

Das Debian Administrationshandbuch - 12.3. Automatische Installation

Eine Preseed-Datei verwenden

Es gibt mehrere Orte, an denen das Installationsprogramm eine Preseed-Datei erhalten kann:

  • in der initrd, die zum Hochfahren des Rechners verwendet wird; in diesem Fall geschieht das Preseeding ganz zu Anfang der Installation, und alle Fragen können vermieden werden. Die Datei muss nur preseed.cfg genannt und im Hauptverzeichnis von initrd gespeichert werden.
  • auf den Boot-Medien (CD oder USB-Stick); das Preseeding geschieht dann, sobald das Medium eingehängt ist, das heißt, gleich nach den Fragen nach der Sprache und der Tastaturbelegung. Der Boot-Parameter preseed/file kann benutzt werden, um den Ort der Preseed-Datei anzugeben (zum Beispiel /cdrom/preseed.cfg, wenn die Installation von einer CD-ROM aus erfolgt, oder /hd-media/preseed.cfg im Falle eines USB-Sticks).
  • from the network; preseeding then only happens after the network is (automatically) configured; the relevant boot parameter is then preseed/url=http://server/preseed.cfg (HTTPS, FTPS, SFTP, etc. are not supported).

Auf den ersten Blick sieht es so aus, als bestehe die interessanteste Lösung darin, die Preseed-Datei in die initrd einzufügen; jedoch wird dies in der Praxis selten genutzt, da es recht kompliziert ist, eine Installations-initrd zu erstellen. Die anderen beiden Lösungen finden sich weit häufiger, vor allem da Boot-Parameter einen weiteren Weg zur Bereitstellung von Antworten auf die ersten Fragen des Installationsprozesses darstellen. Um sich die Mühe zu sparen, diese Boot-Parameter bei jeder Installation von Hand einzugeben, besteht der übliche Weg darin, sie in der Konfiguration für isolinux (im Falle der CD-ROM) oder für syslinux (beim USB-Stick) abzuspeichern.

Eine Preseed-Datei erstellen

Eine Preseed-Datei ist eine reine Textdatei, in der jede Zeile die Antwort auf eine Debconf-Frage enthält. Eine Zeile ist über vier Felder aufgeteilt, die durch Leerraum (Leerzeichen oder Tabulatoren) getrennt sind (z.B.: d-i mirror/suite string stable):

  • das erste Feld ist der „Besitzer“ der Frage; „d-i“ wird für Fragen verwendet, für die das Installationsprogramm zuständig ist, es kann aber auch ein Paketname sein für Fragen, die von Debian-Paketen kommen;
  • das zweite Feld ist eine Kennung für die Frage (der Vorlagenname);
  • das dritte die Art der Frage;
  • das vierte und letzte Feld enthält den Eingabewert für die Antwort. Man beachte, dass es vom dritten Feld durch ein einzelnes Leerzeichen getrennt sein muss; gibt es weitere, so werden alle folgenden Leerzeichen als Teil des Eingabewerts betrachtet.

Auf https://u-labs.de/portal/debian-automatisiert-installieren-einrichten-so-funktioniert-preseed-voreinstellung-einstieg-fuer-anfaenger/ findet man ein Beispiel für eine preseed.cfg-Datei:

preseed.cfg
### Allgemeines
# Verhindert weniger wichtige Nachfragen
# https://www.debian.org/releases/sarge/s390/ch05s02.html.en
# https://preseed.debian.net/debian-preseed/bullseye/amd64-main-full.txt
d-i debconf/priority string critical
# Deaktiviert die Meldung am Ende, dass die Installation abgeschlossen wurde und man neu starten kann
d-i finish-install/reboot_in_progress note
 
# Gibt an, ob Infos zum Nutzungsverhalten (installierte/verwendete Software) an Debian gesendet werden
popularity-contest popularity-contest/participate boolean false
# Proprietaere Firmware laden (falls es zu Hardwareproblemen kommt)
#d-i hw-detect/load_firmware boolean true
 
### Lokalisierung
d-i debian-installer/locale string de_DE
# Keymap setzen reicht nicht, layout/variantcode hilft ebenfalls nicht: https://groups.google.com/g/linux.debian.bugs.dist/c/XYcrRjLwpQM
d-i keyboard-configuration/variant select Deutschland
d-i keyboard-configuration/xkb-keymap select de
 
d-i clock-setup/utc boolean true
d-i tzdata/Areas select Europe
tzdata/Zones/Europe select Berlin
d-i time/zone string Europe/Berlin
 
### Partitionierung
# Grub wird automatisch auf den MBR installiert, wenn kein anderes OS vorhanden ist (sicher)
d-i grub-installer/only_debian boolean true
# MBR installation ebenfalls wenn andere OS vorhanden sind (koennte dazu fuehren, dass diese nicht mehr booten)
#d-i grub-installer/with_other_os boolean true
# Verhindert, dass grub alternativ fragt, wo er installiert werden soll
#d-i grub-installer/bootdev string /dev/sda
# Fuer die vollautomatische Partitionierung (falls unten aktiv) - Beispiel Lenovo Tiny mit NVMe-SSD
# VirtualBox -> /dev/sda, KVM -> /dev/vda
#d-i partman-auto/disk string /dev/nvme0n1
 
# Fuer lvm 'lvmcfg/vgdelete_confirm', 'partman-lvm/confirm' und 'partman-lvm/confirm_nooverwrite' setzen
# Siehe https://www.debian.org/releases/stable/s390x/apbs04.de.html Abschnitt B.4.7.1.
d-i partman-auto/method string regular
# Alle Daten auf einer Partition (mit 'home' wird das Home-Verzeichnis auf eine eigene Partition gelegt)
d-i partman-auto/choose_recipe select atomic
 
# Komplett automatisiert ohne Bestaetigung fuer alle Partitionierungsmethoden (Mit Vorsicht verwenden!)
# d-i partman/choose_partition select finish
# d-i partman/confirm boolean true
# d-i partman/confirm_nooverwrite boolean true
# d-i partman-partitioning/confirm_write_new_label boolean true
# d-i partman-md/confirm boolean true
# d-i partman-md/deleteverify boolean true
# d-i lvmcfg/vgdelete_confirm boolean true
# d-i partman-lvm/vgdelete_confirm boolean true
# d-i partman-lvm/device_remove_lvm boolean true
# d-i partman-lvm/confirm boolean true
# d-i partman-lvm/confirm_nooverwrite boolean true
 
### Software
d-i mirror/country string manual
d-i mirror/http/hostname string ftp2.de.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
 
# Aktiviert Spiegelserver abseits der Sicherheitsupdates per Netzwerk statt Image
d-i apt-setup/use_mirror boolean true
d-i apt-setup/disable-cdrom-entries boolean true
# Aktiviert offizielle, aber unfreie Repositorys: https://wiki.debian.org/SourcesList
#d-i apt-setup/non-free boolean true
#d-i apt-setup/contrib boolean true
 
# Vorinstallierte Software
# Programmgruppe kann festlegen, ob z.B. Headless oder eine bestimmte Desktopumgebung (xfce-desktop, kde-desktop usw) vorinstalliert werden soll (siehe B.4.10)
tasksel tasksel/first multiselect standard, ssh-server
#tasksel tasksel/first multiselect standard, gnome-desktop
 
d-i pkgsel/install-language-support boolean true
d-i pkgsel/update-policy select Install security updates automatically
# Alle Pakete automatisch aktualisieren
d-i pkgsel/upgrade select full-upgrade
d-i pkgsel/include string openssh-server git vim htop
 
# Stdout Weiterleitungen funktionieren in in-target nicht ohne --pass-stdout
# Siehe https://askubuntu.com/a/1248987/650986 und https://serverfault.com/questions/390122/how-do-i-pipe-commands-together-in-a-debian-preseed-file
d-i preseed/late_command string \
    in-target sudo -u u-labs bash -c "cd /home/u-labs/; mkdir .fzf; cd .fzf; git clone https://github.com/junegunn/fzf.git .; bash ./install --all"; \
    in-target --pass-stdout bash -c "echo 'u-labs ALL=NOPASSWD:ALL' > /etc/sudoers.d/u-labs"; \
    in-target update-alternatives --set editor /usr/bin/vim.basic
 
### Benutzerkonten
d-i passwd/username string u-labs
d-i passwd/user-fullname string u-labs
d-i passwd/user-uid string 1000
d-i passwd/user-password password u-labs
d-i passwd/user-password-again password u-labs
# root
d-i passwd/root-password password u-labs
d-i passwd/root-password-again password u-labs
 
# Fuer Testsysteme kann die Policy strikter PWs abgeschaltet werden
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
 
### Netzwerk
d-i netcfg/enable boolean true
d-i netcfg/choose_interface select auto
d-i netcfg/hostname string vdebian01

FAI

Fully Automatic Installer

https://fai-project.org/

Fully Automatic Installer ist vielleicht das älteste automatische Einrichtungssystem für Debian, wodurch sich sein Status als Referenz erklärt. Seine sehr flexible Art ist jedoch nur ein schwacher Ausgleich für die mit ihm einhergehende Kompliziertheit.

/home/http/wiki/data/pages/debian.txt · Zuletzt geändert: von david