La methode officielle pour avoir un kernel custom est de copier le kernel GENERIC dans un autre fichier MONKERNEL et d'apporter les modifications souhaitees dans ce dernier (voir le handbook pour plus d'information).
Cette methode a (au moins) 2 inconvenients :
- la presence de tous les devices et options dans son kernel custom nuit a la lisibilite des modifications apportees
- lorsque GENERIC evolue/change au gre des releases, il faut renouveler toute la procedure de copie/modification
La methode que je vous propose ci-dessous a pour avantage de presenter un kernel minimaliste, ne comportant que les modifications que vous apportez par rapport au kernel de reference (ici GENERIC) et d'etre portable entre plusieurs niveau de release de FreeBSD.
include GENERIC nocpu I486_CPU ident MONKERNEL options INCLUDE_CONFIG_FILE nomakeoptions DEBUG options SCHED_ULE # ULE scheduler nooptions SCHED_4BSD # 4BSD scheduler nooptions SCSI_DELAY options SCSI_DELAY=3000 options ALTQ options ALTQ_CBQ # Class Bases Queueing options ALTQ_RED # Random Early Detection options ALTQ_RIO # RED In/Out options ALTQ_HFSC # Hierarchical Packet Scheduler options ALTQ_PRIQ # Priority Queueing # Packet Filter support device pf #PF OpenBSD packet-filter firewall device pflog #logging support interface for PF device pfsync #synchronization interface for PF device carp #Common Address Redundancy Protocol # SMBus support (/dev/smb*) device smbus device smb device ichsmb # emulation SCSI via IDE device atapicam
La ligne “nooptions SCSI_DELAY” evite d'avoir un warning “duplicate option” lors du “make buildkernel” tout en permettant la redefinition de ce parametre.
Il est tout a fait possible de desactiver des options ou devices en prefixant les lignes concernees par 'no' :
nodevice blah nooptions truc
Avec cette methode, mon fichier de configuration custom de kernel est portable quelle que soit la version de FreeBSD utilisee.
Pour toute question ⇒ /SClo sclo(at)teaser.fr