Skip to content
  • News
  • Urlaub
  • Bücher
  • Essen
  • Technologie
  • Reviews
  • Galerie
André Sachs's Blog
  • News
  • Urlaub
  • Bücher
  • Essen
  • Technologie
  • Reviews
  • Galerie
HomeTechnologieMinimaler NetBSD-Kernel mit adjustkernel.pl
Technologie

Minimaler NetBSD-Kernel mit adjustkernel.pl

André 29. August 2026 Technologie 3 min read

Liebe NetBSD-Community!

Heute stelle ich euch adjustkernel.pl vor – ein schlankes Perl-Skript, das euren GENERIC-Kernel-Konfig in eine minimale, aber voll funktionsfähige Version umwandelt. Perfekt für Embedded-Systeme, Server mit wenig RAM oder alle, die unnötigen Ballast aus dem Kernel streichen wollen. Basierend auf NetBSD 11.0 (und höher) analysiert es eure aktuelle Konfig, dmesg-Ausgaben und inkludierte Dateien, um nur die tatsächlich genutzten Optionen zu behalten.

Warum minimalisieren?

  • Kleinere Kernel-Größe: Weniger Code = schnellerer Boot, weniger Speicher.
  • Sicherheit: Reduziert Angriffsfläche durch ungenutzte Treiber.
  • Einfach: Kein manuelles Editieren – das Skript macht die Arbeit.

So funktioniert‘s

  1. Aufruf: perl adjustkernel.pl /sys/arch/amd64/conf/GENERIC > MYKERNEL
  2. Analyse:

    • Liest die Haupt-Konfig und alle include-Dateien.
    • Scannt dmesg nach geladenen Modulen.
    • Markiert nur verwendete Optionen (z.B. WSFONT, IPSEC etc.).

  3. Ausgabe: Eine bereinigte Konfig mit Comments, Includes und aktiven Optionen – kompilierbereit!

Das Skript ist robust: Handhabt rekursive Includes, behält leere Zeilen und Comments bei. Hier der vollständige Code (MIT-lizenziert, kopiert und los!):

#!/usr/pkg/bin/perl
#
# adjustkernel.pl – minimal kernel config for NetBSD 11.0
# Author: André <andre@netbsd.nl>
# usage: perl adjustkernel /sys/arch/amd64/conf/GENERIC > MYKERNEL
#

use strict;
use warnings;

my $cfg = shift or die "Usage: $0 <kernel_config>\n";

my %usedopts;
my @incfiles;

# read kernel config and collect option names
sub read_config {
    my $file = shift;
    open(my $fh, '<', $file)
        or die "Cannot open $file: $!\n";
    while (<$fh>) {
        chomp;
        if (/^include\s+"(.*)"$/) {
            push @incfiles, $1;
        } elsif (/^([a-zA-Z0-9_]+)/) {
            $usedopts{$1} = 1;
        }
    }
    close $fh;
}

# read dmesg and mark used options
sub read_dmesg {
    open(my $dmesg, '-|', 'dmesg') or return;
    while (<$dmesg>) {
        if (/^([a-zA-Z0-9_]+)/) {
            $usedopts{$1} = 1;
        }
    }
    close $dmesg;
}

# recursively process includes
sub process_includes {
    foreach my $inc (@incfiles) {
        my $incpath = $inc;
        # try relative to /sys/arch/.../conf
        if (-f $incpath) {
            read_config($incpath);
        }
    }
}

# main logic
read_config($cfg);
read_dmesg();
process_includes();

# print minimal config
open(my $cfg_in, '<', $cfg)
    or die "Cannot reopen $cfg: $!\n";
while (<$cfg_in>) {
    if (/^$/) {
        print;   # empty line
    } elsif (/^#/) {
        print;   # comment
    } elsif (/^include\s+"/) {
        print;   # keep include
    } elsif (/^([a-zA-Z0-9_]+)/) {
        print if $usedopts{$1};
    } else {
        print;   # keep config lines without leading option name (e.g. options assignments)
    }
}
close $cfg_in;

DOWNLOAD [ MD5 (adjustkernel.zip) = 0126a3a7ba70f9197bcaf7455382d3dc ]

Testet es auf eurem System und kompiliert mit cd /sys/arch/amd64/conf && make MYKERNEL – boom, minimaler Kernel! Feedback? Issues? Lasst es mich in den Comments wissen.

Happy hacking! André aus Frankfurt

KernelNetBSDTerminalUnix
Share:

André

Beitrags-Navigation

PreviousKnusprig, fluffig & einfach lecker: Schnelle Quarkbällchen wie vom Bäcker
NextDas freeX-Archiv: 12 Jahre Unix- und Linux-Geschichte jetzt auf GitHub

Related Posts

Technologie

Das freeX-Archiv: 12 Jahre Unix- und Linux-Geschichte jetzt auf GitHub

29. August 2026

Neueste Beiträge

  • Das freeX-Archiv: 12 Jahre Unix- und Linux-Geschichte jetzt auf GitHub
  • Minimaler NetBSD-Kernel mit adjustkernel.pl
  • Knusprig, fluffig & einfach lecker: Schnelle Quarkbällchen wie vom Bäcker
  • Tradition im Bembel: Ein Abend in der Apfelwein Wirtschaft Solzer in Frankfurt-Bornheim
  • Das perfekte Buch für verregnete Herbsttage: Warum „Sea of Charms“ mein Highlight der Buchmesse 2026 ist

Neueste Kommentare

    Archive

    • August 2026
    • Juli 2026

    Kategorien

    • Bücher
    • Essen
    • News
    • Reviews
    • Technologie

    Social Media

    André Sachs's Blog

    © 2026 André Sachs's Blog. All rights reserved.

    {{playListTitle}}
    • {{ index + 1 }}
      {{ track.track_title }} {{ track.track_artist }} {{ track.album_title }} {{ track.length }}
    artwork-hover Player Audio Artwork
    {{list.tracks[currentTrack].track_title}}{{list.tracks[currentTrack].track_artist && typeof sonaar_music.option.show_artist_name != 'undefined' ? ' ' + sonaar_music.option.artist_separator + ' ' + list.tracks[currentTrack].track_artist:''}}
    {{list.tracks[currentTrack].album_title}}
    {{ list.tracks[currentTrack].album_title }}
    Player Audio Artwork
    {{list.tracks[currentTrack].track_title}}
    {{list.tracks[currentTrack].track_artist }}
    {{classes.speedRate}}X
    Player Audio Artwork
    {{list.tracks[currentTrack].track_title}}
    {{list.tracks[currentTrack].track_artist }}
    {{ cta['store-name'] }}