NAT-Router #

Ich möchte einen NAT-Router auf einem embedded Board haben. Dazu sind wir folgendermassen vorgegangen: Als erstes habe ich ein neues Linux-System in einem chroot-Jail erzeugt und dieses nach meinen Vorstellungewn angepasst:

  # cd MeinProjektVerzeichnis
  # debootstrap lenny router

Jetzt haben wir ein hübsches Basis-Debian (lenny-Distribution), das in dem Unterverzeichnis "natrouter" erzeugt wurde.

  # chroot router
  # mount proc /proc -t proc

Wir betreten das Verzeichnis mit "chroot", was dazu führt, daß wir uns (fast) wie in einem neuen, eigenen Linux-System fühlen. Natürlich arbeiten wir immer noch auf dem originalen System, daher empfehle ich nach Abschluss der ganzen Aktion einen Reboot des ganzen Systems. Das proc-System mounte ich, weil das chroot-System dadurch etwas "echter" wirkt, was bei der Installation weiterer Pakete ansonsten zu Fehlern führen kann.

  # aptitude install locales
  # dpkg-reconfigure locales
  # aptitude install joe less
  # aptitude install shorewall
  # aptitude install grub
  # aptitude install linux-image-2.6.26-486

Das sind ein paar Pakete, die immer bzw. speziell für unseren Router sinnvoll sind. Arbeitet man auf einem deutsch konfigurierten Muttersystem, sollte man "locales" als erstes installieren und konfigurieren, um Warnings bei den weiteren Paketinstallationen zu vermeiden.

  # umount /proc
  # exit

Jetzt habe ich das chroot-System wieder ordentlich verlassen und schreibe das Verzeichnis dann auf die CF-Karte.

  # cfdisk /dev/sdc

Ich erzeuge eine einzige, grosse Partition mit Filesystemtyp "Linux ext3". Diese mache ich z.B. 512 MB gross. Indem ich nicht die ganze Platte benutze, stelle ich sicher, daß das Image später auch auf verschieden grosse CF-Karten kopiert werden kann.

  # mke2fs -j /dev/sdc1
  # mount /dev/sdc1 /mnt
  # cp -a router /mnt

Jetzt installiere ich den grub-Bootloader:

  # chroot router
  # cp -r /usr/lib/grub/i386-pc /boot/grub
  # exit
  # grub
  grub> device (hd0) /dev/sdb
  grub> root (hd0,0)
  grub> setup (hd0)
  grub> quit