Dieser Howto liegt MiniLinux distribution for usage on CF Cards or USB Sticks von Flo zugrunde
Basierend darauf gibt es einige Änderungen, die einige Extrafeatures ermöglichen sollen:
- Kernelmodule für ne2000 (ne2k-pci), Realtek und IBM Olympic Token Ring NICs
- Im Router-Mode lauschen sowohl Grub als auch das System auch auf der seriellen Schnittstelle
- libgcrypt11 scheint eine neue Abhängigkeit zu sein und wird mit entfernt
- pppoeconf + pppconfig sind von whiptail abhängig, dass entfernt werden soll;
meines Erachtens unnötige Pakete
Grub
Da syslinux bei mir nicht wollte, habe ich grub einfach direkt installiert :-)
Da das grub-install Skript ein paar Macken hat, machen wir das per Hand:
(Falls grub auf dem build-system nicht installiert sein sollte, können die Dateien aus dem rootfs genutzt werden;
dort wird grub mit der gepatchten Version des Makefile installiert.)
# Dem CF eine primaere Parition verpassen (Type: 0b) # <DEVICE> könnte z.B. für /dev/sda stehen fdisk <DEVICE> # Dateisystem anlegen mkfs.msdos -F 32 <DEVICE>1 mount <DEVICE>1 /mnt mkdir /mnt/grub # Grup Load Dateien kopieren cp /lib/grub/i386-pc/{fat_stage1_5,stage1,stage2} /mnt/grub # Device Map erstellen # (hd1) ist nur ein workaround um nichts an der build-maschine zu veraendern cat << EOF > /mnt/grub/device.map (hd0) /dev/hda (hd1) <DEVICE> EOF cp <BUILD-DIR>/kernel/boot/* /mnt cp <BUILD-DIR>/initrd /mnt # /mnt/grub/menu.lst anlegen # Es kann direkt die unten angegeben verwendet werden grub --no-floppy --device-map=/mnt/grub/device.map in der grub-shell: root (hd1,0) setup --stage2=/mnt/grub/stage2 --prefix=/grub (hd1) quit umount /mnt
Ab hier ist das CF bootfähig!
serieller Zugriff
Um bereits auf den Bootmanager über die serielle Konsole zugreifen zu können, müssen ein paar Eintragunen in der menu.lst gemacht werden.
Dies könnte etwa so aussehen:
default 0 timeout=10 serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console title linux-2.6.9-max (seriell, tty0) kernel (hd0,0)/linux-2.6.9 root=/dev/ram0 console=tty0 console=ttyS0 initrd (hd0,0)/initrd title linux-2.6.9-max (local) kernel (hd0,0)/linux-2.6.9 root=/dev/ram0 initrd (hd0,0)/initrd
Die relevanten Parameter sind einmal die serial-Zeile, die die erste serielle Schnittstelle initialisiert,
sowie die terminal-Zeile, die besagt, dass 10 Sekunden lang sowohl auf der seriellen, als auch auf der lokalen
Konsole auf Input gewartet werden soll und - sofern nicht interaktiv anders entschieden - mit der seriellen gebootet wird.
Der standardmäßig gebootete Kernel schmeisst alle Meldungn primär auf die Serielle.
Die gepatchte Version des Makefiles sollte den entsprechenden Eintrag in der initrd und dem rootfs anlegen und die Konsole in der inittab aktivieren.
Das System
Nun muss nur noch das System - sprich die Datei rootfs.squashfs nach /mnt/rootfs kopiert werden und der Router kann gebootet werden.