1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Minimaler Kernel

Dieses Thema im Forum "FreeBSD - Installation" wurde erstellt von raiding, 12 März 2017.

  1. raiding

    raiding Member

    Registriert seit:
    9 April 2011
    Beiträge:
    60
    Guten abend, die Herrschaften.

    Ich bin grad dabei einen neuen Kernel für mein System zu bauen, bin aber nicht wirklich 100%ig sicher, wie weit ich diesen dabei straffen kann ..

    Beispielsweise benutze ich ZFS auf geli ... kann ich dann jetzt im Kernel alle UFS-Klamotten rausschmeißen? NFS möchte ich auch loswerden. Aber ich werde bei google nicht wirklich fündig ... ich weiß jetzt zwar, was manche Optionen bewirken, jedoch habe ich keinen Schimmer, ob FBSD manche Optionen von 1992 noch wegen diver aktueller Abhängigkeiten noch benötigt und dann knartschig wird nachdem ich sie herausgenommen habe ...

    Gibt es da FAQs/HOWTOS/sonstige Ankerpunkte? Oder muss ich alles via "trial and error" herausfinden?

    LG raiding
     
  2. chaos

    chaos *nix'ler

    Registriert seit:
    22 Juli 2003
    Beiträge:
    829
    Ort:
    München
    @Yamagi hat mal im IRC erzählt, dass er eine minimale Kernelkonfiguration hat, wo möglichst alles als Modul ausgelagert ist.
     
  3. mogbo

    mogbo Does it run under Windows? Who cares?

    Registriert seit:
    12 September 2016
    Beiträge:
    316
    Jo, gabs von kurzem von Ihm auch einen Kommentar zu:

     
  4. Yamagi

    Yamagi Possessed With Psi Powers Mitarbeiter

    Registriert seit:
    14 April 2004
    Beiträge:
    8.655
    Ort:
    Schleswig-Holstein
    Auf meinem Desktop benutze ich die aus sentimentalen Gründen noch, auf anderen Systemen nicht mehr. :) Man muss sich klar machen, dass man durch einen kleineren Kernel eigentlich nichts gewinnt, von ein paar Megabyte eingesparten RAM mal abgesehen. Technisch gesehen sind es immer Module, egal ob fest eingebaut oder in einer eigenen Datei. Bei Boot werden die Attach-Routinen aller vorhandenen Module aufgerufen, wenn die Routine greift, wird das Modul anschließend genutzt, ansonsten ist es halt toter Code... Thereotisch kann man zwar Module aktualisieren ohne das System neuzustarten, in der Praxis scheitert das aber fast immer daran, dass man entweder gleich ein volles Kernelupdate braucht, die Module nicht entladen bekommt ("Module is busy" oder so) oder sie sich so tief in den Kernel graben, dass nach dem Neuladen Dinge nicht mehr sauber funktionieren.

    Dennoch, die Kernel-Config. Die DEFAULTS Datei muss leer sein, sonst klappt das nicht:
    Code:
    # Minimale Kernelkonfiguration fuer FreeBSD.
    # Der gebaute Kernel enthaelt das absolute
    # Minimum an Funktionalitaet, alles weitere
    # muss per Modul geladen werden.
    
    # ------------------------------------------ #
    
    # 1. Allgemeine Dinge
    # -------------------
    
    # Der Kernelname. Taucht u.a. in der dmesg
    # und in der Ausgabe von uname(1) auf.
    ident  PINE
    
    # Architektur.
    machine  amd64
    
    # CPU-Typ.
    cpu  HAMMER
    
    # Wir wollen einen SMP-Kernel bauen.
    options  SMP
    
    # Und natuerlich NUMA sprechen
    options     DEVICE_NUMA
    
    # Diese Konfiguration (ohne Kommentare)
    # ins Kernel-Image einbinden.
    options  INCLUDE_CONFIG_FILE
    
    # ------------------------------------------ #
    
    # 2. Fest in den Kernel gebaute Features
    # --------------------------------------
    
    # ULE als Scheduler.
    options  SCHED_ULE
    
    # Das System soll sich preemtiv verhalten.
    options  PREEMPTION
    
    # IPv4 Netzwerkstack.
    options  INET
    
    # IPv6 Netzwerkstack.
    options  INET6
    
    # SCTP Layer 4 Protokoll.
    options  SCTP
    
    # IPSEC Unterst?tzung.
    options  IPSEC
    
    # Unterst?tzung f?r IPSEC NAT Traversal.
    options     IPSEC_NAT_T
    
    # Stealth-Forwarding von IP-Paketen.
    options     IPSTEALTH
    
    # bpf(4) mit JIT-Compiler bauen. Kann
    # alle darauf ausbauenden Anwendungen
    # sehr beschleunigen.
    options     BPF_JITTER
    
    # TCP Offload Engine
    options  TCP_OFFLOAD
    
    # Das AUDIT-Framework, damit OpenBSM
    # Audit-Events aus dem Kernel ziehen
    # kann.
    options  AUDIT
    
    # Das MAC-Framework fuer Mandandory
    # Access Controls.
    options  MAC
    
    # Resource Accounting. Notwendig fuer
    # Resource Limits.
    options  RACCT
    
    # Unterstuetzung fuer Resource Limits.
    options  RCTL
    
    # kbd(4) soll fuer jedes Keyboard ein
    # Device in /dev erstellen. Notwendig
    # fuer X11.
    options  KBD_INSTALL_CDEV
    
    # Neuer PCI-Bus Code.
    options  NEW_PCIB
    
    # PCI Hotplug
    options     PCI_HP
    
    # PCI SRV-IO
    options     PCI_IOV
    
    # Erlaubt hwpmc(4) auch Kernelaufrufe
    # zu tracen. De facto fuer sinnvolle
    # Ergebnisse notwendig.
    options  HWPMC_HOOKS
    
    # Alle Kernel-Ausgaben puffern, damit
    # sie sich nicht untereinander mischen.
    options  PRINTF_BUFR_SIZE=256
    
    # Capsicum Capabilities Framework.
    options  CAPABILITY_MODE
    options  CAPABILITIES
    
    # vt-d / DMAR Unterstuertzung
    options  ACPI_DMAR
    
    # ------------------------------------------ #
    
    # 3. Debug-Optionen
    # -----------------
    
    # Den Kernel mit Debug-Symbolen bauen. Die
    # Symbole werden in einzelnen Dateien
    # gespeichert und koennen bei Bedarf einfach
    # geloescht werden.
    makeoptions DEBUG=-g
    
    # CTF Data fuer DTrace
    makeoptions WITH_CTF=1
    
    # Kernel-Debugger Framework. Notwendig, um
    # sinnvolle panic()-Ausgaben zu bekommen.
    options  KDB
    
    # Bei panic() einen Stack-Trace ausgeben.
    options  KDB_TRACE
    # STACK erlaubt es, auf den Kernelstack
    # zuzugreifen. Notwendig fuer einige
    # Debuging-Tools.
    options  STACK
    
    # Unterstuetzung fuer die ktrace(2) Syscalls.
    options  KTRACE
    
    # Kernel-DTrace Unterstuetzung.
    options  KDTRACE_FRAME
    options  KDTRACE_HOOKS
    
    # Wenn Kernelmodule CTF enthalten, wird dies
    # geladen. Andernfalls waere DTrace sinnlos.
    options  DDB_CTF
    
    # USB-Debugging ist notwendig, um Quirks
    # setzen zu koennen. In der Praxis kaum zu
    # vermeiden.
    options     USB_DEBUG
    
    # ------------------------------------------ #
    
    # 4. Spezielle Optionen fuer UFS
    # ------------------------------
    
    # Softupdates aktivieren.
    options  SOFTUPDATES
    
    # Unterstuetzung fuer ACL.
    options  UFS_ACL
    
    # Dirhash-Code, beschleunigt die Sache sehr.
    options  UFS_DIRHASH
    
    # gjournal(8) Unterstuetzung.
    options  UFS_GJOURNAL
    
    # Extended Attributs Unterstuetzung.
    # U.a. fuer ACL genutzt.
    options  UFS_EXTATTR
    options  UFS_EXTATTR_AUTOSTART
    
    # Disk Quotas
    options  QUOTA
    
    # ------------------------------------------ #
    
    # 5. Rueckkompatiblitaet
    # ----------------------
    
    # Syscalls und In-Kernel Structs aelterer
    # FreeBSD-Versionen. Nicht jede Version
    # aenderte das Interface!
    options  COMPAT_FREEBSD4
    options  COMPAT_FREEBSD5
    options  COMPAT_FREEBSD6
    options  COMPAT_FREEBSD7
    options  COMPAT_FREEBSD9
    options  COMPAT_FREEBSD10
    
    # Unterstuetzung fuer 4.3BSD Interfaces.
    # Auch fuer FreeBSD 1 bis 3 Binaries
    # notwendig.
    options     COMPAT_43
    
    # Unterstuetzung fuer das alte 4.3BSD
    # TTY-Interface. Wird (leider) noch immer
    # haeufig genutzt.
    options  COMPAT_43TTY
    
    # Unterstuetzung fuer 32-Bit Binaries auf
    # 64 Bit Hosts.
    options  COMPAT_FREEBSD32
    
    # SysV Interfaces
    options  SYSVSHM
    options  SYSVMSG
    options  SYSVSEM
    
    # POSIX Realtime Scheduling Interfaces.
    options  _KPOSIX_PRIORITY_SCHEDULING
    
    # ------------------------------------------ #
    
    # 6. Devices
    # ----------
    # newcons Systemkonsolenrenderer
    device     vt
    device     vt_vga
    device     vt_efifb
    
    # Minimale Netzwerk-Unterstuetzung.
    #  - ether(4): Ethernet Netzwerke
    #  - loop(4):  Loopback-Devices
    #  - bpf(4):  Berkeley Packet Filter
    device  ether
    device  loop
    device  bpf
    
    # Pseudo-TTYs
    device  pty
    
    # Klassisches AT und PS/2 Keyboard.
    #  - atkbdc(4): Keyboard- und Mouse-Controller
    #  - atkbd(4):  Keyboard-Treiber
    #  - psm(4):  Mouse-Treiber
    device  atkbdc
    device  atkbd
    device  psm
    
    # System-Interfaces.
    #  - isa(4):  ISA und LPC Unterstuetzung
    #  - eisa(4): Extended ISA und LPC
    #  - pci(4):  PCI und seine Abarten
    #  - acpi(4): ACPI Unterstuetzung
    device  isa
    device  eisa
    device  pci
    device  acpi
    
    # crypto(4) Framework, Abhaengigkeit zu IPSEC.
    #  - crypto(4): Das Framework
    #  - enc(4):  IPSEC Pseudo Device
    device  crypto
    device     enc
    # altq(4) Unterstuetzung.
    options  ALTQ
    options  ALTQ_CBQ
    options  ALTQ_RED
    options  ALTQ_RIO
    options  ALTQ_HFSC
    options  ALTQ_CDNR
    options  ALTQ_PRIQ
    
    # Das Netmap-Subsystem
    device     netmap
    
    # Zufallszahlen
    device     random
    
    # ------------------------------------------ #
    
    Wesentlich kleiner kommt nicht. Wenn wie bei mit 'device sc' fehlt, muss man den Nvidia-Treiber noch patchen. Ansonsten wird das Kernelmodul nicht laden:
    Code:
    --- ./src/nvidia/nvidia_os.c.orig   2017-03-13 07:53:40.018536000 +0100
    +++ ./src/nvidia/nvidia_os.c   2017-03-13 07:54:10.443019000 +0100
    @@ -740,6 +740,7 @@
      NvU16 *pFbPitch
     )
     {
    +#if 0
      const sc_softc_t *sc = sc_get_softc(0, SC_KERNEL_CONSOLE);
      if (sc)
    @@ -761,6 +762,7 @@
      }
      }
      }
    +#endif
      *pPhysicalAddress = 0;
      *pFbWidth = *pFbHeight = *pFbDepth = *pFbPitch = 0;
    
    Dazu kommt dann die passende loader.conf, wobei die geladenen Module von der Hardware abhängen:
    Code:
    # System
    # ------
    
    # Delay
    autoboot_delay="3"
    
    # Kein Strom fuer Geraete ohne Treiber
    hw.pci.do_power_nodriver="3"
    
    # Kein p4tcc
    hint.p4tcc.0.disabled=1
    
    # Kein legacy Pamps
    kern.cam.ada.legacy_aliases="0"
    
    # Sound Equalizer
    hint.pcm.0.eq="1"
    hint.pcm.4.eq="1"
    
    # Soundkarte
    # !!! DIES IST FUER AC3 UND NICHT FUER WAVE !!!
    #hint.hdac.1.cad0.nid21.config="as=1 seq=4 device=Line-Out color=Grey"
    #hint.hdac.1.cad0.nid23.config="as=1 seq=2 device=Line-Out color=Black"
    #hint.hdac.1.cad0.nid27.config="as=1 seq=15 device=Headphones color=Green"
    
    # ZFS
    vfs.zfs.arc_max="4G"
    
    # glabel ruhigstellen
    kern.geom.label.disk_ident.enable="0"
    kern.geom.label.gptid.enable="0"
    
    # Filco Keyboard Quirk
    hw.usb.quirk.0="0x04d9 0x1818 0x0000 0xffff UQ_UMS_IGNORE"
    
    # Dualcores fuer Bhyve
    hw.vmm.topology.cores_per_package=2
    
    # Module
    # --------
    
    # Partitionstypen
    geom_part_bsd_load="YES"
    geom_part_mbr_load="YES"
    geom_part_gpt_load="YES"
    
    # glabel
    geom_label_load="YES"
    
    # Random
    random_load="YES"
    
    # ATA
    ahci_load="YES"
    
    # X11 Kram
    mem_load="YES"
    io_load="YES"
    
    # SCSI
    cam_load="YES"
    
    # Netzwerk
    miibus_load="YES"
    if_em_load="YES"
    
    # SMBus
    smbus_load="YES"
    ichsmb_load="YES"
    
    # CPUFreq
    cpufreq_load="YES"
    
    # Sound
    sound_load="YES"
    snd_hda_load="YES"
    snd_envy24ht_load="YES"
    
    # CPU-Device
    cpuctl_load="YES"
    
    # USB
    usb_load="YES"
    xhci_load="YES"
    ums_load="YES"
    umass_load="YES"
    ukbd_load="YES"
    usb_quirk_load="YES"
    
    # Linux
    linux_load="YES"
    
    # Keyboard
    kbdmux_load="YES"
    
    # Bruecke
    if_bridge_load="YES"
    bridge_stp_load="YES"
    
    # Tap
    if_tap_load="YES"
    
    # Temperatursensoren
    coretemp_load="YES"
    
    # Tun
    if_tun_load="YES"
    
    # ProcFS
    pseudofs_load="YES"
    procfs_load="YES"
    linprocfs_load="YES"
    
    # UFS
    ufs_load="YES"
    
    # FAT
    msdosfs_load="YES"
    
    # AES-NI
    aesni_load="YES"
    cryptodev_load="YES"
    
    # CUSE
    cuse4bsd_load="YES"
    
    # FUSE
    fuse_load="YES"
    
    # Nvidia
    nvidia_load="YES"
    nvidia-modeset_load="YES"
    
    # ZFS
    zfs_load="YES"
    
    # Bhyve
    vmm_load="YES"
    
    # NMDM
    nmdm_load="YES"
    
    # COM-Port
    uart_load="YES"
    
    # Hardware-RNG
    rdrand_rng_load="YES"
    
    # Filemon
    filemon_load="YES"
    
    Einige der oberen Optionen sind ab 11.0 nicht mehr notwendig. p4tcc ist nun z.B. als Standardeinstellung aus. Aber sie schaden auch nicht und bisher war ich zu faul sie durchzugehen. ;)

    Zum Schluss noch die dmesg:
    Code:
    Copyright (c) 1992-2016 The FreeBSD Project.
    Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
       The Regents of the University of California. All rights reserved.
    FreeBSD is a registered trademark of The FreeBSD Foundation.
    FreeBSD 11.0-RELEASE-p8 #0 r314302M: Sun Feb 26 17:23:52 CET 2017
      root@pine.home.yamagi.org:/usr/obj/usr/sources/11.0-RELEASE/sys/PINE amd64
    FreeBSD clang version 3.8.0 (tags/RELEASE_380/final 262564) (based on LLVM 3.8.0)
    VT(efifb): resolution 1600x1200
    CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz (4008.14-MHz K8-class CPU)
      Origin="GenuineIntel"  Id=0x506e3  Family=0x6  Model=0x5e  Stepping=3
      Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
      Features2=0x7ffafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
      AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
      AMD Features2=0x121<LAHF,ABM,Prefetch>
      Structured Extended Features=0x29c6fbf<FSGSBASE,TSCADJ,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,NFPUSG,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PROCTRACE>
      XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
      VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
      TSC: P-state invariant, performance statistics
    real memory  = 34359738368 (32768 MB)
    avail memory = 33190838272 (31653 MB)
    Event timer "LAPIC" quality 600
    ACPI APIC Table: <ALASKA A M I>
    FreeBSD/SMP: Multiprocessor System Detected: 8 CPUs
    FreeBSD/SMP: 1 package(s) x 4 core(s) x 2 hardware threads
    random: unblocking device.
    ioapic0 <Version 2.0> irqs 0-119 on motherboard
    random: entropy device external interface
    netmap: loaded module
    kbd1 at kbdmux0
    random: registering fast source Intel Secure Key RNG
    random: fast provider: "Intel Secure Key RNG"
    nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  375.26  Thu Dec  8 18:25:08 PST 2016
    aesni0: <AES-CBC,AES-XTS,AES-GCM,AES-ICM> on motherboard
    cryptosoft0: <software crypto> on motherboard
    acpi0: <ALASKA A M I> on motherboard
    acpi0: Power Button (fixed)
    cpu0: <ACPI CPU> on acpi0
    cpu1: <ACPI CPU> on acpi0
    cpu2: <ACPI CPU> on acpi0
    cpu3: <ACPI CPU> on acpi0
    cpu4: <ACPI CPU> on acpi0
    cpu5: <ACPI CPU> on acpi0
    cpu6: <ACPI CPU> on acpi0
    cpu7: <ACPI CPU> on acpi0
    hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
    Timecounter "HPET" frequency 24000000 Hz quality 950
    Event timer "HPET" frequency 24000000 Hz quality 550
    atrtc0: <AT realtime clock> port 0x70-0x77 irq 8 on acpi0
    atrtc0: Warning: Couldn't map I/O.
    Event timer "RTC" frequency 32768 Hz quality 0
    attimer0: <AT timer> port 0x40-0x43,0x50-0x53 irq 0 on acpi0
    Timecounter "i8254" frequency 1193182 Hz quality 0
    Event timer "i8254" frequency 1193182 Hz quality 100
    Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
    acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1808-0x180b on acpi0
    pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
    pcib0: _OSC returned error 0x4
    pci0: <ACPI PCI bus> on pcib0
    pcib1: <ACPI PCI-PCI bridge> at device 1.0 on pci0
    pci1: <ACPI PCI bus> on pcib1
    vgapci0: <VGA-compatible display> port 0xe000-0xe07f mem 0xde000000-0xdeffffff,0xc0000000-0xcfffffff,0xd0000000-0xd1ffffff irq 16 at device 0.0 on pci1
    nvidia0: <GeForce GTX 750 Ti> on vgapci0
    vgapci0: child nvidia0 requested pci_enable_io
    vgapci0: child nvidia0 requested pci_enable_io
    vgapci0: Boot video device
    hdac0: <NVIDIA (0x0fbc) HDA Controller> mem 0xdf080000-0xdf083fff irq 17 at device 0.1 on pci1
    xhci0: <Intel Sunrise Point USB 3.0 controller> mem 0xdf330000-0xdf33ffff irq 16 at device 20.0 on pci0
    xhci0: 32 bytes context size, 64-bit DMA
    usbus0: waiting for BIOS to give up control
    usbus0 on xhci0
    pci0: <simple comms> at device 22.0 (no driver attached)
    ahci0: <Intel Sunrise Point AHCI SATA controller> port 0xf050-0xf057,0xf040-0xf043,0xf020-0xf03f mem 0xdf348000-0xdf349fff,0xdf34c000-0xdf34c0ff,0xdf34b000-0xdf34b7ff irq 16 at device 23.0 on pci0
    ahci0: AHCI v1.31 with 6 6Gbps ports, Port Multiplier not supported
    ahcich0: <AHCI channel> at channel 0 on ahci0
    ahcich1: <AHCI channel> at channel 1 on ahci0
    ahcich2: <AHCI channel> at channel 2 on ahci0
    ahcich3: <AHCI channel> at channel 3 on ahci0
    ahcich4: <AHCI channel> at channel 4 on ahci0
    ahcich5: <AHCI channel> at channel 5 on ahci0
    ahciem0: <AHCI enclosure management bridge> on ahci0
    pcib2: <ACPI PCI-PCI bridge> irq 16 at device 27.0 on pci0
    pci2: <ACPI PCI bus> on pcib2
    pcib3: <ACPI PCI-PCI bridge> at device 27.2 on pci0
    pci3: <ACPI PCI bus> on pcib3
    pcib4: <ACPI PCI-PCI bridge> irq 18 at device 0.0 on pci3
    pci4: <ACPI PCI bus> on pcib4
    pcm0: <Envy24HT audio (AudioTrak Prodigy HD2)> port 0xd080-0xd09f,0xd000-0xd07f irq 19 at device 1.0 on pci4
    pcm0: system configuration
      SubVendorID: 0x3137, SubDeviceID: 0x4154
      XIN2 Clock Source: 49.152MHz(192kHz*256)
      MPU-401 UART(s) #: 1
      ADC #: 1 and SPDIF receiver connected
      DAC #: 1
      Multi-track converter type: I2S(192KHz support, 24bit resolution, ID#0x0)
      S/PDIF(IN/OUT): 1/1 ID# 0x00
      GPIO(mask/dir/state): 0xfff8ff/0xdfffff/0x200700
    pcib5: <ACPI PCI-PCI bridge> irq 16 at device 28.0 on pci0
    pci5: <ACPI PCI bus> on pcib5
    xhci1: <XHCI (generic) USB 3.0 controller> mem 0xdf200000-0xdf207fff irq 16 at device 0.0 on pci5
    xhci1: 32 bytes context size, 64-bit DMA
    xhci1: Unable to map MSI-X table
    usbus1 on xhci1
    pcib6: <ACPI PCI-PCI bridge> irq 16 at device 28.4 on pci0
    pci6: <ACPI PCI bus> on pcib6
    pcib7: <ACPI PCI-PCI bridge> irq 16 at device 29.0 on pci0
    pci7: <ACPI PCI bus> on pcib7
    ahci1: <AHCI SATA controller> mem 0xdf100000-0xdf101fff irq 16 at device 0.0 on pci7
    ahci1: AHCI v1.30 with 1 6Gbps ports, Port Multiplier not supported
    ahcich6: <AHCI channel> at channel 0 on ahci1
    pcib8: <ACPI PCI-PCI bridge> irq 16 at device 29.4 on pci0
    pci8: <ACPI PCI bus> on pcib8
    isab0: <PCI-ISA bridge> at device 31.0 on pci0
    isa0: <ISA bus> on isab0
    pci0: <memory> at device 31.2 (no driver attached)
    hdac1: <Intel Sunrise Point HDA Controller> mem 0xdf340000-0xdf343fff,0xdf320000-0xdf32ffff irq 16 at device 31.3 on pci0
    ichsmb0: <Intel Sunrise Point-H SMBus controller> port 0xf000-0xf01f mem 0xdf34a000-0xdf34a0ff irq 16 at device 31.4 on pci0
    smbus0: <System Management Bus> on ichsmb0
    em0: <Intel(R) PRO/1000 Network Connection 7.6.1-k> mem 0xdf300000-0xdf31ffff irq 16 at device 31.6 on pci0
    em0: Using an MSI interrupt
    em0: Ethernet address: 40:8d:5c:1d:67:27
    em0: netmap queues/slots: TX 1/1024, RX 1/1024
    acpi_button0: <Sleep Button> on acpi0
    acpi_button1: <Power Button> on acpi0
    acpi_tz0: <Thermal Zone> on acpi0
    acpi_tz1: <Thermal Zone> on acpi0
    uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
    atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
    atkbd0: <AT Keyboard> irq 1 on atkbdc0
    kbd0 at atkbd0
    atkbd0: [GIANT-LOCKED]
    coretemp0: <CPU On-Die Thermal Sensors> on cpu0
    est0: <Enhanced SpeedStep Frequency Control> on cpu0
    coretemp1: <CPU On-Die Thermal Sensors> on cpu1
    est1: <Enhanced SpeedStep Frequency Control> on cpu1
    coretemp2: <CPU On-Die Thermal Sensors> on cpu2
    est2: <Enhanced SpeedStep Frequency Control> on cpu2
    coretemp3: <CPU On-Die Thermal Sensors> on cpu3
    est3: <Enhanced SpeedStep Frequency Control> on cpu3
    coretemp4: <CPU On-Die Thermal Sensors> on cpu4
    est4: <Enhanced SpeedStep Frequency Control> on cpu4
    coretemp5: <CPU On-Die Thermal Sensors> on cpu5
    est5: <Enhanced SpeedStep Frequency Control> on cpu5
    coretemp6: <CPU On-Die Thermal Sensors> on cpu6
    est6: <Enhanced SpeedStep Frequency Control> on cpu6
    coretemp7: <CPU On-Die Thermal Sensors> on cpu7
    est7: <Enhanced SpeedStep Frequency Control> on cpu7
    fuse-freebsd: version 0.4.4, FUSE ABI 7.8
    ZFS filesystem version: 5
    ZFS storage pool version: features support (5000)
    Timecounters tick every 1.000 msec
    hdacc0: <NVIDIA (0x0060) HDA CODEC> at cad 0 on hdac0
    hdaa0: <NVIDIA (0x0060) Audio Function Group> at nid 1 on hdacc0
    pcm1: <NVIDIA (0x0060) (HDMI/DP 8ch)> at nid 4 on hdaa0
    pcm2: <NVIDIA (0x0060) (HDMI/DP 8ch)> at nid 5 on hdaa0
    pcm3: <NVIDIA (0x0060) (HDMI/DP 8ch)> at nid 7 on hdaa0
    hdacc1: <Realtek (0x0900) HDA CODEC> at cad 0 on hdac1
    hdaa1: <Realtek (0x0900) Audio Function Group> at nid 1 on hdacc1
    pcm4: <Realtek (0x0900) (Rear Analog 7.1/2.0)> at nid 20,22,21,23 and 24,26 on hdaa1
    pcm5: <Realtek (0x0900) (Front Analog)> at nid 27 and 25 on hdaa1
    pcm6: <Realtek (0x0900) (Onboard Digital)> at nid 17 on hdaa1
    usbus0: 5.0Gbps Super Speed USB v3.0
    usbus1: 5.0Gbps Super Speed USB v3.0
    ugen0.1: <0x8086> at usbus0
    uhub0: <0x8086 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
    ugen1.1: <0x1b21> at usbus1
    uhub1: <0x1b21 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus1
    ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
    ada0: <INTEL SSDSC2BB480G6 G2010140> ACS-2 ATA SATA 3.x device
    cd0 at ahcich3 bus 0 scbus3 target 0 lun 0
    cd0: <HL-DT-ST DVDRAM GH22NS50 TN02> Removable CD-ROM SCSI device
    cd1 at ahcich4 bus 0 scbus4 target 0 lun 0
    cd1: <TSSTcorp DVDWBD SH-B123L SB04> Removable CD-ROM SCSI device
    cd0: Serial Number K1V9AR62256
    cd0: 150.000MB/s transfers (SATA 1.x, UDMA5, ATAPI 12bytes, PIO 8192bytes)
    cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
    cd1: Serial Number R8606GEB909038
    cd1: 150.000MB/s transfers (SATA 1.x, UDMA5, ATAPI 12bytes, PIO 8192bytes)
    cd1: Attempt to query device size failed: NOT READY, Medium not present - tray closed
    ada0: Serial Number BTWA544502S6480FGN
    ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
    ada0: Command Queueing enabled
    ada0: 457862MB (937703088 512 byte sectors)
    ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
    ada1: <HGST HDN724040ALE640 MJAOA5E0> ATA8-ACS SATA 3.x device
    ada1: Serial Number PK2334PCG6Z09B
    ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
    ada1: Command Queueing enabled
    ada1: 3815447MB (7814037168 512 byte sectors)
    ada2 at ahcich2 bus 0 scbus2 target 0 lun 0
    ada2: <HGST HDN724040ALE640 MJAOA5E0> ATA8-ACS SATA 3.x device
    ada2: Serial Number PK2334PCG52WSB
    ada2: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
    ada2: Command Queueing enabled
    ada2: 3815447MB (7814037168 512 byte sectors)
    ada3 at ahcich6 bus 0 scbus7 target 0 lun 0
    ada3: <SAMSUNG MZHPV256HDGL-00000 BXW2500Q> ACS-2 ATA SATA 3.x device
    ada3: Serial Number S1X2NYAG505214
    ada3: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
    ada3: Command Queueing enabled
    ada3: 244198MB (500118192 512 byte sectors)
    uhub1: 4 ports with 4 removable, self powered
    ses0 at ahciem0 bus 0 scbus6 target 0 lun 0
    ses0: <AHCI SGPIO Enclosure 1.00 0001> SEMB S-E-S 2.00 device
    ses0: SEMB SES Device
    SMP: AP CPU #1 Launched!
    SMP: AP CPU #2 Launched!
    SMP: AP CPU #6 Launched!
    SMP: AP CPU #5 Launched!
    SMP: AP CPU #7 Launched!
    SMP: AP CPU #4 Launched!
    SMP: AP CPU #3 Launched!
    Timecounter "TSC-low" frequency 2004072436 Hz quality 1000
    Trying to mount root from zfs:system/ROOT/11.0-RELEASE []...
    
     
  5. Crest

    Crest rm -rf /*

    Registriert seit:
    25 Juni 2008
    Beiträge:
    1.546
    Ort:
    /dev/random
    Also auf Systemen, die genug RAM für ZFS haben, macht es keinen Sinn sein GENERIC abzuspecken um RAM zu sparen. Der Arbeitsaufwand steht in keinen sinnvollen Verhältnis zum Nutzen. Allerdings hatte ich ne Weile den if_iwn in ein Modul ausgelagert um die Karte reinitialisieren zu können, wenn die Firmware abgeschmiert war.
     
  6. raiding

    raiding Member

    Registriert seit:
    9 April 2011
    Beiträge:
    60
    Wow nice!

    Erstmal vielen Dank für die schnelle und ausführliche Hilfe!! Die Kommentare im Kernel sind äusserst lehrreich :)

    Ich hab keine Bedenken bezüglich meines Speicherverbrauchs. Mit 32GB sollte ich (hoffentlich) für ein paar Jahre gut gerüstet sein :)

    Mehr Code bedeutet allerdings immer ein mehr an potentiellen Sicherheitslücken und das möchte ich natürlich so gut es eben geht vermeiden ... würde am liebsten sogar nur das kompakte OpenBSD nutzen, was wiederrum vorraussetzen würde, dass ich ZFS und SMP-Performance entbähren könnte ..

    Allerdings frage ich mich: Brauche ich wirklich IPv6 und SCTP fest im Kernel implementiert, obwohl ich diese Protokolle nicht nutze? Und selbst wenn das System/der Kernel zum Booten/während des Kompilierens UFS braucht .. kann ich dann nicht wenigstens Quotas, Softupdates und das andere Gedöns rausschmeißen, wenn ich ja eh ZFS nutze?
     
  7. KobRheTilla

    KobRheTilla used register

    Registriert seit:
    20 Januar 2011
    Beiträge:
    1.017
    V6 vielleicht aber SCTP nehme ich grundsätzlich raus.

    Rob
     
  8. pit234a

    pit234a Well-Known Member

    Registriert seit:
    8 Juli 2006
    Beiträge:
    2.925
    Aber vergleich mal, wieviel Code vom Kernel kommt und wieviel von allem anderen, was du vielleicht auch noch nutzen möchtest.
    Man braucht dazu nicht direkt Code zu lesen, man kann die Auslastung des Speichers heranziehen. Beim Kernel reden wir von MB, bei weitergehenden Anwendungen von GB, um mal etwas plakativ zu werden. Und dabei dürfte der Code im Kernel noch relativ gut überwacht und sicher sein, was bei vielen weitergehenden Anwendungen durchaus nicht immer so sein wird.
    Nä, ist ein Hobby, den Kernel klein zu halten, aber auf normalen Desktop-Systemen absolut nicht notwendig und kaum sinnvoll.
     
  9. holgerw

    holgerw Active Member

    Registriert seit:
    29 Februar 2016
    Beiträge:
    938
    Ort:
    Simtshausen - Hessen
    Hallo @pit234a

    ich habe gerade ähnlich gedacht, allerdings ist so etwas auch eine didaktische Maßnahme, bei der man ziemlich gut Basics zum System kennen lernt. Ist doch auch so bei manuellem Setup von root-on-zfs. :)

    Viele Grüße,
    Holger
     
  10. raiding

    raiding Member

    Registriert seit:
    9 April 2011
    Beiträge:
    60
    @pit234a

    Da gebe ich dir selbstverständlich im vollen Umfang Recht.

    Ich versuche mein System allerdings insgesamt so klein wie möglich zu halten. Ursprünglich komme ich aus der Linux-Welt und habe immer nur hin und wieder Kontakt mit Free-/OpenBSD gehabt. Nun wollte ich allerdings auf FreeBSD umsteigen, damit einen möglichst schlanken Virtualisierungsserver mit Bhyve erstellen und somit über Netzwerk bzw. (VNC, X11 klappt ja leider mit Bhyve noch nicht) auf meinen Maschinen(BSD, Linux, Win) zu arbeiten.

    Mir hat an FreeBSD immer sehr gefallen, dass man sogar im offiziellen Handbuch schon vor langer Zeit dazu animiert wurde, seinen eigenen Kernel zu kompilieren und das gesamte System aus dem Quellcode zu übersetzen. Obwohl der Performancegewinn der dadurch entsteht, dass das System maßgeschneidert auf dem eigenen Prozessor übersetzt wird(ich verwende u.a. CPUTYPE?=native in der make.conf) heutzutage wahrscheinlich kaum der Rede wert sein wird, gefällt mir diese Grundidee sehr. Dazu kommen jetzt halt die Vorzüge von ZFS und Bhyve im Basissystem -> "alles aus einem Guss".

    Ich habe auch meine src.conf bearbeitet, um Dinge einfach aus dem Basissystem zu entfernen, die meiner Meinung nach für meine Zwecke unnötig sind:

    WITHOUT_AMD=YES
    WITHOUT_APM=YES
    WITHOUT_ATM=YES
    WITH_BINUTILS=YES
    WITH_BINUTILS_BOOTSTRAP=YES
    WITHOUT_BLUETOOTH=YES
    WITHOUT_BOOTPARAMD=YES
    WITHOUT_BOOTPD=YES
    #WITH_CCACHE_BUILD=YES
    WITH_CLANG=YES
    WITH_CLANG_BOOTSTRAP=YES
    WITH_CLANG_FULL=YES
    WITH_CLANG_IS_CC=YES
    WITHOUT_CTM=YES
    #WITHOUT_DEBUG_FILES=YES
    WITHOUT_FLOPPY=YES
    #WITHOUT_FTP=YES
    WITHOUT_GCC=YES
    WITHOUT_GCC_BOOTSTRAP=YES
    WITHOUT_GNUCXX=YES
    WITHOUT_GPIO=YES
    WITHOUT_HAST=YES
    WITHOUT_HYPERV=YES
    #WITHOUT_INET6=YES
    WITHOUT_INETD=YES
    WITHOUT_IPFILTER=YES
    WITHOUT_IPFW=YES
    WITHOUT_KVM=YES
    #WITH_LIB32=YES
    WITH_LIBRESSL=YES
    WITH_LLD=YES
    WITH_LLDB=YES
    WITHOUT_LLVM_LIBUNBIND=YES
    WITHOUT_LPR=YES
    WITHOUT_NDIS=YES
    WITHOUT_NTP=YES
    WITHOUT_OPENSSH=YES
    WITHOUT_RBOOTD=YES
    WITHOUT_RCMDS=YES
    WITH_SAFESTACK=YES
    WITHOUT_SENDMAIL=YES
    WITH_SVN=YES
    WITHOUT_TCP_WRAPPERS=YES
    WITHOUT_TELNET=YES
    WITHOUT_TFTP=YES
    WITHOUT_TIMED=YES
    WITHOUT_UNBOUND=YES

    Wie gesagt: Ich will nur Bhyve starten können und gut. OpenBSD soll als interner Router mit Vollzugriff auf meine Netzwerkhardware via PCI-Durchreiche und virtueller Switche genutzt werden, falls ich mal Updates ziehen will. Ansonsten arbeite ich nur mit den virtuellen Machinen, so die Grundidee.

    Wenn ihr mir ggf. Denkanstöße, Kritik oder Erfahrungswerte mit auf den Weg geben könnt, wäre ich jedem von euch sehr dankbar, da das mein erstes Projekt dieser Art ist und die meisten von euch wahrscheinlich viele Jahre mehr Erfahrungen mit *BSD gesammelt haben, als ich selbst.

    Gruß
     
  11. KobRheTilla

    KobRheTilla used register

    Registriert seit:
    20 Januar 2011
    Beiträge:
    1.017
    Also auf SSH und NTP würde ich auf keinen Fall verzichten wollen. Ich glaube auch, dass du wenigstens einen Compiler mit an Bord behalten möchtest, sonst ist nach dem ersten Build und einem make delete-old kein weiterer Build möglich.

    Rob
     
  12. pit234a

    pit234a Well-Known Member

    Registriert seit:
    8 Juli 2006
    Beiträge:
    2.925
    Auf meinem kleinen ASUS 1000HE hatte ich mit FreeBSD ein 32Bit-System aus den Quellen gebaut (und auf zahlreichen anderen Systemen früher auch, nur das hat bis heute überlebt und kann als Vergleich dienen). Die Performance war deutlich besser, als mit einer Standard OpenBSD Installation zu dieser Zeit. Wohlgemerkt: nicht nur den Kernel, auch alle Ports wurden für den PC eigens gebaut.
    Zu Beginn hatte ich auf dem PC ein einfaches GNU/Linux und das hatte sich in allen Belangen als performanter gezeigt und konnte verschiedene Zusatzfunktionen out of the box.
    Heute habe ich da eine Standard 32Bit FreeBSD 11er Installation und alle zusätzliche SW aus den Paketen installiert und bin wenigstens so zufrieden, wie ich es seinerzeit mit der GNU/Linux Installation mal war (wobei ich diverse Suspend und Kram noch nicht mal getestet habe, die SSD bootet schneller, als ein Aufwachen aus dem Suspend dauert).

    Was ich sagen will: die Entwicklung geht einfach weiter. Manchmal sage ich: Leider. Denn unausweichlich werden alle Anwendungen immer schwerer und größer, schon alleine wegen der immer aufgeblaseneren Grafik. Damit verschieben sich die Relationen. Zusätzlich ist die HW halt immer besser und schneller und schon bei meinem alten PC taktet die CPU die meiste Zeit leer vor sich hin.
    Ich verstehe gut, dass man ein schmales System haben will. Wenn ich ein Ubuntu installiere, ärgere ich mich meist so lange darüber, bis ich es irgendwann deutlich kastriert und alle in meinen Augen nicht notwendigen Dienste abgeschaltet habe. Manchmal bin ich da stur und lernresitent, denn nicht alles ist tatsächlich so schlimm und schlecht, wie ich auf Anhieb empfinde.
    Bei FreeBSD ist das deutlich besser und ich ärgere mich kaum jemals.
    Doch die Standard-Installation, der GENERIC und seine binären Updates sowie die zusätzliche SW als Paket, das hat eindeutig Vorteile in der Geschwindigkeit bei der Installation und Wartung des Systems. Da wiegt für mich die Unterschiede in der Performance beim Betrieb deutlich auf.

    Du verfolgst aber ein anders Projekt, wie du beschreibst.
    Das ist vollkommen verschieden. Ich habe eher für einen fertigen Desktop-PC argumentiert.
    Sieht also so aus, als seien wir da ziemlich einig ;)
     
  13. raiding

    raiding Member

    Registriert seit:
    9 April 2011
    Beiträge:
    60
    Ubuntu ist natürlich DAS Paradebeispiel .. Aber der Trend scheint allgemein in Richtung Bloatware zu gehen (s. systemd).

    Der Lerneffekt ist dabei natürlich auch nicht zu verachten ... Ich informiere euch über die Fortschritte ;)

    @KobRheTilla OpenSSH wollte ich wahrscheinlich über die Ports installieren, wenn überhaupt. Warum NTP? Ich kann meine Zeit doch lokal einstellen :)
    Ausserdem arbeite ich z.Zt. leider hinter einem Proxy mit Username/Passwort Auth. Da kommen gut 95% aller Programme nicht durch :/