Re: crosscompile FreeBSD i386

From: Bernd Walter <ticso(at)cicely7.cicely.de>
Date: Fri, 11 Mar 2011 19:31:20 +0100

On Fri, Mar 11, 2011 at 04:37:26PM +0100, Oliver Fromme wrote:
> Matthias Teege wrote:
> > Oliver Fromme wrote:
> > > Es geht natürlich auch ganz ohne NFS: Zunächst alles auf
> > > dem Buildserver in ein temporäres Verzeichnis installieren
> > > (»make DESTDIR=/... install...«), und dieses dann auf den
> > > Client kopieren (per cpdup, cpio, tar, was auch immer).
> >
> > also das gefällt mir am besten :-) Meinst Du so was wie:
> >
> > build# cpdup -o -j0 /export/i386/ client:/
>
> Ja, im Prinzip ...
>
> > Ich habe es probiert und es geht (vermutlich Glück), sieht aber wie ein
> > Holzhammer aus. Vermutlich ist es besser, erst den neuen Kernel zu
> > kopieren und danach das Userland zu ersetzen.
>
> Ja, ganz so wie oben hätte ich mich's nicht getraut. :-)
>
> Aber wenn das Zielsystem idle ist, kann man wohl tatsäch-
> lich Glück haben. Auch Minor-Updates (8.x --> 8.y) sollten
> in der Hinsicht relativ problemlos sein, weil sich in dem
> Fall an der ABI normalerweise nichts ändert, d.h. es kommen
> keine neuen Syscalls hinzu oder so.
>
> Pech kann man bei einem Major-Update haben (7.x --> 8.y),
> wenn Binaries vor dem neuen Kernel installiert werden, die
> dann versuchen, Syscalls zu verwenden, die der laufende
> (alte) Kernel noch nicht kennt.
>
> Faustregel daher: Immer erst den neuen Kernel installieren
> und booten, dann den ganzen Rest. Und während des Updates
> auf dem Zielsystem keine neuen Prozesse starten, d.h. die
> Kiste sollte wirklich idle sein.

Es geht nicht nur um neu gestartete Prozesse.
Man sollte sich auch darüber im klaren sein womit man kopiert,
weil eine Shell, mit der man sich gerade eingelogged hat, um das
kopieren zu starten, oder der Kopierbefehl selber auch crashen kann,
wenn die Binaries überschrieben werden.
Das kann durchaus dazu führen, dass mitten beim kopieren auf einmal
plötzlich ausgesperrt wird und man ein inkosistentes nicht mehr
lauffähiges Userland hat.
Ich spreche da aus Erfahrung...
install -C hingegen überschreibt keine Dateien, sondern legt neue an,
womit verhindert wird, dass die gerade laufenden Prozesse beeinträchtigt
werden.
Wenn die Zielmaschine hingegen NFS-Server ist, dann läuft alles
wesentliche, um bis zum Ende durchzukommen, im Kernel und ist damit
unabhängig von den Files.
NFS kann allerdings keine immuteable Flags verändern, weswegen man
sich vorhher darum kümmern muss, dass im Ziel keine stören.
Ein weiterer Nachteil vom nachträglichen rüberkopieren ist, dass
man so keine Sicherungen vom linkloader und diversen anderen sensiblen
Binaries bekommt.

> Normalerweise wird ja auch empfohlen, das Ganze im Single-
> user-mode zu machen, allerdings muss man dann die Datei-
> systeme manuell mounten, das Netzwerk starten, den sshd
> starten (damit cpdup funktioniert), und evtl. noch ein
> paar andere Dinge, die mir gerade nicht einfallen. Da
> mag es einfacher sein, in den Multi-user-mode durchzu-
> booten, vorausgesetzt man stellt sicher, dass das System
> ansonsten weitestgehend idle ist, indem man alle über-
> flüssigen Daemonen disabled bzw. killt.

-- 
B.Walter <bernd@bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 11 Mar 2011 - 19:31:41 CET

search this site