IT-Service GmbH 


polaris.ulm.go-itservice.de

Upgrade Lenovo T450s von Debian 11 bullseye auf Debian 12.0 Bookworm, Kopie oder Neuinstallation

Da die letzten Upgrades problemlos liefen, verwendete ich diesmal sowohl Upgrades von bullseye auf bookworm als auch direkte Kopien von bereits aktualisierten Systemen.

Hardware:

TypT450s
CPUINTEL i7-5600U 2x2.60 GHz
Speicher16GB PC3-12800 1600 MHz DDR3L
GrakaIntel HD 4600
Netzwerk (intern)on Board: Intel 1GBit
PlatteSSD Samsung 512GB
Cardreaderintegriert SDHC/SDXC

Debian 12 Bookworm Grundinstallation

Netinstall CD herunterladen, ISO auf CD Brennen und Laptop damit booten, installation - Kommandozeile auswählen. Ich habe das bei Bookworm nur einmal für den Rechner eines Freundes gemacht und alle eigenen Rechner dann wie oben beschrieben entweder kopiert oder aktualisiert, da beides viel schneller als eine Neuinstallation geht und nur wenig manuelle Eingriffe benötigt.
	Language:	German<enter>
		...	
	IP:		192.168.80.40
	Netmask:	255.255.255.0
	Gateway:	192.168.80.10
	DNS:		192.168.80.10
	Rechnername:	polaris			(wird durch DNS automatisch erkannt)
	Domain:		ulm.go-itservice.de	(wird durch DNS automatisch erkannt)
Passwort root ..., User: dummy, es sind keine echten User nötig, diese werden von dem alten Rechner übernommen. Im weiteren Ablauf wird die SSD (512 GB) partitioniert:
	120,0 GB 	sda1	83		/
	 20,0 GB 	sda2	82		swap
	370,0 GB 	sda3 	83		NICHT einhängen.
bei der Grundinstallation wird als Zielssysteme:
	 Desktop
	 xfce
         druck
         ssh
	 standard
ausgewählt, User "dummy" wird später gelöscht, sonst die üblichen Systemparameter und Passwörter. Nach dem Booten kommt man via ssh erstmal nicht auf die Kiste, also muss man passwortbasierten SSH Zugang erst mal aktivieren:
in /etc/ssh/sshd_config ändert man PermitRootLogin zu
PermitRootLogin yes
Nach der Grundinstallation ist weder aptitude noch rsync oder ifconfig installiert, das wird nachgeholt:
# apt-get install aptitude net-tools rsync
Damit der neue Rechner sich wie der alte verhät, werden die Hostkeys und das root-Verzeichnis vom polaris geholt. Vorsicht, Besitzer der Dateien kontrollieren. Wenn z.B. /root/.ssh irgendeinem anderen User gehört, kann man sich nicht mit Zertifikat verbinden (Der Owner muss root:root sein)
/root/.ssh
/root/
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub
Nach der Installation Dateien anpassen, passwd,shadow und group am besten vom alten Rechener (der einer anderen Workstation):
# rsync root@RECHNER:/etc/passwd /etc/passwd.OLD
dann alle Einträge der Systemuser ec ausser den echten Benutzern (go,lw...) in der passwd.OLD löschen.
# cat /etc/passwd.OLD >> passwd
/etc/passwd
/etc/shadow
/etc/group
/etc/profile		(nur wegen export EDITOR=vi)
/etc/init.d/obi1	(inclusive cd /etc/init.d; update-rc.d obi1 defaults)
/usr/local/bin
/etc/sudoers		(kopieren)
obi1 muss je nach Einsatzzweck angepasst werden!
Verzeichnisse anlegen:
# mkdir /backupNorm1
# mkdir /backupNorm2
# mkdir /backupMonthly1
# mkdir /backupMonthly2
# mkdir /backupYearly
# mkdir /homelocal
# mkdir /homeserv
# mkdir /SDCARD
# mkdir /local
# rmdir /home
# ln -s /homeserv /home
Dann mit aptitude folgende zusätzliche Pakete mit aptitude auswählen. Weitere PHP oder Perl-Pakete sind nicht mehr nötig:
	abcde
	apache2
	acl (default)
	bind9
	brasero
	catdoc (wegen xls2csv)
	chromium
	composer
	cryptsetup
	cups (default)
	curl
	debconf-utils
	dkms*
	dos2unix
	ekiga (FEHLT)
	enigmail
	exiftran
	eyed3
	florence	(für Tablet)
	flowblade
	font-manager
	ghostscript (default)
	gpg
	gimp
	git*
	gthumb
	dnsutils
	gpxviewer
	gthumb
	handbrake
	id3
	id3v2
	imagemagick (default)
	jmtpfs
	kaffein
	kodi
	lame
	laptop-mode-tools
	libapache2-mod-php7.3
	ldap-utils
	lynx
	mcrypt	
	mplayer
	multimedia-video
	mariadb-client
	mariadb-server
	nfs-kernel-server	
	nfs4-acl-tools
	ntpdate
	okular
	openssh-server  (default)
	pluma	(statt gedit)
	rawtherapee
	rsh-redone-client
	rsync
	samba (bereits installiert)
	sane
	signal-desktop
	siril
	slapd
	squid3
	squidguard
	stellarium
	systools
	thunderbird
	totem
	uswsusp			(für s2ram)
	virtualbox (aus eigenem Repository, siehe weiter unten)
	xcftools
	xfce4 (default)
	xsane (default)
	xscreensaver
	xscreensaver-extra
	zoom
entfernen:
	network-manager
Ich habe alle Pakete, die irgendeiner der Rechner antares, sgrx1 und rigel verwendet, aufgenommen, um die weiter benötigten Rechner via Plattenkopie schnell aufsetzen zu könen. Nach der Installation Passwörter für mysql, ldap ec. eingeben.

Default X-Windowsmanager ändern

Falls Gnome3 doch installiert ist, muss man den Default X-Session / X-Windowmanager auf xfce4 ändern. Diesen im Auswahlmenü eintragen:
# update-alternatives --config x-session-manager

Startdatei in rc.n

bereits in squeeze wurde die Reihenfolge der Bootskripte auf abhänigkeitsgesteuerte Bootskripte geändert. Diese sind komplizierter aufgebaut und müssen ihre Abhänigkeiten und "start","stop" Zweige enthalten. Der Start Teil in meinem Beispiel (komplette Datei hier im Anhang)
mount 192.168.80.13:/home /homeserv
mount /dev/sda3 /homelocal
df -k
echo "ok"
Ist das Startskript fertig, wird es in den Bootablauf eingebunden. Hierzu wird im Verzeichnis /etc/init.d folgendes Kommando ausgeführt:
# update-rc.d obi1 defaults

Stromsparen

PC geht nach Einsatz von powertop von selbst in den standby-Modus. alle Modi auf "gut", ausser Maus und USB, da sonst dauernd die Maus hängt.
Aus dem S3 Schlafmodus (standby suspend, suspend to RAM) ist der Rechner in 2 Sekunden da und der Verbrauch während des Standbys beträgt ca 2 Watt! Aus dem S4 Ruhezustand (hibernate, suspend to disk) muss der Rechner booten und das dauert trotz der SSD ca 8 Sekunden, der Verbrauch hierbei ist mit meinen Mitteln nicht mehr messbar. Wegen der schnelleren Bereitschaft habe ich in der "Energieverwaltung - bei Netzbetrieb"
Computer schlafen legen nach:	15 Minuten
und unter "Energieverwaltung - Erweitert"
Schlafmodus für Computer: 	Standby (also S3)
Schlafmodus für Monitor: 	Standby
Bildschirm sperren bei Ruhe:	JA
ausgewählt.

User und Rechte

Benutzer und Gruppen so anlegen, dass für jeden User eine Gruppe mit GID=UID existiert. Zugriff auf gemeinsame Resourcen kann dann einfach mittels Gruppenzugehörigkeiten geregelt werden:
/etc/passwd
go:x:801:801:Guenther Obermaier:/home/go:/bin/bash
USER:x:899:899:USER:/home/USER:/bin/bash
common:x:890:890:Common User:/home/common:/bin/false
Neben der normalen Gruppe für gemeinsame Daten, habe ich wegen den Kindern noch Gruppen eingerichtet, damit diese nur auf altersgerechte Inhalte vom Server zugreifen können: /etc/group
go:x:801:go,www-data
USER:x:899:USER,www-data
child06:x:881:common,go,USER,CHILD12,CHILD06
child12:x:882:common,go,USER,CHILD12
child16:x:883:common,go,USER
adult:x:888:common,go,USER
common:x:890:common,www-data,go,USER,CHILD12,CHILD06
User www-data ist in jeder Usergruppe, deren korrespondierender User httpd-Unterverzeichnisse besitzt die via Webbrowser erreichbar sein sollen.

Apache 2

site-available und site-enabled von altem Rechner/Server kopieren:
# rsync --delete -avurtHAX root@wega:/etc/apache2/sites-available/ /etc/apache2/sites-available/
# rsync --delete -avurtHAX root@wega:/etc/apache2/sites-enabled/ /etc/apache2/sites-enabled/
Damit die Seiten unter /home/go/httpd wieder funktionieren, muss dieses Verzeichnis in der /etc/apache2/apache2.conf freigegeben werden:
<Directory /home/go/httpd>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>
Weitere Links bei Bedarf in /etc/apache2/sites-enabled mit der Endung .conf erzeugen in der Art
# ln -s ../sites-available/sece-it-dev.local 001-sece-it-dev.local.conf
/etc/hosts anpassen, damit die Entwicklungsseiten auf spica nicht im Internet gesucht werden:
127.0.0.1	sece-it-dev.local
In den Proxy-Einstellungen des Browsers muss die verwendete Domain ".local" vom Proxys ausgenommen werden
Ich habe die Aliase in den einzelnen sites-available so gestaltet, dass diese auf allen wichtigen Rechnern ohne weitere Veränderung passen sollten. Aussehen der Datei im Anhang
Da ich testhalber über Reverse Proxy auf eine Webcam zugreife, muss der mod_proxy aktiviert werden:
# a2enmod proxy
# a2enmod proxy_http
# systemctl restart apache2
Falls der Apache (der ein anderer Dienst) nicht startet, kann man mit
# systemctl status apache2.service
oder
# journalctl -xe
Details erfahren

Datenbanken

Prinzipiell werden die SQL-Dateien auf den neuen Rechner kopiert, die Datenbanken erzeugt, Grants eingerichtet und dann die SQL-Dateien eingespielt:
# mysql -uroot -pPASSWD -e "CREATE DATABASE DBNAME DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci;"
# mysql -uroot -pPASSWD -e "GRANT ALL PRIVILEGES on DBNAME.* TO USER@localhost identified by 'PASSWD';"
# mysql -uUSER -pPASSWD DBNAME < /tmp/DBNAME.sql 
Ich habe das ganze in einem Skript namens restoreDB verpackt, das alle nötigen Datenbanken des jeweiligen Rechners erzeugt und befüllt. Dazu müssen unter /home/go/backupDBs/RECHNERNAME alle für diesen Rechner vorgesehenen Datenbanken in der Form DBNAME.sql liegen.

WLAN

um WLAN in Betrieb zu nehmen, braucht man beim T450s einen Firmwareblob. Ausserdem muss WLAN im BIOS aktiviert sein. Dann sieht man mit iwconfig die WLAN-Hardware. mit ip link set interface up wird es gestartet. Da dies bei mir nicht anstandslos funktionierte, verwendete ich den im Internet gefundenen Trick mit rfkill. Anschliessend kann man mit iwlist scan alle Netzwerke in Reichweite scannen.
# apt-get install firmware-iwlwifi
# iwconfig
# ip link set wlp3s0 up
# rfkill unblock all
# iwlist scan