Racoon / Pureftpd in die HorstBox integrieren (Beispiele)

kfeilke

Neuer User
Mitglied seit
21 Mrz 2007
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich habe in der letzten Woche mit der Developer DVD den IPSEC-Client/Server Racoon und den FTP-Server Pureftpd in ein Image integriert.

Sofern jemand das gern als Beispiel haben möchte, kann ich diese kleine Modifikation hier gern beschreiben.

Also:
- Wie erstellt man einfach ein Makefile für die Crosscompile-Toolchain
- Wie fügt man dieses in den Makeprozess ein

Sofern jemand Interesse hat, kann er sich ja hier gern melden.
 
Ich denke, eine kurze generische Anleitung wäre nicht schlecht. Also eine Anleitung, die einfach beschreibt, wie man ein Softwarepaket, das sich normalerweise durch

Code:
# tar xzf paketname.tar.gz
# cd paketname
# ./configure
# make
# make install

auf einem Linux-System installieren läßt, in das Build Environment integriert werden kann. Maxina hat ja im Grunde schon viel automatisiert, man muß nur wissen, wo man sein Paket hinzufügen muß.

Henning
 
finger nach oben streck und hier rufe :)
 
IPSEC / Pureftpd Integration (Beispiel)

Ich werde hier kurz meine Anpassungen zur Integration des Pureftpd und zur Integration des Racoon beschreiben. Die folgende Beschreibung soll das Vorgehen nur schematisch beschreiben. Sofern jemand genauere Informationen wünscht, kann ich Teile gern detaillierter beschreiben. Wenn jemand Probleme bei der Übertragung dieses Konzepts auf sein Modul haben sollte, kann ich gern auch einmal auf die Konfiguration / Modifikation gucken.

Zunächst erstellen wir für die beiden Module ein Make-Skript in build_env/scripts/

Pureftpd (ftpd.mk):

#
# FTPD (by Karsten Feilke 28.2.2007)
#

$(FTPD_DIR)/Makefile:
cd $(FTPD_DIR) && ./configure --host=armeb-linux --target=armeb-linux --prefix=$(ROOTFS)

ftpd_%: $(FTPD_DIR)/Makefile
$(MAKE) -C $(FTPD_DIR) $(subst build,all,$(subst ftpd_,,$@))


Hier eine kleine Erklärung:
Hier wird die Zielarchitektur gesetzt und mit --prefix legt man im wesentlichen das Installationsverzeichnis fest. In diesem Fall installieren wir in das Rootfs der HorstBox. Das Rootfs ist die Grundlage für das zukünftige Image.
ftpd_% nimmt alle Make-Targets entgegen die sich auf den ftpd beziehen. Zum Beispiel fängt diese Marke ein make ftpd_build oder ftpd_install auf. Die "subst-Operationen" sorgen einfach für eine geeignete Weiterleitung an
das Modul-Makefile. Wir wollen im Modulverzeichnis schließlich kein make ftpd_build, sondern ein make all ausführen. Der "ftpd_" Anteil ist eigentlich nur zur Differenzierung innerhalb der übergeordneten Makefiles gedacht.

Racoon (ipsec.mk)

#
# IPSEC TOOLS (by Karsten Feilke 28.2.2007)
# Performance Test (Racoon)
#

$(IPSEC_DIR)/Makefile:
cd $(IPSEC_DIR) && ./configure --host=armeb-linux --target=armeb-linux --prefix=$(ROOTFS) --with-flex=$(FLEX_DIR) --with-flexlib=$(FLEX_DIR)/libfl.a

ipsec_%: $(IPSEC_DIR)/Makefile
$(MAKE) -C $(IPSEC_DIR) $(subst build,all,$(subst ipsec_,,$@))

Racoon (flex.mk - Hilfstool)

#
# IPSEC TOOLS (by Karsten Feilke 28.2.2007)
# Performance Test (Racoon)
#

$(FLEX_DIR)/Makefile:
cd $(FLEX_DIR) && ./configure --host=armeb-linux --target=armeb-linux --prefix=$(ROOTFS)

flex_%: $(FLEX_DIR)/Makefile
$(MAKE) -C $(FLEX_DIR) $(subst build,all,$(subst flex_,,$@))

In einem zweiten Schritt tragen wir die Verzeichnisvariablen in die Datei config.mk ein:

.....
FTPD_DIR = $(PWD)/ftpd
FLEX_DIR = $(PWD)/flex-2.5.4
IPSEC_DIR = $(PWD)/ipsec-tools-0.6.6
IPSEC_SRC = $(IPSEC_DIR)/src
.....

Jetzt müssen wir nur noch dafür sorgen, dass der Quellcode auch in den definierten Verzeichnissen verfügbar ist. Also besorgen wir uns den Quellcode für die Pureftpd und extrahieren diesen in build_env/ftpd. Somit muss in diesem Verzeichnis auch das Makefile liegen. Die Racoon Einträge zeigen, dass die Dateien zwar in dem Verzeichnis build_env/ipsec-tools-0.6.6 liegen, die eigentlichen Sourcen und das Makefile aber in dem Unterverzeichnis "ipsec-tools-0.6.6/src" liegen. Flex möchte ich an dieser Stelle nicht weiter betrachten, da es nur ein nötiges Zusatzmodul ist, und zur Demonstration nicht weiter beitragen muss.

Jetzt müssen wir die Module nur noch im Haupt-Makefile bekannt machen:

build_env/Makefile

Wir fügen die drei Skripte in das Haupt-Makefile ein (einfach unter die anderen):

+include scripts/ipsec.mk
+include scripts/flex.mk
+include scripts/ftpd.mk

Nachdem wir ein make im build_env/ ausgeführt haben, können wir nun
mit:

make ipsec_build (Racoon kompilieren)
make ftpd_build (Pureftpd kompilieren)

Warum wird zunächst ein make im build_env/ Verzeichnis ausführen?
- Make erstellt sämtliche HorstBox Module. Somit wird auch die Crosscompile-Toolchain erzeugt, die natürlich nötig ist. Man kann sich an dieser Stelle das Makefile einmal genauer angucken, und einfach nur die Toolchain erzeugen (will ich aber jetzt hier nicht machen).

Anschließend kann man die Dateien auch in das Rootfs installieren (für das Image):

make ipsec_install (Racoon installieren)
make ftpd_install (Pureftpd installieren)

Das kann man relativ einfach automatisieren, wenn man die Module immer in das Image aufnehmen möchte:

Sie suchen nach folgender Zeile im build_env/Makefile und fügen Ihre Module hinzu.

addons := ledman ledcfg apps mhttpd rcmd wpost board_cfg
addons += board_reset zaptel zaphfc si3210 asterisk mpg123
addons += BiST samba printserv blackfin ipsec ftpd

Bei einem erneuten make würde nun auch ein ipsec_build, ipsec_install, ftpd_build und ftpd_install ausgeführt.

Vernachlässigt habe ich: Die IPSEC-Tools brauchen bestimmte kryptographische Erweiterungen der Kernel-Konfiguration. Diese können,
wie bei jedem Kernel, einfach in die Kernel-Konfiguration aufgenommen werden.
Die Kernel-Konfiguration finden Sie in "build_env/configs/kernel26_config".
 
Zuletzt bearbeitet:
Danke :) :) :)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.