Linux Forum Schweiz
Alles rund um Linux

Startseite » Andere Betriebssysteme » Alternativen zu Linux » freeBSD (nanoBSD)
freeBSD (nanoBSD) [Beitrag #2631] So, 01 Mai 2016 18:31 Zum nächsten Beitrag gehen
ri0t ist gerade offline  ri0t
Beiträge: 13
Registriert: April 2016
Ort: Bern
Junior Member
Da dieses Forum etwas leer ist, möchte ich hier meinen ersten Beitrag erstellen. Wie im Titel beschrieben, geht es um nanoBSD und ein paar nützlichen Tools.

Auf der Suche nach einem schlanken BS für meine Telefon- Richtfunkanlagen bin ich auf NanoBSD gestossen welches unter anderem auch bei monowall und pfsense zum Einsatz kommt.

Hier ein paar Dinge die ich an nanoBSD einfach genial finde:

> CARP (failover)
> JAIL (ähnlich zu CHROOT)
> Funktionalität wie in freeBSD
> während Laufzeit alles read only
> geniale Update Möglichkeit (zwei Images, eines in Betrieb)
> Securelevel

Bei jeder freeBSD Installation befindet sich unter </usr/src/tools/tools/nanobsd> ein script namens nanonsd.sh. Damit lassen sich angepasste Images bauen, welche auf eine SD oder CF Karte passen.
Diesem Script übergibt man eine Config Datei, welches benutzerdefinierte Anpassungen wie z.B. Kerneloptionen enthält.

Als Hardware verwende ich Boards der Firma pcengies.ch. Den Kernel habe ich auf die Hardware dieser (ALIX/APU) angepasst. Für die Telefonanalge (Asterisk/Freeswitch/Kamailio) kommen Jails zum Einsatz.
So ist das Updaten der eigentlichen Dineste, somit der Jails sehr einfach, ohne das Grundsystem tauschen zu müssen und bietet zudem ein gwisses Mass an Sicherheit.

Um zwei Anlagen parallel im Failover zu betreiben kommt CARP zum Einsatz. Diese Modul ist einfach zu konfigurieren und erkennt automatisch einen Ausfall und sorgt für die Umschaltung der IP auf das andere Gerät.
Mit csync2 werden alle notwendigen Konfig Dateien regelmässig synchronisiert.

Da alles read only gemountet wird, ist ein Stromausfall keine grosse Sache und ein fsck wird praktisch nicht mehr benötigt. Werden Konfig Files geändert, können mit einem einfachen sh save_cfg diese permanent gesichert werden.

Ein Update kann problemlos über SSH eingespielt werden. Nach einem Neustart wird automatisch die zweite Partition geladen. Sollte etwas schief gegangen sein, kann man zur alten Version wechseln.

Monit, ein Systemüberwachnungsmonitor sorgt dafür, dass ale Dienste laufen und startet diese, wenn nötig neu.

Im nächsten Beitrag werde ich ein paar Konfig Files zum bauen für ALIX/APU Images bereit stellen.


Ich hoffe ich kann ein paar Leser dafür begeistern.

Sollte jemand Wünsche für spezielle Hardware haben, dann bitte melden!

Lg ri0t




Aw: freeBSD (nanoBSD) [Beitrag #2635 ist eine Antwort auf Beitrag #2631] Mi, 04 Mai 2016 15:45 Zum vorherigen Beitrag gehenZum nächsten Beitrag gehen
ri0t ist gerade offline  ri0t
Beiträge: 13
Registriert: April 2016
Ort: Bern
Junior Member
Also hier mal eine Config Datei zum erstellen eines freeBSD Images für die APU1 Serie

APU1.conf

NANO_NAME=APUJ
NANO_SRC=/usr/src
NANO_KERNEL=KERNELX64x
NANO_IMAGES=2
NANO_IMGNAME=NanoBSD.img
NANO_DRIVE=ada0		# SSD
#NANO_DRIVE=da1		# USB

NANO_BOOTLOADER="boot/boot0"
NANO_BOOTCFG="-o nopacket -s 1 -m 3"

#  APU  Disksize
NANO_MEDIASIZE=11566800 # 6GB gesamt Speicher (2 Images)
NANO_HEADS=255
NANO_SECTS=63
NANO_RAM_ETCSIZE=19532	# 10 MB /etc
NANO_TMP_VARSIZE=19532	# 10 MB /var

CONF_INSTALL='
WITHOUT_ACPI=YES
WITHOUT_APM=YES
WITHOUT_AT=YES	 
#WITHOUT_ATM=YES	#LOGIN
WITHOUT_BSD_CPIO=YES
#WITHOUT_BSNMP=YES	#LOGIN
#WITHOUT_CDDL=YES	#LOGIN
WITHOUT_CPP=YES		
WITHOUT_CVS=YES
#WITHOUT_CXX=YES	# devd <f. CARP>
WITHOUT_DICT=YES
WITHOUT_FLOPPY=YES
WITHOUT_FREEBSD_UPDATE=YES	# eventuell mit PKG ein Problem
WITHOUT_GAMES=YES
#WITHOUT_GCOV=YES	#LOGIN
WITHOUT_GDB=YES
WITHOUT_GNU_GREP=YES
WITHOUT_GROFF=YES	
WITHOUT_INFO=YES
WITHOUT_INSTALLLIB=YES
#WITHOUT_IPX=YES		#LOGIN / NETSTAT
WITHOUT_LPR=YES
WITHOUT_MAKE=YES
WITHOUT_MAN=YES
#WITHOUT_NETGRAPH=YES		#NETSTAT
#WITHOUT_NIS=YES
WITHOUT_NLS=YES
WITHOUT_PKGTOOLS=YES
WITHOUT_PPP=YES
WITHOUT_WIRELESS=YES
WITHOUT_TOOLCHAIN=YES
WITHOUT_TELNET=YES
WITHOUT_BLUETOOTH=YES
WITHOUT_FORTRAN=YES
WITHOUT_HTML=YES
WITHOUT_LPR=YES
WITHOUT_MAN=YES
WITHOUT_SENDMAIL=YES
WITHOUT_SHAREDOCS=YES
WITHOUT_EXAMPLES=YES
WITHOUT_INSTALLLIB=YES
WITHOUT_CALENDAR=YES
WITHOUT_MISC=YES
WITHOUT_SHARE=YES
WITHOUT_CLANG=YES
WITHOUT_GNU=YES
WITHOUT_HTML=YES
WITHOUT_OBJC=YES
WITHOUT_SHAREDOCS=YES
WITHOUT_PROFILE=YES

'


cust_nobeastie() (
	touch ${NANO_WORLDDIR}/boot/loader.conf
	echo "beastie_disable=\"YES\"" >> ${NANO_WORLDDIR}/boot/loader.conf
	echo "comconsole_speed=\"115200\"" >> ${NANO_WORLDDIR}/boot/loader.conf
	echo "boot_silent=\"YES\"" >> ${NANO_WORLDDIR}/boot/loader.conf
	echo "kern.cam.boot_delay=\"5000\"" >> ${NANO_WORLDDIR}/boot/loader.conf	
	)

cust_install() (
	cp /etc/resolv.conf ${NANO_WORLDDIR}/etc/
	pkg -c ${NANO_WORLDDIR} update
	pkg -c ${NANO_WORLDDIR} install -y nano

cust_cleanup() (
	rm -r ${NANO_WORLDDIR}/var/cache/pkg/*
	rm -r ${NANO_WORLDDIR}/var/db/*	
)


customize_cmd cust_comconsole
customize_cmd cust_allow_ssh_root
customize_cmd cust_nobeastie
customize_cmd cust_install
customize_cmd cust_cleanup
customize_cmd cust_install_files



Und hier noch eine passende kernel Konfig:

KERNELX64x

ident	KERNELX64
machine	amd64
cpu	HAMMER

#makeoptions	WITH_CTF=1
#makeoptions	DEBUG=-g
#options	USB_DEBUG
options	CONSPEED=115200
options	SC_PIXEL_MODE
options	SMP
options	KDB_TRACE
options	KDB
options	DUMMYNET
options	IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=5
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERT
options	TMPFS
options	UNIONFS
#options EXT2FS
options	INCLUDE_CONFIG_FILE
options	DDB_CTF
options	KDTRACE_HOOKS
options	KDTRACE_FRAME
options	MAC
options	PROCDESC
options	CAPABILITIES
options	CAPABILITY_MODE
options	AUDIT
options	HWPMC_HOOKS
options	KBD_INSTALL_CDEV
options	PRINTF_BUFR_SIZE=128
options	_KPOSIX_PRIORITY_SCHEDULING
options	SYSVSEM
options	SYSVMSG
options	SYSVSHM
options	STACK
options	KTRACE
options	SCSI_DELAY=15000
options	GEOM_LABEL
options	GEOM_RAID
options	GEOM_PART_GPT
options	PSEUDOFS
options	PROCFS
options	MSDOSFS
options	NFS_ROOT
options	NFSLOCKD
options	NFSD
options	NFSCL
options	MD_ROOT
options	QUOTA
options	UFS_GJOURNAL
options	UFS_DIRHASH
options	UFS_ACL
options	SOFTUPDATES
options	FFS
options	SCTP
options	TCP_OFFLOAD
options	ACCEPT_FILTER_DATA
options	ACCEPT_FILTER_HTTP
options	INET
options	PREEMPTION
options	SCHED_ULE
options	NEW_PCIB
options	GEOM_PART_MBR
options	GEOM_PART_EBR_COMPAT
options	GEOM_PART_EBR
options	GEOM_PART_BSD
device	isa
device	mem
device	io
device	uart_ns8250
device	cpufreq
device	acpi
device	pci
device	iicbus
device	iicbb
device	gpio
device	gpioiic
device	gpioled
device	fdc
device	ahci
device	ata
device	scbus
device	ch
device	da
device	sa
device	cd
device	pass
device	hptmv
device	cbb
device	pccard
device	cardbus
device	uart
device	ppbus
device	puc
device	miibus
device	re
device	rl
device	loop
device	random
device	ether
device	tun
device	md
device	firmware
device	bpf
device	uhci
device	ohci
device	ehci
device	xhci
device	usb
device	umass
#device	sound
#device	snd_uaudio
device	mmc
device	mmcsd
device	sdhci
device	virtio
device	virtio_pci
device	virtio_blk
device	virtio_scsi
device	virtio_balloon
device  carp
device  pty
device  vlan
device  lagg


Beim ersten mal wie folgt aufrufen:

sh nanobsd.sh -c APU1.conf

Dauert danach etwas, da das ganze Buildworld erstellt wird.

Nach dem ersten Durchlauf kann, sollte sich beim Kernel nichts ändern folgender Befehl abgesetzt werden.

sh nanobsd.sh -b -c APU1.conf

Somit wird der Schritt buildworld und make Kernel übersprungen. Das ganze geht dann etwas schneller.

Bei Fragen bitte melden.

Danach das Image mit dd auf die SD/SSD/USB. Dabei achten, dass in der Konfig Datei das richtiger Laufwerk angegeben wird.

> ada0 = ssd
> da0 = sd Karte
> da1 = USB Stick

Das ganze wurde mit freebSD 10.1, 10.2 und 10.3 getestet.

Gruss ri0t

[Aktualisiert am: Mi, 04 Mai 2016 15:47]

Den Beitrag einem Moderator melden

Aw: freeBSD (nanoBSD) [Beitrag #2636 ist eine Antwort auf Beitrag #2635] Mi, 04 Mai 2016 16:45 Zum vorherigen Beitrag gehen
ri0t ist gerade offline  ri0t
Beiträge: 13
Registriert: April 2016
Ort: Bern
Junior Member
für die APU2C Boards sollten folgende Einträge in der KERNELX64x eingefügt werden:

device igb        #Intel Lan
device crypto     #AES-Ni Support für den AMD CPU
device aesni

#device	re        #Kann man auskommentieren, wäre für die Realtek LAN Karten der 1 Version



Ungetestet! Habe noch kein APU2 Board getestet!

Gruss ri0t
Gehe zum Forum:
  


aktuelle Zeit: So Nov 24 05:19:40 CET 2024

Insgesamt benötigte Zeit, um die Seite zu erzeugen: 0.00359 Sekunden