Emerge über NFS auf anderem Rechner ausführen

Gentoo-Blog Ersatz

Moderator: el_hakim

Post Reply
User avatar
el_hakim
Posts: 1110
Joined: 09.08.2007, 13:53
Contact:

Emerge über NFS auf anderem Rechner ausführen

Post by 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: Select all

/     <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: Select all

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: Select all

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: Select all

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: Select all

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: Select all

linux32 chroot <mntpoint>
6. Laufzeitumgebung laden

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

Code: Select all

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"

User avatar
cminke
Posts: 683
Joined: 09.08.2007, 14:27
Contact:

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

Post by 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)

User avatar
el_hakim
Posts: 1110
Joined: 09.08.2007, 13:53
Contact:

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

Post by el_hakim » 19.06.2009, 09:58

cminke wrote: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 wrote: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"

Post Reply