Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:nur_den_freebsd-kernel_bauen

nur den FreeBSD-Kernel bauen

ab FreeBSD 13

Einen angepassten Kernel bauen und installieren

Subversion ist bei FreeBSD Geschichte, die 13.0 wird das erste Release sein, welches nur noch per GIT abrufbar ist (und die älteren sind auch jetzt schon per GIT abrufbar). Dann müsste man das Paket "git" (oder "git-lite") installieren.

Den Quellkode bekommt man mit folgenden Befehlen:

> cd /usr/src
> rm -fr *
> git clone https://git.freebsd.org/src.git .
> git checkout releng/13.0

ein Beispiel für einen FreeBSD-Server ohne X11 und ohne W-LAN

/etc/make.conf
WITHOUT_X11=yes
WITHOUT=X11
NO_X=yes
X_WINDOW_SYSTEM=
OPTIONS_UNSET+=X11
OPTIONS_UNSET+=DEBUG
DEFAULT_VERSIONS+=ssl=openssl
BATCH=YES
WITH_MPM=event
/etc/src.conf
KERNCONF=MYKERNEL GENERIC
WITHOUT_MODULES=        amr arcmsr ciss iir ips mly twa smartpqi tws aac aacraid ida mfi mlx mrsas twe agp cbb pccard cardbus wlan wlan_wep wlan_ccmp wlan_tkip wlan_amrr an ath ath_pci ath_hal bwi bwn ipw iwi iwn malo mwl ral wpi hyperv
/usr/src/sys/amd64/conf/MYKERNEL_mini
include                 GENERIC
ident                   MYKERNEL
device                  nullfs
device                  nvram
nodevice                speaker
nodevice                isa
device                  zfs
device                  sg
nooptions               COMPAT_FREEBSD32        # Compatible with i386 binaries
/usr/src/sys/amd64/conf/MYKERNEL_maxi
### die zu bauenden Kernel festlegen in /etc/src.conf
# KERNCONF=MYKERNEL GENERIC
 
include                 GENERIC
 
ident                   MYKERNEL
 
options                 DDB                     # Enable the ddb(4) kernel debugger
device                  nullfs
device                  nvram
#
device                  speaker
envvar                  hint.speaker.0.at="isa"
envvar                  hint.speaker.0.port="0x61"
device                  isa
#nodevice               isa                     # Don't need to support an ISA bus
#
device                  zfs
device                  sg
 
### IPv6 - mit "no" davor wird abgeschaltet
nooptions               INET6                   # IPv6 communications protocols
nodevice                gif                     # IPv6 and IPv4 tunneling
 
### oder in der /etc/src.conf mit der Variablen WITHOUT_MODULES abschalten
### WITHOUT_MODULES=    amr arcmsr ciss iir ips mly twa smartpqi tws aac aacraid ida mfi mlx mrsas twe agp cbb pccard cardbus wlan wlan_wep wlan_ccmp wlan_tkip wlan_amrr an ath ath_pci ath_hal bwi bwn ipw iwi iwn malo mwl ral wpi virtio hyperv
#
nooptions               COMPAT_FREEBSD32        # Compatible with i386 binaries
nooptions               COMPAT_FREEBSD4         # Compatible with FreeBSD4
nooptions               COMPAT_FREEBSD5         # Compatible with FreeBSD5
nooptions               COMPAT_FREEBSD6         # Compatible with FreeBSD6
nooptions               COMPAT_FREEBSD7         # Compatible with FreeBSD7
nooptions               COMPAT_FREEBSD9         # Compatible with FreeBSD9
nooptions               COMPAT_FREEBSD10        # Compatible with FreeBSD10
options                 COMPAT_FREEBSD11        # Compatible with FreeBSD11
options                 COMPAT_FREEBSD12        # Compatible with FreeBSD12
#
nodevice                amr                     # AMI MegaRAID
nodevice                arcmsr                  # Areca SATA II RAID
nodevice                ciss                    # Compaq Smart RAID 5*
nodevice                iir                     # Intel Integrated RAID
nodevice                ips                     # IBM (Adaptec) ServeRAID
nodevice                mly                     # Mylex AcceleRAID/eXtremeRAID
nodevice                twa                     # 3ware 9000 series PATA/SATA RAID
nodevice                smartpqi                # Microsemi smartpqi driver
nodevice                tws                     # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller
nodevice                aac                     # Adaptec FSA RAID
nodevice                aacraid                 # Adaptec by PMC RAID
nodevice                ida                     # Compaq Smart RAID
nodevice                mfi                     # LSI MegaRAID SAS
nodevice                mlx                     # Mylex DAC960 family
nodevice                mrsas                   # LSI/Avago MegaRAID SAS/SATA, 6Gb/s and 12Gb/s
nodevice                twe                     # 3ware ATA RAID
#
nodevice                agp                     # support several AGP chipsets
#
nodevice                cbb                     # cardbus (yenta) bridge
nodevice                pccard                  # PC Card (16-bit) bus
nodevice                cardbus                 # CardBus (32-bit) bus
#
# Wireless NIC cards
nodevice                wlan                    # 802.11 support
nooptions               IEEE80211_DEBUG         # enable debug msgs
nooptions               IEEE80211_SUPPORT_MESH  # enable 802.11s draft support
nodevice                wlan_wep                # 802.11 WEP support
nodevice                wlan_ccmp               # 802.11 CCMP support
nodevice                wlan_tkip               # 802.11 TKIP support
nodevice                wlan_amrr               # AMRR transmit rate control algorithm
nodevice                an                      # Aironet 4500/4800 802.11 wireless NICs.
nodevice                ath                     # Atheros NICs
nodevice                ath_pci                 # Atheros pci/cardbus glue
nodevice                ath_hal                 # pci/cardbus chip support
nooptions               AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation
nooptions               ATH_ENABLE_11N          # Enable 802.11n support for AR5416 and later
nodevice                ath_rate_sample         # SampleRate tx rate control for ath
nodevice                bwi                     # Broadcom BCM430x/BCM431x wireless NICs.
nodevice                bwn                     # Broadcom BCM43xx wireless NICs.
nodevice                ipw                     # Intel 2100 wireless NICs.
nodevice                iwi                     # Intel 2200BG/2225BG/2915ABG wireless NICs.
nodevice                iwn                     # Intel 4965/1000/5000/6000 wireless NICs.
nodevice                malo                    # Marvell Libertas wireless NICs.
nodevice                mwl                     # Marvell 88W8363 802.11n wireless NICs.
nodevice                ral                     # Ralink Technology RT2500 wireless NICs.
nodevice                wpi                     # Intel 3945ABG wireless NICs.
#
# VirtIO support
nodevice                virtio                  # Generic VirtIO bus (required)
nodevice                virtio_pci              # VirtIO PCI device
nodevice                vtnet                   # VirtIO Ethernet device
nodevice                virtio_blk              # VirtIO Block device
nodevice                virtio_scsi             # VirtIO SCSI device
nodevice                virtio_balloon          # VirtIO Memory Balloon device
#
nodevice                hyperv                  # HyperV drivers 
> cp /usr/src/sys/amd64/conf/MYKERNEL_mini /usr/src/sys/amd64/conf/MYKERNEL
> cd /usr/src
> make kernel
> reboot

nur einen bestimmten Kernel neu bauen

vor dem Kernel kompilieren muss die "Welt" kompiliert werden:

> cd /usr/src/
> make buildkernel KERNCONF=MYKERNEL
> make installkernel KERNCONF=MYKERNEL
> reboot

einmaliger Kerneltest

Wenn man nur (einmal) für den nächsten Reboot einen neuen Kernel testen möchtest.

# make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
# nextboot -k testkernel

einmaliger Test-Boot mit dem neuen Kernel

den neuen Kernel kann man mit einem ZFS-System leider nicht testen:

> make installkernel KERNCONF=MYKERNEL KODIR=/boot/testkernel
> nextboot -k testkernel
WARNING: loader(8) has only R/O support for ZFS
nextboot.conf will NOT be reset in case of kernel boot failure

> shutdown -r now
/home/http/wiki/data/pages/freebsd/nur_den_freebsd-kernel_bauen.txt · Zuletzt geändert: von manfred