Windows 10 Laptop löschen und neu aufsetzen
Posted on So 18 Oktober 2020 in Computer & Electronics
Heute wurde mir ein Laptop in die Hand gedrückt – mit der Bitte, alle Daten sicher zu löschen und das Windows wieder neu einzuspielen, damit er einer neuen Aufgabe zugeführt werden kann. Leichte Übung.
Vorbereitungen
Zuerst müssen wir mal nachsehen, welche Windows Version eigentlich installiert ist. Früher hatte man dafür ja immer eine Installations-CD und einen Aufkleber mit dem Produkt-Schlüssel. Heute gibt's das normalerweise nicht mehr, denn das Installations-Image kann man sich einfach bei Microsoft herunterladen und der Schlüssel ist im BIOS gespeichert. Wichtig ist nur, die selbe Betriebssystemversion zu installieren weil sonst der Schlüssel nicht zum Produkt passt.
Also Rechner booten, einloggen und nachsehen – Windows 10 Professional, Deutsch. Das ist also geklärt. Nun brauchen wir ein Image. Und das gibt es hier. Dort kann man nun Win10 auswählen und im Anschluss die gewünschte Sprache. Ist das erledigt, wird man mit zwei download-Links für das 32- bzw. 64-bit Medium belohnt.
Mach ihn platt
Als nächstes wollen wir alle Daten loswerden, ohne dass jeder halbwegs belesene Teenager sie sofort wieder herstellen kann. Einfach alles in den Papierkorb werfen klingt erstmal logisch ist aber eine sehr schlechte Idee, denn dabei werden die Daten auf der Platte keineswegs gelöscht, sondern nur als gelöscht markiert. Wer sich auch nur ein ganz kleines bisschen auskennt (oder Google bedienen kann) wird problemlos das meiste wieder herbeizaubern können, das wir eigentlich vor neugierigen Augen schützen wollten.
Also anders. Haben wir es mit einer normalen Festplatte zu tun, also so einem Ding mit rotierenden Scheiben, ist die Welt verhältnismäßig einfach. Wir müssen nur die komplette Festplatte mit irgendwas überschreiben und schon ist alles weg. Ja – manche Leute werden nun aufschreien und sagen, dass es unbedingt Zufallsdaten sein müssen und das auch nicht nur einmal, sondern mehrfach passieren muss, um wirklich sicher zu sein. Ich sag mal so: wenn Ihr davon ausgeht, dass der KGB, die NSA oder der Mossad hinter Euch her sind und die Platte die Abschuss-Codes für das Atomwaffenarsenal enthält, dann ist das vermutlich ein guter Tipp – möglicherweise nicht mal ausreichend. Aber um Eure Sammlung peinlicher Urlaubsfotos, die Ehrenurkunde vom Gartenbauverein und die angesammelten Memes zuverlässig los zu werden reicht auch einmaliges Überschreiben mit irgendwas – z.B. Nullen.
Und wie mache ich das? Schön dass Ihr fragt. Ich nehme dazu immer ein kleines
LINUX ISO Image, das man von einem USB-Stick booten kann und verwende das dd
Kommando. Dieses mal habe ich das 2020er desinfect image der ct verwendet,
aber viele andere Stick-Distributionen tun es genauso.
Also erstmal Image auf den Stick spielen. Bei mir ist das /dev/sdc
– bei Euch
kann das ganz was anderes sein, also Augen auf, sonst gibt's ein Daten-Unglück!
Wir machen nun viel Zeug, das root-Rechte benötigt, also entweder macht Ihr
jedesmal ein sudo
davor, oder Ihr seid faul, wie ich, und macht das Folgende
alles in einer interaktiven root-Shell:
sudo -i
cd wo/auchimmer/Win10_image-und-desinfect/liegen/
dd if=desinfect-2020_ct_2020_12.iso of=/dev/sdc bs=10M
Selbigen Stick steckt man dann in den zu löschenden Computer und startet diesen neu. Dabei ist schonmal die erste Hürde zu umschiffen: Windows 10 hat nämlich die lästige Eigenart, einen "Schnellstart" einzurichten. Dadurch startet der Rechner nach dem Herunterfahren schneller, aber in Wahrheit findet nie ein echter kompletter Shutdown statt. Und das bedeutet, dass wir keine Chance bekommen, von einem anderen Gerät (z.B. unserem USB-Stick) zu booten, oder auch nur die Bootreihenfolge im BIOS einzustellen. Das ist lästig!
Man kann den Schnellstart irgendwo in den Tiefen der Systemsteuerung
deaktivieren, aber das brauchen wir garnicht, denn wenn Ihr statt
"Herunterfahren" "Neustart" wählt, dann wird der Rechner tatsächlich komplett
herunter gefahren, bevor der Neustart erfolgt. Also machen wir das und hoffen,
das der Stick in der Bootreihenfolge vor der Festplatte kommt. Ist das nicht
der Fall müssen wir ins BIOS, um das zu konfigurieren, oder eine temporär
geänderte Boot-Reihenfolge wählen. Wie das genau geht, hängt von Eurem Computer
ab. Bei meinem Thinkpad komme ich z.B. ins BIOS, wenn ich beim Neustart F1
drücke und mit F12
kann ich ein temporäres Boot-Device auswählen. Das Objekt
unserer Operation ist jedoch ein Fujitsu – da muss man F2
drücken, um ins
BIOS zu kommen und mit F12
geht's in das Boot-Menü.
Wenn alles nach Plan läuft bootet nun also unser Mini-LINUX und wir können loslegen und die Festplatte mit Nullen überschreiben:
dd if=/dev/zero of=/dev/sda bs=10M
bs
legt die Block-size fest – das ist nicht zwingend nötig, beschleunigt den
Prozess aber in der Regel. Wichtig ist nur, dass Ihr bei of
die richtige
Platte erwischt – bzw. das für alle zu löschenden Platten wiederholt. Also
ggf. nochmal für /dev/sdb
etc. Für die Paranoiker unter uns noch eine Variante
mit Zufallswerten, statt Nullen:
dd if=/dev/urandom of=/dev/sda bs=10M
Und wem das nicht reicht oder wenn die Festplatte schon Probleme hat und sich
teilweise nicht mehr beschreiben lässt, dann ist das tool dc3dd
ein bessere Wahl:
dc3dd wipe=/dev/sda # Mit Nullen überschreiben
Oder
dc3dd hwipe=/dev/sda pat=0xff # mit dem Pattern 0xff überschreiben
Allerdings ist dc3dd
nicht bei allen gängigen Stick-Images vorhanden.
Für SSDs
Lustiger wird es, wenn der zu löschende Computer keine normale Festplatte, sondern eine SSD enthält. Selbige haben nämlich das Problem, dass die Speicherzellen bei häufigem Beschreiben irgendwann den Geist aufgeben. Damit das im normalen Betrieb keinen Ärger macht, sorgt die Firmware dieser Speichermedien dafür, dass man nicht immer in die gleiche Zelle schreibt auch wenn man das zu tun glaubt. D.h. das sogenannte wear leveling sorgt dafür, dass alle Speicherzellen einigermaßen gerecht verwendet werden. Das bedeutet aber auch, dass ich mich nicht (wie bei einer Festplatte) darauf verlassen kann, dass ein bestimmter Sektor auch jedes mal der selbe ist. Um die Welt noch weiter zu verkomplizieren, haben SSD auch noch Reserve-Speicherzellen, die in der Kapazitätsangabe verschwiegen werden und die die Firmware im Ärmel hat, wenn wirklich Speicherzellen zugrunde gehen. Das alles macht unsere schöne Strategie, einfach alle Blöcke oder Speicherzellen der Reihe nach zu überschreiben mindestens fragwürdig. Und vor allem haben wir fast keine Möglichkeit zu überprüfen, ob nicht doch noch irgendwo Daten übrig sind...
Der offizielle Weg so eine SSD sicher zu löschen geht über das security erase
Kommando das die Firmware implementiert. Dabei werden laut Spezifikation
wirklich alle Zellen gelöscht bzw. verschlüsselt. Leider müssen wir in weiten
Teilen darauf vertrauen, dass der jeweilige Hersteller dieses Kommando auch
korrekt (oder überhaupt) implementiert hat.
Und so können wir einen security erase auslösen:
hdparm --user-master u --security-erase 98s7ygbvo23u098yhvn20487yriu /dev/sda
Der Buchstabensalat im Mittelteil ist der zu verwendende Key, ohne den die Daten futsch sind. D.h. wenn wir diesen nicht speichern, aufschreiben oder so doof sind, ihn in unserem Blog zu veröffentlichen ist die Platte safe.
Zu dumm nur, dass das nicht geklappt hat, denn der Rechner hatte was zu meckern:
Issuing SECURITY_ERASE command, password="98s7ygbvo23u098yhvn20487yriu" user=user
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 04 51 40 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Grumpf!
Irgendwo las ich dann, dass man das security passwort vorher setzen muss, damit das funktioniert. Also:
hdparm --user-master u --security-set-pass 98s7ygbvo23u098yhvn20487yriu /dev/sda
Leider ist die SSD nun aber frozen
:
hdparm -I /dev/sda
sagt nämlich:
[...]
Security:
Master password revision code = 65534
supported
enabled
not locked
frozen
[...]
Na toll. Um das in Ordnung zu bringen soll es helfen, das System in den suspend Mode zu bringen und dann wieder aufzuwecken:
pm-suspend
Das hat funktioniert. Nun ist die Disk not frozen. Neues Spiel, neues Glück:
hdparm --user-master u --security-erase 98s7ygbvo23u098yhvn20487yriu /dev/sda
security_password: "98s7ygbvo23u098yhvn20487yriu"
/dev/sda:
Issuing SECURITY_ERASE command, password="98s7ygbvo23u098yhvn20487yriu", user=user
Sehr gut!
Neues Fenster einbauen
Die Platte ist erfolgreich geputzt und nun ist es an der Zeit, unser Windows-Image auf einen USB-Stick zu schreiben und die Neuinstallation zu starten.
Also rein in das Verzeichnis, in dem das Image liegt und in alter LINUX-Manier:
dd if=Win10_2004_German_x64.iso of=/dev/sdc bs=10M
Stick in den gelöschten Computer rein, Neustart, ggf. Bootreihenfolge (s.o.) und installieren. Dachte ich jedenfalls. Denn:
Was'n da los? Offenbar kann man ein Windows Installations-Image nicht einfach so auf einen USB-Stick kopieren und erwarten, dass er bootfähig ist. Grumpf!
Wenn man unter Windows arbeitet, was ja durchaus Sinn macht, wenn man ein Windows installieren möchte, kann man bei Microsoft ein Tool herunterladen, das einen USB-Stick zum Installationsmedium macht. Besagtes Windows haben wir aber gerade erfolgreich platt gemacht, und so müssen wir das irgendwie unter Linux hinbekommen.
Etwas online-Recherche später bin ich schlauer. Man kann den Stick einfach partitionieren, eine FAT32 Partition draufmachen und den Inhalt des ISO-Image in diese Partition kopieren. Dann machen wir das mal.
cfdisk /dev/sdc
Und nun
- Label type "dos" wählen
- Ggf. vorhandene Partitionen löschen (
Delete
) - Neue primary Partition erzeugen (
New
– Größenvorschlag akzeptieren –primary
) - Die neue Partition bootfähig machen (
Bootable
) - Type auf 0x0b "FAT32" ändern (
Type
) - Änderungen auf den Stick schreiben (
Write
)
Nun noch formatieren:
mkfs.vfat /dev/sdc1
So – jetzt ist der Stick vorbereitet und wir können ihn mit den Daten aus dem Win-10 Installations-Image befüllen. Dazu müssen wir beides erstmal mounten
mkdir image
mount -o loop Win10_2004_German_x64.iso image
mkdir stick
mount /dev/sdc1 stick
Und jetzt ist es ein Kinderspiel, alle Files auf den Stick zu bringen:
cp -r image/* stick/
Eine Weile warten und schon kann es losgehen.
umount stick
Stick wieder in den platten Rechner rein, einschalten, ggf. Boot Device wählen und installieren. So die Theorie. In der Praxis hingegen bekommt man dies:
Was zum Geier ist denn jetzt schon wieder los!?! Warum ist denn dieses blöde
install.wim
nicht drauf? Spinn' ich jetzt? Mal nachschauen:
ls -l stick/sources/*.wim
-rwx------ 1 root root 491M Okt 15 21:28 stick/sources/boot.wim
-rwx------ 1 root root 4.0G Okt 15 21:30 stick/sources/install.wim
Oha – diese install.wim
Datei ist exakt 4GB groß. Das ist verdächtig!
Schließlich ist 4GB die Maximale Größe, die ein FAT32-Filesystem verkraftet...
ls -lh image/sources/*.wim
-r-xr-xr-x 1 nobody nogroup 491M Mai 11 08:40 image/sources/boot.wim
-r-xr-xr-x 1 nobody nogroup 4.2G Mai 11 08:42 image/sources/install.wim
Richtig geraten. Da fehlen 200MB von dem File...
Das hätte ich auch früher merken können, denn der aufmerksame Leser hat
beim Nachvollziehen vermutlich schon bemerkt, dass der cp
Befehl eine
Fehlermeldung geworfen hatte:
cp: error writing 'stick/sources/install.wim': File too large
Jetzt fallen mir aber gleich vor Wut alle Haare aus! Und was
mache ich jetzt? Mein erster Gedanke war, eine NTFS-Partition zu nehmen, statt
FAT32. Das ging zunächst auch super und das blöde .wim
File ist in seiner
ganzen Pracht und Größe auf dem Stick gelandet. Leider konnte der Rechner aber
von der NFTS-Partition nicht booten. Grrr.
Also wieder ins Netz und Nach Abhilfe suchen. Die fand ich auch. Windows hat
ein Kommandozeilen-Tool namens Dism
, das aus einer riesigen .wim
Datei
mehrere mundgerechte .swm
Dateien macht, mit denen der Installer angeblich
auch umgehen kann. Das sieht dann ungefähr so aus:
Dism /Split-Image /ImageFile:C:\sources\install.wim /SWMFile:C:\sources\install.swm /FileSize:3000
Aber wie Ihr Euch vermutlich erinnert, habe ich grade kein Windows mehr, weil
wir das ja platt gemacht hatten. Also wieder suchen. Die Lösung heißt
wimsplit
– ein LINUX-Tool, das das auch kann. Her damit:
apt install wimlib-imagex
Und nun weg mit dem verhunzten install.wim
und stattdessen aufsplitten:
rm stick/sources/install.wim
wimsplit image/sources/install.wim stick/sources/install.swm 3000
ls -lh stick/sources/*.swm
-rw------- 1 root root 1.3G Okt 19 10:08 install2.swm
-rw------- 1 root root 3.0G Okt 19 10:07 install.swm
Besser!
Noch schnell alles unmounten.
umount stick
umount image
Und ein neuer Versuch: Stick in den Rechner, Strom an, ggf. Bootdevice wählen, auf Installer warten. Und – Trommelwirbel:
Sieg!