debian
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| debian [2025-09-17 19:17:06] – david | debian [2026-02-13 01:37:41] (aktuell) – [Secure Boot & DKMS] david | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Debian ====== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | //Debian// ist eine Linux-Distribution, | ||
| + | //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 // | ||
| + | Ab Version 7.0 //Wheezy// wird auch **GNU Hurd** unterstützt werden. | ||
| + | |||
| + | Weil die meisten grundlegenden Systemwerkzeuge vom // | ||
| + | |||
| + | Linuxdistributionen, | ||
| + | - [[Ubuntu]] | ||
| + | - [[Linux Mint]] | ||
| + | - [[UGR - Ubuntu GNOME Remix]] | ||
| + | - [[Elive]] | ||
| + | - [[Bodhi Linux]] | ||
| + | |||
| + | der alternative WindowManager: | ||
| + | * [[Enlightenment - die Alternative]] | ||
| + | |||
| + | > dpkg-reconfigure locales | ||
| + | |||
| + | |||
| + | ===== APT ===== | ||
| + | |||
| + | **siehe: [[apt]]** | ||
| + | |||
| + | |||
| + | ===== Allgemeines ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * **[[https:// | ||
| + | * __Debian 12.4__ | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | 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 '' | ||
| + | |||
| + | ISO-Image auf einen USB-Stick (''/ | ||
| + | > dd if=/ | ||
| + | > 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=/ | ||
| + | |||
| + | //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: | ||
| + | > echo "set mouse-=a" | ||
| + | > echo -e ": | ||
| + | |||
| + | |||
| + | ==== Nvidia-Treiber ==== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | === Debian 12 === | ||
| + | |||
| + | * siehe [[linux_paketmanager# | ||
| + | |||
| + | # linux kernel image & headers | ||
| + | > apt install linux-image-generic linux-headers-generic | ||
| + | | ||
| + | # driver, video acceleration, | ||
| + | > 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, | ||
| + | > 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 ' | ||
| + | | ||
| + | > vim / | ||
| + | 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 [[debian# | ||
| + | |||
| + | |||
| + | === Debian 11 === | ||
| + | |||
| + | //Der " | ||
| + | |||
| + | > lsb_release -cs | ||
| + | bullseye | ||
| + | | ||
| + | > vi / | ||
| + | deb http:// | ||
| + | #deb-src http:// | ||
| + | # | ||
| + | deb http:// | ||
| + | #deb-src http:// | ||
| + | |||
| + | > 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 ==== | ||
| + | |||
| + | * Seit Dez. 2022 gibt es keine Microsoft Teams Desktop App für Linux mehr, als Alternative muss man die Web App nutzen (auch als PWA verfügbar, zumindest in Chromium Browsern): | ||
| + | * Neue Domain: [[https:// | ||
| + | * Work & School: [[https:// | ||
| + | * Personal: [[https:// | ||
| + | |||
| + | |||
| + | ===== Secure Boot & DKMS ===== | ||
| + | |||
| + | * Detaillierte Infos: [[https:// | ||
| + | |||
| + | 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 / | ||
| + | |||
| + | Den Pfad zum vorhandenen oder erstellten MOK in DKMS überprüfen und ggf. konfigurieren (default: ''/ | ||
| + | |||
| + | > vim / | ||
| + | mok_signing_key=/ | ||
| + | mok_certificate=/ | ||
| + | |||
| + | Falls kernel module (z.b. nvidia oder zfs) installiert sind, diese neubauen & neuinstallieren, | ||
| + | |||
| + | > dkms status | ||
| + | > modinfo nvidia-current | ||
| + | > dkms build nvidia-current/ | ||
| + | > dkms install nvidia-current/ | ||
| + | > 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 / | ||
| + | # after reboot check if it was successful | ||
| + | > mokutil --test-key / | ||
| + | # 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 '' | ||
| + | * 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 ''/ | ||
| + | * grub kann man folgendermaßen neuinstallieren: | ||
| + | |||
| + | efibootmgr: | ||
| + | <code bash> | ||
| + | # 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 / | ||
| + | |||
| + | # 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 ''/ | ||
| + | * efi partition finden: output von '' | ||
| + | * efi bootloader finden (shim ist relevant für secure boot): output von '' | ||
| + | * daraus ergibt sich der efi pfad: '' | ||
| + | * uefi nutzt backslashes ('' | ||
| + | * der pfad ist relativ zur efi partition, daher wird **nicht** die partition (''/ | ||
| + | |||
| + | |||
| + | ===== Taktfrequenz per Kommandozeile verstellen ===== | ||
| + | |||
| + | minimale Taktfrequenz per Kommandozeile einstellen: | ||
| + | # cpufreq-set -f $(awk ' | ||
| + | |||
| + | maximale Taktfrequenz per Kommandozeile einstellen: | ||
| + | # cpufreq-set -f $(awk ' | ||
| + | |||
| + | |||
| + | ===== IBM Informix DB ===== | ||
| + | |||
| + | Hier wird beispielhaft beschrieben, | ||
| + | |||
| + | * [[Installationsanleitung für Informix-Server auf Ubuntu-Basis]] | ||
| + | |||
| + | |||
| + | ===== Netzwerkkonfiguration ===== | ||
| + | |||
| + | # vi / | ||
| + | |||
| + | 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 / | ||
| + | |||
| + | |||
| + | ==== laut Debian-Handbuch ==== | ||
| + | |||
| + | **[[https:// | ||
| + | |||
| + | > cat / | ||
| + | |||
| + | |||
| + | === DHCP === | ||
| + | |||
| + | <file bash / | ||
| + | [Match] | ||
| + | Name=en* | ||
| + | |||
| + | [Network] | ||
| + | DHCP=yes | ||
| + | </ | ||
| + | |||
| + | so funktioniert es bei mir: | ||
| + | <file bash / | ||
| + | # 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 === | ||
| + | |||
| + | <file bash / | ||
| + | [Match] | ||
| + | Name=en* | ||
| + | |||
| + | [Network] | ||
| + | Address=192.168.1.251/ | ||
| + | Gateway=192.168.1.254 | ||
| + | </ | ||
| + | |||
| + | <file bash / | ||
| + | domain fritz.box | ||
| + | nameserver 192.168.1.254 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Installation automatisieren ===== | ||
| + | |||
| + | FIXME | ||
| + | |||
| + | |||
| + | ==== Preseed-Datei ==== | ||
| + | |||
| + | //Mit dieser Datei kann man die Fragen schon im Vorfeld beantworten, | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | === 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, | ||
| + | * 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 **'' | ||
| + | * from the network; preseeding then only happens after the network is (automatically) configured; the relevant boot parameter is then **'' | ||
| + | |||
| + | Auf den ersten Blick sieht es so aus, als bestehe die interessanteste Lösung darin, die Preseed-Datei in die initrd einzufügen; | ||
| + | |||
| + | |||
| + | === 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.: **'' | ||
| + | |||
| + | * 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:// | ||
| + | <file c preseed.cfg> | ||
| + | ### Allgemeines | ||
| + | # Verhindert weniger wichtige Nachfragen | ||
| + | # https:// | ||
| + | # https:// | ||
| + | d-i debconf/ | ||
| + | # Deaktiviert die Meldung am Ende, dass die Installation abgeschlossen wurde und man neu starten kann | ||
| + | d-i finish-install/ | ||
| + | |||
| + | # Gibt an, ob Infos zum Nutzungsverhalten (installierte/ | ||
| + | popularity-contest popularity-contest/ | ||
| + | # Proprietaere Firmware laden (falls es zu Hardwareproblemen kommt) | ||
| + | #d-i hw-detect/ | ||
| + | |||
| + | ### Lokalisierung | ||
| + | d-i debian-installer/ | ||
| + | # Keymap setzen reicht nicht, layout/ | ||
| + | d-i keyboard-configuration/ | ||
| + | d-i keyboard-configuration/ | ||
| + | |||
| + | d-i clock-setup/ | ||
| + | d-i tzdata/ | ||
| + | tzdata/ | ||
| + | d-i time/zone string Europe/ | ||
| + | |||
| + | ### Partitionierung | ||
| + | # Grub wird automatisch auf den MBR installiert, | ||
| + | d-i grub-installer/ | ||
| + | # MBR installation ebenfalls wenn andere OS vorhanden sind (koennte dazu fuehren, dass diese nicht mehr booten) | ||
| + | #d-i grub-installer/ | ||
| + | # Verhindert, dass grub alternativ fragt, wo er installiert werden soll | ||
| + | #d-i grub-installer/ | ||
| + | # Fuer die vollautomatische Partitionierung (falls unten aktiv) - Beispiel Lenovo Tiny mit NVMe-SSD | ||
| + | # VirtualBox -> /dev/sda, KVM -> /dev/vda | ||
| + | #d-i partman-auto/ | ||
| + | |||
| + | # Fuer lvm ' | ||
| + | # Siehe https:// | ||
| + | d-i partman-auto/ | ||
| + | # Alle Daten auf einer Partition (mit ' | ||
| + | d-i partman-auto/ | ||
| + | |||
| + | # Komplett automatisiert ohne Bestaetigung fuer alle Partitionierungsmethoden (Mit Vorsicht verwenden!) | ||
| + | # d-i partman/ | ||
| + | # d-i partman/ | ||
| + | # d-i partman/ | ||
| + | # d-i partman-partitioning/ | ||
| + | # d-i partman-md/ | ||
| + | # d-i partman-md/ | ||
| + | # d-i lvmcfg/ | ||
| + | # d-i partman-lvm/ | ||
| + | # d-i partman-lvm/ | ||
| + | # d-i partman-lvm/ | ||
| + | # d-i partman-lvm/ | ||
| + | |||
| + | ### Software | ||
| + | d-i mirror/ | ||
| + | d-i mirror/ | ||
| + | d-i mirror/ | ||
| + | d-i mirror/ | ||
| + | |||
| + | # Aktiviert Spiegelserver abseits der Sicherheitsupdates per Netzwerk statt Image | ||
| + | d-i apt-setup/ | ||
| + | d-i apt-setup/ | ||
| + | # Aktiviert offizielle, aber unfreie Repositorys: | ||
| + | #d-i apt-setup/ | ||
| + | #d-i apt-setup/ | ||
| + | |||
| + | # Vorinstallierte Software | ||
| + | # Programmgruppe kann festlegen, ob z.B. Headless oder eine bestimmte Desktopumgebung (xfce-desktop, | ||
| + | tasksel tasksel/ | ||
| + | #tasksel tasksel/ | ||
| + | |||
| + | d-i pkgsel/ | ||
| + | d-i pkgsel/ | ||
| + | # Alle Pakete automatisch aktualisieren | ||
| + | d-i pkgsel/ | ||
| + | d-i pkgsel/ | ||
| + | |||
| + | # Stdout Weiterleitungen funktionieren in in-target nicht ohne --pass-stdout | ||
| + | # Siehe https:// | ||
| + | d-i preseed/ | ||
| + | in-target sudo -u u-labs bash -c "cd / | ||
| + | in-target --pass-stdout bash -c "echo ' | ||
| + | in-target update-alternatives --set editor / | ||
| + | |||
| + | ### Benutzerkonten | ||
| + | d-i passwd/ | ||
| + | d-i passwd/ | ||
| + | d-i passwd/ | ||
| + | d-i passwd/ | ||
| + | d-i passwd/ | ||
| + | # root | ||
| + | d-i passwd/ | ||
| + | d-i passwd/ | ||
| + | |||
| + | # Fuer Testsysteme kann die Policy strikter PWs abgeschaltet werden | ||
| + | d-i user-setup/ | ||
| + | d-i user-setup/ | ||
| + | |||
| + | ### Netzwerk | ||
| + | d-i netcfg/ | ||
| + | d-i netcfg/ | ||
| + | d-i netcfg/ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== FAI ==== | ||
| + | |||
| + | //**F**ully **A**utomatic **I**nstaller// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | 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. | ||
| + | |||
