openSUSE Tumbleweed - Installation ohne Agama und YaST

Mit Beginn 2026 wird Agama auch in openSUSE Tumbleweed Einzug halten.

Auf der Suche nach einer Alternative, die es mir auch zukünftigt ermöglicht bereits bei der Installation eine individuelle Paketauswahl vorzunehmen, war ich auf diesen Beitrag aus dem openSUSE Wiki gestoßen. Er hat meine Erwartungen allerdings nicht ganz erfüllt, daher habe ich ihn etwas überarbeitet und erweitert.

Die folgende Beschreibung geht davon aus, dass

  • openSUSE Tumbleweed auf dem Datenträger /dev/vda installiert wird
  • openSUSE Tumbleweed im UEFI-Modus ohne secureboot gestartet wird
  • der Datenträger /dev/vda mit einem GPT-Partitionsschema versehen wird
  • auf den Datenträger /dev/vda eine Efi System Partition (ESP) und eine “/”-Partition aber keine SWAP-Partition angelegt werden
  • die EFI Systempartition (ESP) den Namen ESP erhält, mit einem FAT32-Dateisystem formatiert und das Dateisystem mit dem LABEL ESP (max. 11 Zeichen !!!) versehen wird.
  • Die “/”-Partition den Namen LINUX erhält, mit einem ext4-Dateisystem formatiert und das Dateisystem mit dem LABEL LINUX versehen wird.
  • GRUB2-EFI als Bootloader verwendet wird

Wenn von den oben genannten Voraussetzungen abgewichen wird, so muss die unten beschriebene Vorgehensweise entsprechend angepasst werden.

Dabei ist unter anderem folgendes zu beachten:

  • secureboot erfordert ggf. die Aufnahme von Schlüsseln in das UEFI
  • Bootloader wie GRUB2-BLS oder systemd-boot unterstützen (zur Zeit) keinen Dualboot.
  • Die openSUSE-Implementierung von systemd-boot unterstützt (zur Zeit) nicht die Verwendung einer XBOOTLDR-Partition.
  • Wenn mit GRUB2 im MBR-Modus von einem Datenträger mit GPT-Partitionsschema gestartet werden soll, so ist eine BIOS-Boot-Partition erforderlich.
  • Bei Verwendung von btrfs als Dateisystem für die “/”-Partition muss diese mit der openSUSE-spezifischen Struktur vorbereitet und die Vorbereitung für das chroot entsprechend angepasst werden.
  • Die Nutzung von snapper, die Verschlüsselung aller oder einzelner Partitionen , die Nutzung von TPM, die Verwendung von LVM, etc. erfordern ggf. zusätzlich/andere Maßnahmen.

Bootfähige openSUSE Tumbleweed Version starten.

Das verwendete System muss über eine aktuelle Version von zypper verfügen und auf das Internet zugreifen können!

z.B.:

  • Rescue system eines aktuellen openSUSE Tumbleweed snapshots (DVD oder USB-Medium)
  • LIVE system eines aktuellen openSUSE Tumbleweed snapshots (DVD oder USB-Medium)
  • Installiertes openSUSE Tumbleweed system (zur Installation auf einem weitere Datenträger)

In einem virtuellen Terminal oder einer Konsole root-Rechte erlangen.

su -

Das Gerät /dev/vda mit einem GPT-Partitionsschema partitionieren und eine ESP sowie eine “/”-Partition anlegen.

gdisk /dev/vda

Die Partition /dev/vda1 formatieren.

mkfs.fat -n ESP -F 32 /dev/vda1

Die Partition /dev/vda2 formatieren.

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -L LINUX /dev/vda2

Verzeichnisstruktur vorbereiten

(Optional) Hilfsverzeichnis im aktuellen System anlegen.

mkdir /mnt/a

/dev/vda2 (Ziel-“/”-Partition) einhängen.

mount /dev/vda2 /mnt/a

Verzeichnisstruktur auf der Ziel-“/”-Partition anlegen.

mkdir /mnt/a/boot
mkdir /mnt/a/boot/efi
mkdir /mnt/a/{proc,sys,dev,run}[/CODE]

/dev/vda1 (als Ziel-ESP) in die Ziel-“/”-Partition einhängen.

mount /dev/vda1 /mnt/a/boot/efi

Weitere Verzeichnisse des lokalen Systems in die Ziel-“/”-Partition einbinden.

mount --types proc /proc /mnt/a/proc
mount --rbind /sys /mnt/a/sys
mount --make-rslave /mnt/a/sys
mount --rbind /dev /mnt/a/dev
mount --make-rslave /mnt/a/dev
mount --bind /run /mnt/a/run
mount --make-slave /mnt/a/run[/CODE]

Zielsystem vorbereiten (Teil 1)

Im Zielsystem eine Repository-Definition für das openSUSE Tumbleweed OSS Reposistory anlegen.

zypper --root /mnt/a ar -e -f -n "openSUSE Tumbleweed - OSS" https://download.opensuse.org/tumbleweed/repo/oss/ oss

Diese Repository-Datei editieren …

vi /mnt/a/etc/zypp/repos.d/oss.repo

und folgende Zeilen ergänzen.

gpgkey=https://download.opensuse.org/tumbleweed/repo/oss/repodata/repomd.xml.key
path=/
type=rpm-md
keeppackages=0[/CODE]

Basissystem im Zielsystem installieren.

zypper --root /mnt/a in --no-recommends kernel-default grub2 grub2-x86_64-efi dracut zypper bash vim shadow util-linux NetworkManager NetworkManager-tui cnf man man-pages gptfdisk

Hinweis:

  • Die Verwendung von –no-recommends ist optional und sollte nur genutzt werden, wenn man mit den Konsequenzen (z.B.: möglicherweise werden Pakete, wie z.B. kernel-firmware-Pakete, die für den Betrieb der verwendeten Hardware erforderlich sein können, nicht installiert) umgehen kann.
  • An Stelle von vim kann auch ein anderer Editor installiert werden.
  • Die Installation von NetworkManager-tui, cnf, man, man-pages, gptfdisk ist nicht zwingend erforderlich (aber ggf. hilfreich).

Zielsystem vorbereiten (Teil 2)

chroot in das Zielsystem

chroot /mnt/a /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"[/CODE]

Im Zielsystem die Datei /etc/fstab anlegen.

vi /etc/fstab

und mit folgendem Inhalt versehen.

LABEL=ESP /boot/efi vfat nofail,utf8 0 2
LABEL=LINUX / ext4 defaults 0 1[/CODE]

(Optional! Nur nutzen, wenn man sich der Konsequenzen bewusst ist.) Das Installieren empfohlener Pakete abschalten. Dazu

vi /etc/zypp/zypp.conf

… und folgenden Eintrag einfügen.

solver.onlyRequires = true

GRUB2 im Zielsystem installieren.

grub2-install

root-Kennwort im Zielsystem festlegen.

passwd

tty1 im Zielsystem aktivieren.

systemctl enable getty@tty1.service

NetworkManager im Zielsystem aktivieren.

systemctl enable NetworkManager

initrd im Zielsystem aktualisieren.

dracut -f --kver x.y.z-default

GRUB2-Konfiguration im Zielsystem erstellen.

grub2-mkconfig -o /boot/grub2/grub.cfg

chroot beenden

exit
umount -l /mnt/a/dev{/shm,/pts,}
umount -R /mnt/a[/CODE]

Zielsystem starten und nutzen

Neu-Start in das vorbereitete Zielsystem.

systemctl isolate reboot

Im neuen System

(Optional) Das Tastatur-Layout für deutsche Tastatur setzen.

localectl set-keymap de-nodeadkeys

Einen Benutzer anlegen.

useradd -m BENUTZER

Den Repository-Index-Service für openSUSE Tumbleweed installieren.

zypper in openSUSE-repos-Tumbleweed

installieren oder

und ggf. weitere Repositories anlegen.

Weitere Software im Zielsystem installieren (Variante A)

Mit Hilfe von pattern die gewünschten Pakete installieren.

Die verfügbaren pattern können mit

zypper se -t pattern

angezeigt werden.

Welche Pakete bei Verwendung eines pattern installieren werden, kann mit

zypper info -t pattern NAME_DES_PATTERN

ermittelt werden.

Mit

zypper in -t pattern NAME_DES_PATTERN

werden alle Pakete des pattern installiert.

Weitere Software im Zielsystem installieren (Variante B)

Die gewünschten Pakete mit

zypper in PAKETNAME

installieren.

2 Likes

Auch wenn man dies nicht nachfolgen möchte kann man, durch das zu studieren (und auch den zugehörenden man pages), ungeheuer viel Kenntnise ansammeln.

1 Like

@hcvv : Vielen Dank für Deine Rückmeldung.

Ursprünglich war mein Bestreben nach möglichst wenig Paketen aus der Not heraus geboren (geringe Bandbreite meines Internetzugangs). Dank Glasfaser ist diese Problematik heute nicht mehr gegeben.

Aber das in Beitrag #1 beschriebene Vorgehen hat mir sehr geholfen einen besseren Einblick in die Arbeitsweise von openSUSE und das Zusammenwirken der einzelnen Pakete zu erhalten.

@susejunky Warum nicht Agama-Profile verwenden?
https://agama-project.github.io/docs/user/profile

@malcolmlewis :

Danke für den Hinweis.

Ich verwende openSUSE zwar seit dem Jahr 2000 aber die Entwicklung, welche die Distribution in den letzten Jahren genommen hat, stimmt mich nachdenklich. Sollte ich eines Tages feststellen, dass openSUSE “nicht mehr zu mir passt”, dann möchte ich in der Lage sein, möglichst schnell und reibungslos zu einer anderen Distribution wechseln zu können.

Aufgrund dessen bin ich bestrebt für die Systemadministration möglichst “einfache” Werkzeuge zu verwenden (vi, gdisk, zypper, usw.), da diese in nahezu allen Distributionen zur Verfügung stehen oder einfach ausgetauscht werden können (z.B. zypper / pacman).

Werkzeuge wie YaST, Agama, usw. stehen daher nicht wirklichin meinem Fokus (obwohl ich sie gelegentlich nutze).

Ich verwende hier ebenfalls Skripte, eine Übernahme aus Combustion und Ignition, die möglicherweise nützlich sein könnten?

Zum Beispiel lege ich Variablen für verschiedene Aufgaben fest;

USE_ZRAM_GEN=1


if [ $USE_ZRAM_GEN == 1 ]; then
echo "Initializing ZRAM Generator"
zypper --non-interactive in --no-recommends --auto-agree-with-licenses \
                         zram-generator
install -m0644 /data/configuration/zram-generator.conf /etc/systemd/zram-generator.conf
systemctl enable --now systemd-zram-setup@zram0.service
fi

Ich setze ausschließlich openSUSE Tumbleweed ein und aktualisiere meine Systeme regelmäßig mit zypper dup.

Neu-Installationen nehme ich in der Regel nur nach größere Änderungen in Tumbleweed (wie z.B. usr-merge, plasma5/plasma6-Wechsel, Wechsel von apparmor zu SELinux, usw.) vor oder wenn Hardware-Probleme es zwingend erforderlich machen.

Einen Skript-gesteuerten Installationsprozess habe ich daher bislang noch nicht in Erwägung gezogen.