Forum: PC-Programmierung Debian-PC clonen für Dummies?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bauform B. (bauformb)


Lesenswert?

Guten Morgen,

man möchte mehrere gleiche PC mit einer identischen Debian-Installation. 
Also installiert man einen, richtet alles ein und verpackt / mit tar, 
ungefähr so:
1
apt-get clean
2
rm -rf /root/.cache
3
rm -rf /root/.ssh
4
rm -rf /home/*/.ssh
5
set -e
6
mount -t tmpfs tmpfs /tmp
7
mandb
8
updatedb
9
mount -o remount,ro /
10
tar --create --zstd --file /tmp/root.zst --one-file-system /
Diese root.zst und ein Entpack-Script kopiert man auf einen bootfähigen 
USB-Stick, so, dass das Script automatisch startet. Sobald ein PC von 
dem Stick bootet, wird seine Festplatte partitioniert, formatiert und 
die root.zst drauf entpackt. Das wäre für Leute, die sich auskennen, 
optimal.

Es gibt noch zwei ungelöste Aufgaben:
 - wie kann man Dummies davor schützen, ihren PC platt zu machen?
 - wie kann das Script feststellen, ob es auf einem kompatiblen PC 
läuft?
Es wird wahrscheinlich 2 verschiedene PC-Modelle geben, die natürlich™ 
unterschiedliche Images brauchen. Wenn die Erkennung zuverlässig 
funktioniert, wäre auch die erste Aufgabe fast(?) gelöst.

DMI war wohl für den Zweck gedacht, aber funktioniert das? Es gibt oder 
gab /sys/firmware/dmi/ und /sys/class/dmi/id/. Allgemein scheint 
/sys/class/ stabiler und aktueller zu sein, weiß jemand genaueres?

Welche Sicherheitsabfragen könnte man noch machen? Wenn die Platte 
fabrikneu ist, darf man auf jeden Fall installieren. Wenn schon die 
gleiche Installation drauf ist, ist es wohl ein Update, aber wie viel 
Unterschied akzeptiert man? Im Extremfall war etwas ganz anderes 
installiert und man möchte man das oder eine total kaputte Installation 
ersetzen.

von Thomas W. (dbstw)


Lesenswert?


von Steve van de Grens (roehrmond)


Lesenswert?

Bauform B. schrieb:
> wie kann man Dummies davor schützen, ihren PC platt zu machen?

Etwa so:

> Sind sie sicher, dass sie alle Programme und Daten auf ihrem PC verlieren 
wollen?
ja
> Sind sie ganz sicher, dass sie ihren PC platt machen wollen?
ja
> Antworten sie mit "Ich bin ganz sicher!"
ich bin ganz sicher
> Antworten sie mit "Ich bin ganz sicher!"
Ich bin ganz sicher!
> Ihr PC wird jetzt platt gemacht. Wollen sie nicht fortfahren?
ja
> Programm wurde abgebrochen.

ach Scheiße, ich wollte doch fortfahren. Nochmal...

> Sind sie sicher, dass sie alle Programme und Daten auf ihrem PC verlieren 
wollen?
ja
> Sind sie ganz sicher, dass sie ihren PC platt machen wollen?
ja
> Antworten sie mit "Ich bin ganz sicher!"
ich bin ganz sicher
> Antworten sie mit "Ich bin ganz sicher!"
Ich bin ganz sicher!
> Ihr PC wird jetzt platt gemacht. Wollen sie abbrechen?
nein
> Wie heißt der 4. Präsident der USA?
keine Ahnung
> Programm wurde abgebrochen.

grrrrrrr

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Ich bin ja ein Verfechter der einfachen Abfrage:

Alle Dateien nicht löschen [j/n]?

von Bauform B. (bauformb)


Lesenswert?

Norbert schrieb:
> Alle Dateien nicht löschen [j/n]?

ok, es ist Freitag :) Aber will niemand DMI oder sysfs veralbern?

von Ein T. (ein_typ)


Lesenswert?

Bauform B. schrieb:
> man möchte mehrere gleiche PC mit einer identischen Debian-Installation.

Was spricht gegen die dafür vorgesehenen klassischen Werkzeuge wie FAI, 
eine preseed.cfg für den Debian-Installer und / oder zum Beispiel 
Ansible?

> Es wird wahrscheinlich 2 verschiedene PC-Modelle geben, die natürlich™
> unterschiedliche Images brauchen. Wenn die Erkennung zuverlässig
> funktioniert, wäre auch die erste Aufgabe fast(?) gelöst.

Mir persönlich erscheint die Idee mit den Images keine besonders gute zu 
sein, da würde ich höchstens ein Minimal-Debian mit OpenSSH-Zugang und 
einem PubKey ausrollen und die Büchsen dann mit Ansible installieren und 
konfigurieren. Im Endeffekt hättest Du damit auch gleich noch den 
eleganten Vorzug, eine fertige Ansible-Infrastruktur zur Pflege der 
Maschinen zu haben, denn sonst könnte es "mit einer identischen 
Debian-Installation" womöglich schnell vorbei sein.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Bauform B. schrieb:
> ok, es ist Freitag :)

Stimmt. Am besten den Hund davor setzen. Im Internet nobody knows a dog 
is sitting there. Dann ist es sicher.

von Tim K. (tik)


Lesenswert?

Bauform B. schrieb:
> man möchte mehrere gleiche PC mit einer identischen Debian-Installation.
> Also installiert man einen, richtet alles ein und verpackt / mit tar,
> ungefähr so:

Da solltest du aber noch etwas mehr aufräumen. Mindestens:

- Machine-Id löschen [1]
- Cloud-Init aufräumen [2]

Der richtige Weg ist aber eine preseed.cfg.

[1] https://wiki.debian.org/MachineId

[2] https://cloudinit.readthedocs.io/en/latest/reference/cli.html#clean

von Steve van de Grens (roehrmond)


Lesenswert?

Ganz Toll sind "kryptische" Befehle im Netz, die man vorschnell ins 
Terminalfenster kopiert, ohne nachzuforschen, was sie genau tun. Damit 
hat man schnell etwas falsches gelöscht oder irgend etwas installiert, 
dessen Funktion einem nicht mal klar ist.

Nachtrag: Ich hatte hier ein konkretes Beispiel genannt, aber das war 
mir im Nachhinein doch zu riskant.

: Bearbeitet durch User
von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Du installierst ein minimales Linux und baust identische 
chroot-Umgebungen, die Du kopierst.

von Bauform B. (bauformb)


Lesenswert?

Ein T. schrieb:
> Bauform B. schrieb:
>> man möchte mehrere gleiche PC mit einer identischen Debian-Installation.
>
> Was spricht gegen die dafür vorgesehenen klassischen Werkzeuge wie FAI,
> eine preseed.cfg für den Debian-Installer und / oder zum Beispiel
> Ansible?

Nun, tar ist noch klassischer ;) Außerdem muss man nach preseed noch 
jede Menge von Hand einrichten. Ich hab schon versucht, das zu 
minimieren, aber es bleibt Handarbeit. Besonders, wenn man ein read-only 
root haben will.


Ein T. schrieb:
> Mir persönlich erscheint die Idee mit den Images keine besonders gute zu
> sein, da würde ich höchstens ein Minimal-Debian mit OpenSSH-Zugang und
> einem PubKey ausrollen und die Büchsen dann mit Ansible installieren und
> konfigurieren.

Warum so umständlich?

> Im Endeffekt hättest Du damit auch gleich noch den eleganten Vorzug,
> eine fertige Ansible-Infrastruktur zur Pflege der Maschinen zu haben

OK, wenn man das nutzen könnte... Aber dazu müssten die online sein. Es 
muss (auch) per USB-Stick funktionieren.


Tim K. schrieb:
> Da solltest du aber noch etwas mehr aufräumen. Mindestens:
> - Machine-Id löschen

Vielen Dank für den Tipp! Die war mir noch garnicht aufgefallen, weder 
positiv noch negativ -- bis jetzt. Das scheint eine aufgewärmte hostid 
zu sein, sowas will man eigentlich nicht haben. Auf jeden Fall ist es 
ein Geschenk für die Werbeindustrie, mindestens chrome benutzt die. 
Andererseits darf man sie bei jedem boot neu auswürfeln. Außerdem 
kopiert systemd /var/lib/dbus/machine-id nach /etc/machine-id, aber 
erstere kann ein Link auf /etc/machine-id sein. Eine richtige UUID ist 
es auch formal nicht und die man page fehlt auch. Eine schöne 
WTF-Sammlung :) Offensichtlich und erfahrungsgemäß kann man die 
ignorieren.

> Der richtige Weg ist aber eine preseed.cfg.

Nein, siehe oben.

von Rbx (rcx)


Lesenswert?

Bauform B. schrieb:
> Es gibt noch zwei ungelöste Aufgaben:
>  - wie kann man Dummies davor schützen, ihren PC platt zu machen?

Sowas braucht auch Übung, also ist "Dummies" schon mal unlogisch.

Bauform B. schrieb:
> - wie kann das Script feststellen, ob es auf einem kompatiblen PC
> läuft?
Könnte man sich bei Windows abschauen. Haskell Plattform hat auch eine 
Überprüfung, die allerdings erst nachdem alles korrekt installiert ist 
funktioniert. Besser wäre gewesen, schon vorher den Dienst zu 
verweigern, dann hätte man sich das Herumgeiern mit 
Speicherzugriff-Umleitungen oder ähnlichem erspart.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Mehr Aufwand, aber universeller wäre, Du würdest einen Referenzrechner 
aufsetzen und aus der Distro mit allem was Du noch installiert hast ein 
eigenes Installationsmedium erzeugen, quasi Deine eigene Distro machen.

von Daniel F. (df311)


Lesenswert?

Bauform B. schrieb:
> Ein T. schrieb:
>> Mir persönlich erscheint die Idee mit den Images keine besonders gute zu
>> sein, da würde ich höchstens ein Minimal-Debian mit OpenSSH-Zugang und
>> einem PubKey ausrollen und die Büchsen dann mit Ansible installieren und
>> konfigurieren.
>
> Warum so umständlich?

++ für ansible, das klingt aufwändiger als es ist

>
>> Im Endeffekt hättest Du damit auch gleich noch den eleganten Vorzug,
>> eine fertige Ansible-Infrastruktur zur Pflege der Maschinen zu haben
>
> OK, wenn man das nutzen könnte... Aber dazu müssten die online sein. Es
> muss (auch) per USB-Stick funktionieren.

wenn die Kisten komplett ohne Internet/Netzwerk dastehen, dann sollte 
auch ein einfacher Festplattenklon funktioniere? wenn die Kiste nicht 
kompatibel ist, dann startet das System eh nicht, sonst gehts.

Und ohne zentrale Verwaltung ala Ansible o.ä. sind die Kisten zu genau 
einem Zeitpunkt identisch: nach der Installation. Danach werden die 
Kisten unweigerlich auseinander driften...

von Bauform B. (bauformb)


Lesenswert?

Dieter D. schrieb:
> Mehr Aufwand, aber universeller wäre, Du würdest einen
> Referenzrechner aufsetzen und aus der Distro mit allem was Du noch
> installiert hast ein eigenes Installationsmedium erzeugen, quasi
> Deine eigene Distro machen.

Genau das habe ich vor; nur "eigene Distro" ist etwas übertrieben.

Daniel F. schrieb:
> wenn die Kisten komplett ohne Internet/Netzwerk dastehen, dann sollte
> auch ein einfacher Festplattenklon funktioniere?

Richtig. Aber warum wäre das mit Netzwerk anders?

> wenn die Kiste nicht kompatibel ist, dann startet das System
> eh nicht, sonst gehts.

Schön wär's, geradezu traumhaft. Praktisch startet das und auf den 
ersten Blick läuft alles, nur die ACPI Tabellen sind vermurkst und 
syslog wird mit Fehlermeldungen voll gemüllt. Oder so. PCs halt...

Beitrag #7640593 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.