Suche minimales BSD-Basissystem

soe

Member
Hallo BSD-Gemeinde,

ich bin noch ein Frischling in BSD-Themen. Vielleicht könnt ihr mir ein paar Tipps geben.
Ich möchte gerne ein minimales Basis-System erstellen, auf dem ich dann Systeme zu unterschiedlichen Zwecken
aufsetzen kann, z.B. Chatserver, Forenserver, Musikserver, Entwicklung o.ä.
Gibt es sowas in der Richtung?

Ich hatte es mal mit dem nanobsd versucht, dass ich aber nicht so recht verstehe. Es braucht in einer Virtualbox ewig zum booten und fragt in einer Schleife nach VLAN und WAN, was ich mit 'a' (=auto detection) bestätige. Da gehts aber nicht weiter. Ich kapiere nicht, was der von mir will :-/

Grüße
soe
 
Was du suchst, ist ein Standard BSD Release. FreeBSD, OpenBSD, NetBSD, Dragonfly BSD kommen alle nur in absolut notwendiger Grundausstattung daher, und deine Zwecke wie Chatserver, Forenserver, Musikserver, Entwicklung o.ä. muessen alle dann erst noch eingerichtet/installiert werden (ueber "pkg" oder den ports-tree).

NanoBSD waere zwar in der Tat noch schlanker (wenn entsprechend zusammengestellt), ist aber nicht wirklich fuer deine genannten Einsatzgebiete die erstbeste Loesung.

Fange mit einem der Standard-BSDs an (FreeBSD 10.1 wuerde ich dir nahelegen) und lerne erstmal das BSD selbst.
 
Ja, ich würde auch FreeBSD empfehlen, weil es sehr viel Dokumentation gibt. So extrem schnell bootet wohl keins der BSDs...
 
Als Ergänzung zu cla: Man kann das Basissystem aller BSDs mit mehr oder weniger Aufwand noch weiter verschlanken. Aber aus Erfahrung gesprochen schießt man sich damit nur selbst ins Bein und solange man sich nicht im sehr dünnen Embedded-Bereich mit sehr geringen Mengen Flashspeicher bewegt, ist es die Schmerzen nicht wert. Das System ist einfach darauf ausgelegt komplett installiert zu sein und wenn Komponenten fehlen, kommt es zu seltsamen, nervenden und gerade für Anfänger nur schwer nachvollziehbaren Effekten. Außerdem ist es im Zeitalter der Terabyte-SSDs egal, ob das System nun 50MB oder 150MB belegt.
 
Kann mich nicht zu hundert Prozent erinnern, aber ein i386er FreeBSD hatte ich (mit Hilfe von Anleitungen) mal auf ca 20MB gebracht.
Wozu das gut war, erinnere ich gar nicht mehr.
Beim 64Bit ist ja der Kernel schon viel größer und man braucht dann eh etwas mehr Platz.
Aber die Anwendungen und ihre Daten beanspruchen doch dann meist so viel mehr, dass das Betriebssystem darunter kaum ins Gewicht fällt. Das macht doch kaum Sinn, wenn ich eh wenigstens 10GB als Installationsmedium und für die anfallenden Daten nehme, mir nun einen dabei abzubrechen, von 500MB auf 300MB für das System zu reduzieren.
Wenn man genau weiß, was man will und alles zusammengebaut hat, dann kann man das ja immer noch reduzieren und ein komprimiertes Image daraus bauen, so in der Art eines Knoppix. Aber schon am Anfang etwas rausnehmen, das dann später vermisst wird, ist sicher nicht zu empfehlen.
 
Ich denke auch du solltes einfach mal mit einem normalen FreeBSD einsteigen. Der Wunsch nach "Minimalsystemen" kommt, meiner Erfahrung nach, oft daher, dass die Leute die vollgestopften Linux-Distributionen als Vergleich nehmen. Die BSDs sind vollwertige/umfängliche Systeme die meist wenig Balast mitbringen.
 
Hallo,

vielen Dank für die freundliche Unterstützung.

Bevor ich auf Eure Tipps eingehe, möchte ich zur Erklärung noch ein wenig ausholen. Ich bin C++ Entwickler und vielleicht ein wenig verrückt, aber ich implementiere privat das eine oder Andere selbst, obwohl bereits Standardsoftware zu dem jeweiligen Thema existiert.
Diverse Standard-Software geht mir dann doch irgendwann auf die Nerven und hält mich eher vom Ziel ab als das sie unterstützt.

Nun habe ich die Vorstellung, ein Minimalsystem aufzusetzen, dass erst mal fast nichts kann: Minimale Bootzeit, keine grafische Oberfläche, Netzwerkunterstützung, fertig. Keine Dienste im Hintergrund, keine Firewall, einfach nichts.

Dann habe ich den Wunsch, auf dieses Minimal-Basissystem z.B. einen Storage-Container aufzusetzen, der meine privaten Dokumente verschlüsselt aufnimmt. https://coreos.com und https://www.joyent.com gehen ja in die Richtung. Vielen Dank für einen weiteren Tipp: JetPack.

Ein weiterer Weg, der mich interessiert ist, in Echtzeit Samples zu mixen und über mehrere Channels auszugeben. Ich kann allerdings noch nicht einschätzen, ob FreeBSD eine geeignete Lösung dafür ist bzw. ob es hochwertige Soundkarten unterstützt. Ich habe irgendwo eine Treiber gesehen, der z.B. die HDSPe AIO von RME unterstützt.

Denkbar wäre so ein Basissystem auch für kleine Server auf dem RaspberryPI oder eine Grundlage für ein spionagefreies Smartphone-OS...

Nun zu euren Gedanken. FreeBSD 10.1 - das habe ich in VirtualBox installiert und bootet schon recht flott. Als Single-User mit Bash angemeldet wundere ich mich allerdings, dass das System Readonly ist. Eine der letzten Zeilen lautet:
"Trying to mount root from ufs:/dev/ada0p2 [rw]..."
Ein User in diesem Forum hatte das Problem auch und konnte das nicht lösen. Mit 10.0 trat das Problem bei ihm nicht auf.
Heute habe ich das 10.1 nochmal installiert, allerdings kommt beim booten "Uptime 1s" und VirtualBox rödelt da in irgendeiner Endlosschleife...

Was ich mir vorstelle, ist das, was http://minimal.linux-bg.org schafft: Wenn ich in VirtualBox den Startknopf drücke, dann ist der Bash-Prompt in 5 Sekunden da (auf einem älteren Quadcore-PC, kein i5/i7). Das ISO mit dem 64-Bit-Linux ist 8 MB groß. Allerdings gefällt mir die Lizenz unter Linux nicht. Daher suche ich nach einer BSD-Lösung.
Gibt es aktuelle Anleitungen, wie man ein FreeBSD selbst baut?

Gruß
soe
 
Nachgefragt:
was genau hast du installiert? Mir kommt der Gedanke, dass wir aneinander vorbei reden könnten.

Wenn ich in der Download-Seite nachsehe, finde ich dort neuerdings "Virtual Machine Images", die quasi einem Image einer Festplatte entsprechen. Die sehen von der Größe her so aus, als enthalten sie mehr als nur ein Basis-System.
Dagegen findest auch "Installer Images" und darunter gibt es noch immer die "....bootonly.iso". Diese bootonly's enthalten quasi ein Minimal-System.
Nach der Installation des bootonly hast du Kernel-von-FreeBSD und FreeBSD-User-Schicht und einige wenige Tools, um weiter installieren und konfigurieren zu können. Anders als bei Linux, wo du Linux (den Kernel) und GNU getrennt haben kannst, kommt FreeBSD immer als Einheit und stellt somit das Minimal-System dar. Dieses kann allerdings noch um einige Details verschlankt werden, doch das ist viel Arbeit und nicht wirklich sehr ergiebig.
Wenn wir hier von FreeBSD reden, dann meinen wir meist nicht mehr als eben genau dies, FreeBSD, den Kernel und "Arbeitsumgebung". Kein X, kein Sound, kein Desktop und so weiter. Insofern ist FreeBSD eben minimalistisch. Du musst es dann konfigurieren und weiter ausbauen.
Und ich vermute, dass du etwas anderes installiert hast.
Oder redest du davon, diesen ersten Schritt, die Basis, das FreeBSD, das aus dem bootonly kommt, dieses FreeBSD noch weiter zu verschlanken?
 
Die BSDs werden als vollständige Betriebssysteme entwickelt und das ist im Allgemeinen auch gut so. Linux ist nur ein Kernel und daher per se eine Bastellösung (und genau das ist es was du zu suchen scheinst)...

Ich würde dir zu LinuxFromScratch (http://www.linuxfromscratch.org/) raten. Damit kommst du sicher am nächsten an deine Vorstellung...

Ist die Lizenz denn ein echtes Problem (sprich du willst was kommerzielles bauen) oder ist es nur eine Gefühlssache?
 
noch was.
https://www.freebsd.org/doc/en/articles/nanobsd/
beschreibt die Funktionsweise von NanoBSD und wie es eingesetzt werden kann. Du kannst dir so ein eigenes Image bauen, das genau das macht, was du haben möchtest. Genau für Embedded-Zeugs ist das wie geschaffen, aber auch für eine unkaputtbare FreeBSD Version mit eigenen Anwendungen. Das könnte für deine Richtung durchaus interessant sein. (mit de statt en gibt es die auch in Deutsch),

Du sagst, "Als Single-User mit Bash angemeldet" und davor möchte ich waren. Der Single-User Modus ist nur ein Notbetrieb und wenn dir mal die Partition abschmiert, auf welcher die bash liegt, dann kommst du unter Umständen gar nicht ins System. Die Bash liegt in: /usr/local/bin/bash während (t)csh in /bin liegt. Deshalb sollte man root lieber nicht die bash als default shell geben. Und mir ist das tatsächlich schon mal passiert, das ist also keine bloße Theorie.
Im Single-User-Mode muss man alles, was man will und ändern möchte, manuell rw mounten. Unser mount geht etwas anders, als der Linux mount. Siehe MOUNT(8), speziell wegen remounten im rw Mode (mount -u -o... bei uns, bei Linux irgendwie anders).
 
>> was genau hast du installiert?
FreeBSD-10.1-RELEASE-amd64-dvd1.iso
Bei der Auswahl "Multi-User" stoppt der Bootvorgang nach kurzer Zeit mit "Uptime 1s".

>> Linux ist nur ein Kernel und daher per se eine Bastellösung (und genau das ist es was du zu suchen scheinst)
Das kann man so nicht sagen. Ich suche deshalb ein Minimalsystem, weil ich die teils GB großen Haufen an Software nicht nutze. System von SATA booten, USB, Netzwerk. Dann kommt Software von mir drauf, nichts Anderes (was eine größere Installation sonst ggf. rechtfertigen könnte).

>> Ich würde dir zu LinuxFromScratch (http://www.linuxfromscratch.org/) raten. Damit kommst du sicher am nächsten an deine Vorstellung...
Das würde mich eher Monate beschäftigen. Obwohl es sicher interessant wäre. Ich habe mir das vor Monaten mal angeschaut. Da ich dt. Anleitungen bevorzuge und die LFS-Anleitung nicht aktuell war, habe ich diesen Gedanken verworfen.

>> Ist die Lizenz denn ein echtes Problem (sprich du willst was kommerzielles bauen) oder ist es nur eine Gefühlssache?
Wenn man eine Familie hat, dann ziehen sich größere Hobbyprojekte lang hin. Sollte sich mal irgendwas über die Jahre hin positiv entwickeln, dann ist was Kommerzielles nie ausgeschlossen. Aber da rede ich von ungelegten Eiern. Es gibt immer wieder mal Phasen, wo ich das Thema OS aufgreife. Durch Zufall habe ich dieses deutschsprachige Forum (klasse!) entdeckt und die Gelegenheit genutzt, hier mal nachzufragen.

Danke für den nanoBSD-Link. Vielleicht komme ich damit weiter.

Gruß
soe

PS: In meiner ersten geglückten Installation ließ sich das Filesystem mit mount -uw / beschreiben.
 
komisch, ich hätte eher mit
# mount -uo rw /
gerechnet.

Habe nun keine Erfahrung mit neueren Versionen, aber vielleicht findest du Muße und testest mal ein bootonly.iso. Bin fast sicher, das macht dir eher das, was du willst. Grundsätzlich kann man bestimmt auch eine dvd.iso benutzen und nur das Basissystem damit installieren. Das weiß ich aber nicht mit Sicherheit, ich habe nie eine dvd.iso benutzt.
Was ich mir vorstelle ist, Installation aus dem bootonly, Konfiguration des Netzwerkes, weitere Grundkonfiguration, abholen der src und damit nanobsd.sh, Bau der zusätzlichen Wünsche und mittels einer angepassten Konf mit nanobsd ein Image schreiben. Das kann dann direkt auf ein Medium und booten. Oder gemountet werden, betrachtet oder verfrachtet und geändert, wie es notwendig erscheint. Alternativ können einzelne Schritte auch manuell durchgeführt werden, die nanobsd vormacht. Ob es noch weitere Möglichkeiten zur Verschlankung gibt, kann ich auch nicht sagen, denn ich habe nanobsd selbst nie eingesetzt. Nur der Weg würde mir eben so vorschweben.
Damit wäre deine FreeBSD Installation nicht die Lösung, sondern die Entwicklungsplattform für deine Embedded-Lösungen oder eben schmale Systeme.

Die englische Doku ist bei FreeBSD grundsätzlich besser und aktueller. Es ist trotzdem gut, dass es Deutsche Versionen gibt. Doch Details lieber aus dem Englischen nehmen.

Was ich oben nicht erwähnte, ist die Möglichkeit eines angepassten Kernels mit einer reduzierten Menge an Modulen. Das spart auch Platz, kann aber unter Umständen dann auf einen gewissen Anwendungsfall und eine einzige Plattform beschränkt sein. Früher habe ich so etwas immer unbedingt gewollt, heute genieße ich einfach den GENERIC wie er kommt und läuft und keine extra Arbeit macht.
 
Also: Im Vorfeld sollten dir zwei Dinge klar sein. Einmal, dass du mit keinem BSD die Bootzeit eines modernen Linux erreichen wirst. Die Linuxer haben sehr viel Zeit und Mühe in die Parallelisierung ihres Bootprozesses gesteckt, sowohl im Kernel als auch im Userland. Sie haben buchstäblich die letzte Millisekunde rausgeholt. Die BSDs hingegen booten alle streng sequentiell, sind zudem nicht so radikal auf Bootzeit optimiert. Mein Archlinux ist daher z.B. bereits hochgefahren, wenn FreeBSD noch im Loader hängt. Der andere Punkt ist, wie oben bereits gesagt, dass alle BSDs integrierte Systeme sind und das Entfernen einzelner Komponenten zwar möglich ist, aber totsicher in den Ports zu Problemen führen wird.

Nun gibt es verschiedene Wege:
  • NanoBSD wurde hier bereits genannt. NanoBSD ist noch relativ groß. Seine Vorteile liegen darin, dass es ein für die meisten Zwecke ausreichend großes Subset von FreeBSD darstellt und relativ gut getestet ist. Die meisten freie embedded Systeme auf FreeBSD-Basis (wie z.B. pfsense) legen NanoBSD zugrunde.
  • Wenn man noch kleiner werden will, ist die beste Vorgehensweise sind ein vollwertiges FreeBSD zu installieren und in der /etc/src.conf Teile des Systems auszuschließend. Anschließend wird es neu übersetzt und in einen dedizierten Pfad installiert. Von dort aus kann man dann weitermachen, indem man sich z.B. mit makefs(8) ein Image erstellt.
  • Wenn man durch ausschließen nicht mehr weiterkommt, kann man noch anders herum vorgehen. Also ein vorhandenes FreeBSD nehmen, beginnend beim Kernel einzelne Komponenten zusammenzukopieren. Mit ldd(1) prüfen, welche Bibliotheken man braucht und sie bereitstellen. So ein Vorgehen verlangt dann meist Anpassungen im rc-System, in den Linkerpfaden und so weiter.
  • Die Kür ist BSDBox. Ein eigener, angepasster und möglichst minimaler Kernel. Er kann zusätzlich noch mit bz2 komprimiert werden. Dazu ein komplett mit crunchgen(1) erstelltes Userland. Die gecrunchte Binary kann ebenfalls mit gzexe(1) komprimiert werden, aber da muss man nachrechnen, ob es sich in Anbetracht des Overheads lohnt. Damit kommt man mit etwas Geschick weiter unter 10 Megabyte. Schaue dafür in FreeBSDs Sourcen in tools/bsdbox.
 
  • Like
Reaktionen: lme
Mhmm... so dramatisch habe ich Unterschiede in der Bootzeit bisher nie erlebt. Habe auch schon (Schl-)Ubuntu auf einem Laptop gehabt und merke so gut wie keinen Unterscheid beim booten zwischen FreeBSD und Ubuntu... Ehrlich gesagt sind mir 5 sec. mehr Bootzeit völlig egal. Die einzige Machine wo das booten wirklich dauert ist ein 64 core AMD Supermico Server mit 512GB RAM hier am Lehrstuhl... aber das liegt am RAM...

Ich finde FreeBSD ist bei einer Steandard installation ein wirklich schlankes System. Hat was von einer Bikini Figur :-)

Cheers, Norbert
 
Ich weiß nicht was du unter einem minimalen System verstehst. Mein DragonflyBSD (x86_64, kein X) nimmt z.Z. 5.3 GB ein. Davon sind knapp 1 GB die system sources, pkg ist installiert und einige Entwicklungswerkzeuge die nicht gerade klein sind. Ansonsten nichts besonderes. Sicherlich kann man das beim kompilieren des Systems noch ein wenig optimieren und vielleicht einiges entfernen, aber ich denke nicht allzu viel.

PS: Sicherlich wird DragonflyBSD recht wenig verwendet, unterscheidet sich für den user aber nur wenig von FreeBSD. Obwohl ich BSD-Anfänger bin komme ich damit gut zurecht. Falls du also keinen Wert auf 32 bit legst ist es sicherlich eine interessante Alternative. Mein bisheriger Eindruck ist dass es stabiler ist als fbsd 10.1. Ich verwende z.Z. die develloper version und die läuft wie geschmiert...
 
DragonFly hatte ich gestern installiert. Dort komme ich zumindest bis zum Login ;-)
64 Bit ist für manche Anforderungen notwendig.
FreeBSD-10.1-RELEASE-amd64-bootonly.iso liefert beim booten ein "panic: running without device atpic requires a local APIC", einen Backtrace und "uptime 1s".
Ich habe langsam den Eindruck, dass VirtualBox irgendein Problem mit den ISO's von FreeBSD hat...
 
DragonFly hatte ich gestern installiert. Dort komme ich zumindest bis zum Login ;-)
64 Bit ist für manche Anforderungen notwendig.
FreeBSD-10.1-RELEASE-amd64-bootonly.iso liefert beim booten ein "panic: running without device atpic requires a local APIC", einen Backtrace und "uptime 1s".
Ich habe langsam den Eindruck, dass VirtualBox irgendein Problem mit den ISO's von FreeBSD hat...
Stell in Virtualbox mal in der VM unter "System" den Chipsatz von PIIX3 auf ICH9, oder anders herum, da kann es schon mal haken.
 
Hallo,

nur zur Info meiner Bemühungen: Mit BSD ist es mir nicht gelungen, ein BSD-Minimal-System zu erstellen. Zu Linux gibt es das Buch "Embedded Linux lernen mit dem Raspberry Pi". Damit schafft man einen guten Einstieg in den Bau eines Minimal-Systems. Ich habe mir ein Linux mit dem Kernel 4.1.3 gebaut, dessen Image für ein 64-Bit-Linux etwas über 2MB groß ist (32-Bit war ungefähr 1,2 MB) und ein paar Commands im Userland (BusyBox 1.23.2) beinhaltet. Das System bootet im Emulator QEmu in ca. einer Sekunde. Das motiviert zum Weiterforschen :-)

Viele Grüße
soe
 
Crunchgen geht in die Richtung, wie das Linux/Busybox macht. Als Beispiel waeren die Soekris-CF installs zu nennen, wo man auch mit wenigen MB auskommt und ein "ausreichendes" OpenBSD hat.
 
Hallo, wg. Urlaub eine kleine Unterbrechung...

An was bist Du den gescheitert?
An einer fehlenden Anleitung zum Bau eines Minimal-Systems. Wenn man einige Jahre Erfahrung mit BSD hat, dann ist so ein Vorhaben mit etwas Vorwissen sicher machbar. Ohne BSD-Kenntnisse und nur mit Linux-Wissen war das Ziel (sicher etwas naiv) zu hoch angesetzt.

@IME, double-p
Vielen Dank für Eure Hinweise. Das werde ich mir mal anschauen.
 
Zurück
Oben