bootstrap:

1) build distribution:

  $ cd /usr/src
  $ ./build.sh -T /opt/tools -O /opt/obj -U distribution

2) apply libc patch:

  $ cd /usr/src
  $ patch < libc.diff

3) install libc includes and rebuild:

  cd /usr/src/lib/libc
  $ /opt/tools/bin/nbmake-i386 OBJDIR=/opt/obj includes
  $ /opt/tools/bin/nbmake-i386 OBJDIR=/opt/obj dependall
  $ /opt/tools/bin/nbmake-i386 OBJDIR=/opt/obj install

4) apply init patch:

  $ cd /usr/src/sbin/init
  $ patch < init.diff

5) unpack ramdisk sources:

  $ cd /usr/src/distrib/i386/floppies
  $ tar xvzf .../ramdisk-cgd.tar.gz

6) adjust ramdisk to your needs (e.g., put a custom cgd config there)

7) build ramdisk:

  $ cd /usr/src/distrib/i386/floppies/ramdisk-cgd
  $ /opt/tools/bin/nbmake-i386 OBJDIR=/opt/obj obj
  $ /opt/tools/bin/nbmake-i386 OBJDIR=/opt/obj dependall

8) build your custom kernel, 3 MB md area should be enough:

  # Enable the hooks used for initializing the root memory-disk.
  options  MEMORY_DISK_HOOKS
  options  MEMORY_DISK_IS_ROOT          # force root on memory disk
  options  MEMORY_DISK_SERVER=0         # no userspace memory disk support
  options  MEMORY_DISK_ROOT_SIZE=6000   # size of memory disk, in blocks
  options  MEMORY_RBFLAGS=0

  # Kernel root file system and dump configuration.
  config   netbsd  root on md0a type ffs

  $ cd /usr/src
  $ ./build.sh -T /opt/tools -O /opt/obj -U kernel=CUSTOM

9) put name of your kernel into ramdisk-cgd/Makefile.kernel and build image:

  $ cd /usr/src/distrib/i386/floppies/ramdisk-cgd
  $ /opt/tools/bin/nbmake-i386 OBJDIR=/opt/obj -f Makefile.kernel