Günther Obermaiers Webseite



Allgemeines zu Debian 11.0 Bullseye

Upgrade von buster auf bullseye

Dieser Text basiert auf der Anleitung bei linuxconfig.org und meinem eigenem Upgrade von Stretch auf Buster.

Veraltete Pakete oder solche ausserhalb der Paketverwaltung suchen (das Zeichen vor "o" ist eine Tilde!):
# aptitude search '~o'
Dies ergab bei mir "zoom", ??? und zwei Scanapplikationen von Epson zum ET5800, was ich ignorierte. Man kann diese gegebenenfalls nach Kontrolle mit dem Kommando
# aptitude purge '~o'
löschen. Jetzt das vorhandene Buster-System aktualisieren mit
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
zurückgehaltene Pakete kontrollieren.
# dpkg -C
# apt-mark showhold
Dann in der /etc/apt/sources.list buster durch bullseye ersetzen, am einfachsten mit sed. Vorsichtige Admins kontrollieren, ob das bullseye-Repository auch auf der bevorzigten Quelle vorhanden ist. Da ich die virtualbox nicht mehr benötige, entfernte ich die auf ubuntu bionic contrib zeigende Zeile. Eigentich löst das der sed
# cp /etc/apt/sources.list /etc/apt/sources.list_backup
# sed -i 's/buster/bullseye/g' /etc/apt/sources.list
# apt-get update
Da sich unter "security" ein Pfad ändert, muss man die beiden Zeilen so anpassen:
deb http://security.debian.org/debian-security bullseye-security/updates main
deb-src http://security.debian.org/debian-security bullseye-security/updates main
bevor man den apt-get update startet. Vielleicht liegt es auch daran, dass bullseye noch testing und nicht stable ist.
# apt-get update
so, jetzt kann man simulieren, was beim Upgrade passiert:
# apt list --upgradable
auf arcturus war alles grün! Dann geht der eigentliche Upgrade los, beide Teile dauern in Summe etwa eine Stunde (DSL 25000)
# apt-get upgrade
# apt-get dist-upgrade
Beim Upgrade behielt ich immer meine lokal veränderten Konfigurationstateien, antwortete also immer mit "N ". So, neu Booten, alles ok!. Eine Liste aller installierten Pakete erhält man mit
# dpkg --get-selections | grep -v deinstall | awk ' { print $1 } '

System klonen / Grub nachträglich installieren

Nachdem ich stundenlang versucht habe, die Kopieraktion mit UEFI und einer gpt partitionierten Platte zum booten zu bekommen, habe ich erst mal aufgegeben und bin beim klassischen DOS Partitionsschema und BIOS-Boot geblieben. Da meine Systemplatten alle kleiner 2TB und meine modernste CPU ein i7-6700 ist, stellt da kein Problem dar. Den einzigen i3-9100 werde ich einfach von buster upgraden.
die Zielplatte via USB anhängen oder in den 2.Wechselrahmen einstecken.
Da die SSDs der Workstations und Notebooks alle mindestens 240GB haben, verwende ich für das System 80GB und fuer den Swap 20GB.
# fdisk /dev/sdb 
	 80,0 GB 	sdb1	83		Bootflag	(ergibt /)
	 20,0 GB 	sdb2	82		swap
	150,0 GB 	sdb3 	83					(/local oder /home bei Laptops)
Dateisysteme anlegen
# mkfs.ext4 /dev/sdb1
# mkswap /dev/sdb2
# mkfs.ext4 /dev/sdb3
Platte mounten und das gerade in Betrieb befindliche System kopieren. Ich verwende als Mountpoint meistens das (eventuell anzulegende) Verzeichnis /dest. Dadurch ist mir klar, dass es sich um das Zielverzeichnis handelt:
# mount /dev/sdb1 /dest
Anschliessend kopiert man die Systemplatte, ich verwende dazu mein eigenes Kommando cpHOST / /dest ALL, was im Wesentlichen ein rsync mit diversen excludes (proc ec) ist. Anschliessend werden die kopierten BlockIDs der Installation auf der Zielplatte mit den echten BlockIDs der Zielplatte ueberschrieben. Ich habe dazu ein ebenfalls ein Skript namens mvUUIDforBaseByDev gebaut, welches z.B. mit
# mvUUIDforBaseByDev /dest /dev/sda1 /dev/sdb1
# mvUUIDforBaseByDev /dest /dev/sda2 /dev/sdb2
die UUID der Platte /dev/sda1(Quelle) durch die der /dev/sdb1(Ziel) in den angegebenen Dateien ersetzt, wenn diese Platte nach /dest gemountet ist, passt das. Ohne Verwendung von cpHost und mvUUIDforBaseByDev muss man mehr Hand anlegen, siehe Abschnittsende.
Da auch die UUID des Swapspace in einigen Dateien steckt, ist auch die zweite Zeile (/dev/sda2 => /dev/sdb2) nötig.
Ist die Platte noch am Quellrechner unter /dest gemounten, setzt man anschliessend das Kommando
# update-initramfs -u -k all -t -b /dest/boot
ab. Falls die Platte schon als Bootplatte im Zielrechner ist, reicht:
# update-initramfs -u -k all
BIOS Boot anschalten, (bei Platten mit DOS-Dateilabel setzt man das Boot-Flag vorher beim Partitionieren)
# parted -s /dev/sdb set 1 bios_grub on
Dann kann man den GRUB neu intallieren:
 
# grub-install --root-directory=/dest /dev/sdb
Der Device bezeichnet dabei das Ziel der Grub Installation, also KEINE Partition, sondern die Platte selbst. Allgemein alsogrub-install --root-directory=MOUNTPOINT DEVICE
Falls man update-initramfs -u -k all vergessen hat oder das aus irgendeinem Grund nich korrekt funktionierte, kein Beinbruch, man muss beim Booten der Platte als Systemplatte nur ca 5 Minuten warten, bis der Fehler "Could not stat the resume device file '/dev/disk...'" kommt und das system mit <ENTER> bootet.
Kopieren ohne cpHost
 
# cd /
# rsync -avtHAX --exclude /dest --exclude /proc --exclude /sys --exclude /dev --exclude /home --exclude /local --exclude /homeserv / /dest
Das Verzeichnis /local ist eine Spezialität von mir und /home wird bei mir vom Server gemountet. /homeserv ist das Verzeichnis, wo die Laptops das vom Server exportierte /home hin mounten und sollte ebenfalls nicht kopiert werden (wenn vorhanden). /local wird anschliessend genauso kopiert
Kopieren ohne mvUUIDforBaseByDev Die kopierte /boot/grub/grub.cfg und /etc/fstab müssen vor der grub Installation angepasst werden. Notfalls kann man aber auch die UUID der neuen Platte aufschreiben und beim Booten im Grub als "root" bei UUID=... eingeben. Falls man das auch vergessen hat, bekommt man die UUID raus, indem man die Platte in einen anderen Rechner einbaut und
# blkid -o value /dev/PARTITION
aufruft.
Dann die alte UUID in /etc/fstab mit der richtigen UUID ersetzen. Sonst am einfachsten im vi:
# vi /dest/etc/fstab
:
%s/UUIDOLD/UUIDNEW/g
:wq!
so wird das Vorkommen der alten UUID durch die neue ersetzt. Ziel ist dann etwa:
UUID=UUIDNEW / ext4 defaults,errors=remount-ro 0 1
Ebenso muss die UUID in den Dateien /etc/uswsusp.conf und /etc/initramfs-tools/conf.d/resume angepasst werden, wenn man "Suspend to Disk" verwenden will.
Langer Rede, kurzer Sinn, am Zielsystem sind 4 Dateien anzupassen:
/MOUNTPOINT/etc/fstab
/MOUNTPOINT/boot/grub/grub.cfg
/MOUNTPOINT/etc/uswsusp.conf
/MOUNTPOINT/etc/initramfs-tools/conf.d/resume
Achtung #1: Beliebter Fehler vi /etc/fstab statt vi /mnt/etc/fstab, man zerschiesst das Quellsystem!!!
Achtung #2: Auch SWAP oder andere Partitionen in der /mnt/etc/fstab ersetzen.
Ebenso wird jedes Vorkommen der alten UUID in der /mnt/boot/grub/grub.cfg ersetzt.