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
siehe: apt
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
### 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
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)
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
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
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:
Wenn der booteintrag nicht mehr funktioniert (z.b. uefi versucht grub direkt zu starten, also kein shim chainloading):
efibootmgr neu erstellen (siehe unten)Wichtig:
/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 kanngrub-install --recheck --efi-directory=/boot/efiefibootmgr:
# 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.
mount | grep -Ei 'efi|vfat' ist z.b. /dev/nvme0n1p1 on /boot/efi, d.h. die efi partition ist auf /boot/efi gemountetfind /boot/efi -type f -iname '*.efi' ist z.b. /boot/efi/EFI/debian/shimx64.efi\EFI\debian\shimx64.efi\) als pfadtrennzeichen/dev/nvme0n1p1), sondern die disk (/dev/nvme0n1) angegebenminimale 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)
Hier wird beispielhaft beschrieben, wie man eine IBM Informix DB auf einem Ubuntu 10.04 installiert:
# 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
Moderne Netzwerkkonfiguration ohne grafische Oberfläche
> cat /run/network/ifstate
[Match] Name=en* [Network] DHCP=yes
so funktioniert es bei mir:
# 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
[Match] Name=en* [Network] Address=192.168.1.251/24 Gateway=192.168.1.254
domain fritz.box nameserver 192.168.1.254
Mit dieser Datei kann man die Fragen schon im Vorfeld beantworten, die das Installationsprogramm stellt.
Das Debian Administrationshandbuch - 12.3. Automatische Installation
Es gibt mehrere Orte, an denen das Installationsprogramm eine Preseed-Datei erhalten kann:
preseed.cfg genannt und im Hauptverzeichnis von initrd gespeichert werden.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).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 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):
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:
### 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
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.