Emerge über NFS auf anderem Rechner ausführen

Gentoo-Blog Ersatz

Moderator:el_hakim

Antworten
Benutzeravatar
el_hakim
Beiträge:1119
Registriert:09.08.2007, 13:53
Kontaktdaten:
Emerge über NFS auf anderem Rechner ausführen

Beitrag von el_hakim » 15.05.2009, 12:23

Um Gentoo-Systeme auch auf langsamen Rechner ohne großen Zeitaufwand aktuell zu halten, kann man die nötigen compile-Vorgänge ohne großen Aufwand auch auf einem anderen Rechner laufen lassen. Eine Möglichkeit ist z.B. das Root-Filesystem des langsamen Rechners per NFS zu exportieren, auf einem schnelleren Rechner zu mounten und per chroot die entsprechenden emerge-Vorgänge zu starten.
Damit das funktionieren kann, muss der schnellere Rechner allerdings binärkompatibel zu dem langsamen System sein. Kurz, die CPU muss die Binaries des langsamen Rechners ausführen können.
Weitere Vorraussetzung: NFS muss eingerichtet sein und funktionieren. Des weiteren sollte die Netzwerkverbindung zw. beiden Rechner einigermaßen schnell sein, da viele Daten hin und her gehen werden. Also langsames WLAN ist nicht zu empfehlen.

1. Schritt: Root-Filesystem des langsamen Systems exportieren

Dazu wird in der /etc/exports folgendes ergänzt:

Code: Alles auswählen

/     <ip_fast>(rw,no_root_squash,sync,no_subtree_check)
Wobei <ip_fast> mit der IP-Adresse oder dem Hostnamen des schnellen System zu ersetzen ist. Danach kann mit exportfs -a oder /etc/init.d/nfs restart der neue Export aktiviert werden.

2. Mounten des Root-Filesystem auf dem schnellen System

(Alle weiteren Aktionen erfolgen jetzt auf dem schnellen System)

Code: Alles auswählen

mount <ip_slow>:/ <mntpoint> -o rsize=1024,wsize=1024,rw,nolock
<ip_slow> ist dabei der Hostname des langsamen Systems.

3. /proc und /dev mounten

Um ein funktionierendes Root-FS zu bekommen müssen noch proc und dev mit Leben erfüllt werden:

Code: Alles auswählen

mount -o bind /dev <mntpoint>/dev
mount -t proc none <mntpoint>/proc
4. Beschleunigen: Lokales tmp-Verzeichnis und distfiles benutzen

Damit nicht unötig Daten zwischen den System hin und her geschaufelt werden, empfiehlt es sich, das Portage-Tmp lokal auf dem schnellen System vorzhalten, sowie auch den Distfiles-Ordner des schnelleren System zu benutzen:

Code: Alles auswählen

mount -o bind /var/tmp/portage <mntpoint>/var/tmp/portage
mount -o bind /usr/portage/distfiles <mntpoint>/usr/portage/distfiles 
5. chroot

Nun kann das chroot in das gemountete Root-FS des langsamen Systems ausgeführt werden:

Code: Alles auswählen

chroot <mntpoint>
Handelt es sich bei dem schnellen System um ein 64-Bit bei dem langsamen um ein 32-Bit System, empfiehlt sich allerdings die Verwendung von linux32 um Probleme mit Paketen zu vermeiden, die zur Kompile-Zeit die Systemsarchitektur abfragen:

Code: Alles auswählen

linux32 chroot <mntpoint>
6. Laufzeitumgebung laden

Nun muss im chroot-Jail noch die Laufzeitumgebung des langsamen Systems geladen werden:

Code: Alles auswählen

source /etc/profile; env-update
7. Emerge

Jetzt können beliebige emerge-Vorgänge in der chroot-Umgebung für das langsame System auf dem schnellen System ausgeführt werden. Je nach Leistungsunterschied der beiden System ist hier ein erheblicher Geschwindigkeitsvorteil zu erzielen. Einige wenige Pakete lassen sich nicht übersetzen. Die muss man dann auf dem langsamen System nochmal seperat durchlaufen lassen.

Um die chroot-Umgebung zu verlassen, reicht ein einfaches exit. Danach kann man das Root-Fs des langsamen System wieder sauber aushängen, in man einfach alle umounts in der umgekehrten Reihenfolge der mounts ausführt.
Ubuntu: African word meaning "Gentoo is to hard for me"

Benutzeravatar
cminke
Beiträge:691
Registriert:09.08.2007, 14:27
Kontaktdaten:

Re: Emerge über NFS auf anderem Rechner ausführen

Beitrag von cminke » 19.06.2009, 09:52

...da mein Rechner neuerdings sooo gern abstürzt wenn er mal was zu tun bekommt
ergibt sich folgende Frage:

"Gibt es eine theoretische Möglichkeit remote als Gast (SSH) auf einem entfernten PC
einen solchen Vorgang zu starten?"

Erstes Problem ist das mount --bind, scheint aber auch Möglichkeiten zu geben (?!?)
http://sws.dett.de/knowledgebase/tech/msg00065.html

:cm
Kontrolle kann man kaufen, Sicherheit nicht.(fluter)

Benutzeravatar
el_hakim
Beiträge:1119
Registriert:09.08.2007, 13:53
Kontaktdaten:

Re: Emerge über NFS auf anderem Rechner ausführen

Beitrag von el_hakim » 19.06.2009, 09:58

cminke hat geschrieben:Gibt es eine theoretische Möglichkeit remote als Gast (SSH) auf einem entfernten PCeinen solchen Vorgang zu starten?"
Das wird schwierig. Wie du schon bemerkt hast, braucht man für einen Großteil der Befehle Root-Rechte.
cminke hat geschrieben:Erstes Problem ist das mount --bind, scheint aber auch Möglichkeiten zu geben (?!?)http://sws.dett.de/knowledgebase/tech/msg00065.html
Wobei es hier um bind - den Domain-Name-System-Server und nicht um bind - die Mountoption geht, :).

Ich werd' bei Gelegenheit mal drüber nachdenken.
Ubuntu: African word meaning "Gentoo is to hard for me"

Antworten