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".