freeBSD (nanoBSD) [Beitrag #2631] |
So, 01 Mai 2016 18:31 |
|
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 |
|
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
|
|
|
|