Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Debian
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
- Debian 12.4
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
Client für Microsoft Teams installieren
-
- Unter Linux gibt es seit Dez. 2022 kein natives Paket für MS-Teams mehr.
- Jetzt kann man MS-Teams unter Linux nur noch per Web-Seite nutzen.
Nvidia-Treiber installieren
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 # reboot or continue with secure boot setup and then reboot
Secure Boot & DKMS
detaillierte Infos:https://wiki.debian.org/SecureBoot
zuerst prüfen, ob bereits ein bestehender MOK (Machine Owner Key) vorhanden ist, falls nicht siehe Debian Wiki wie und wo man einen MOK erstellt
> ls -aFhl /var/lib/dkms /var/lib/shim-signed/mok
Den Pfad zum vorhandenen oder erstellten MOK in DKMS 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
nvidia-kernel-dkms neubauen, neuinstallieren und initramfs neubauen
> 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 importieren, neustarten und testen ob erfolgreich (passwort muss vergeben werden und beim reboot 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
Secure Boot & DKMS reparieren
Bei einem UEFI Update oder auf andere Weise kann es passieren, dass der MOK Key nicht mehr im UEFI hinterlegt ist und der Booteintrag für SHIM fehlt. Wenn nur der Key im UEFI fehlt, sollte MOK Manager von SHIM automatisch gestartet werden, damit der Key neu enrolled werden kann, falls MOK Manager den Key nicht mehr kennt, einfach den Anweisungen von oben folgen (mok mit mokutil importieren). Wenn der SHIM Booteintrag fehlt, kann dieser einfach wieder neu angelegt werden, wenn alle Booteinträge fehlen, muss mit einem Linux USB Recovery image nachgeholfen werden und zur not grub o.ä. neu installiert werden (letzteres sollte aber normalerweise nicht vorkommen, da uefi die efi partition finden sollte und so zumindest den nicht secure boot fähigen booteintrag anlegt).
Fall: Booteintrag für shim fehlt, daher wird versucht grub direkt zu booten und Secure Boot verhindert dies.
Lösung:
- Secure Boot deaktivieren
- boot
- den schritt "MOK importieren" (siehe secure boot setup oben) ausführen (falls noch nicht erledigt, seitdem secure boot nicht mehr funktioniert)
- booteinträge mit
efibootmgrneu erstellen (siehe unten) - reboot
- MOK Manager sollte automatisch starten und key enroll ermöglichen
- Secure Boot aktivieren
# show current uefi boot entries efibootmgr # optional: for demonstration purposes here we delete the existing entry and then create both entries ourself (with the advantage that we can name them with proper labels) # if it exists delete the entry for grub that is automatically created by uefi # (note the correct boot number from above command to avoid accidentally deleting the wrong one, in this example windows has 0 and linux has 1) efibootmgr --bootnum 1 --delete-bootnum # create boot entry for shim which chainloads grub (secure boot) efibootmgr --create --disk /dev/nvme0n1 --loader '\EFI\debian\shimx64.efi' --label 'debian - shim' # optional: recreate default boot entry for grub (non secure boot) efibootmgr --create --disk /dev/nvme0n1 --loader '\EFI\debian\grubx64.efi' --label 'debian - grub' # optional: update boot order efibootmgr --bootorder 1,2,0 # optional: set boot next (this will temporarily overwrite the bootorder and boot the specified entry only on the next boot) efibootmgr --bootnext 1 efibootmgr
Hier wird angenommen, dass sich die EFI Partition auf der disk /dev/nvme0n1 befindet.
Bezüglich des Pfads:
- 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/efigemountet - efi bootloader finden: 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(relativ zum mountpoint der efi partition, daher wird die partition im kommando nicht angegeben, also/dev/nvme0n1und nicht/dev/nvme0n1p1) - Wichtig: UEFI nutzt backslash (
\) als Pfadtrennzeichen
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
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
Moderne Netzwerkkonfiguration ohne grafische Oberfläche
> cat /run/network/ifstate
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
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.cfggenannt 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/filekann 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.cfgim 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
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.
