OpenWRT: USB Stick als Rootfs mit extroot

Nach der OpenWRT Installation auf dem Router steht für zusätzliche Software nur sehr wenig Speicher zur Verfügung. Wer einen Router mit USB- Port hat, kann OpenWRT einen USB- Stick für das Rootfs und eine Swap Partition verwenden.

Der Einfachheit halber werden die Partitionen und das Dateisystem mit dem PC auf dem Stick angelegt. Verwendet wird ein Stick mit 1GB Speicherkapazität.

Für die Partitionierung des USB- Sticks habe ich fdisk verwendet. Auf die Verwendung von fdisk gehe ich hier nicht näher ein.
Für das Rootfs und Swap ist der USB- Stick wiefolgt partitioniert worden:

  • Rootfs: 600MB, Dateisystem ext3
  • Swap: 300MB

Nach dem man sich per SSH auf dem OpenWRT Router angemeldet müssen die notwendigen Pakete block-mount, block-extroot, block-hotplug, kmod-fs-ext3, kmod-usb-core, kmod-usb-storage und kmod-usb2 installiert werden.

In OpenWRT Backtrack existiert ein Bug, der beim Systemstart das autom. Mounten der Rootfs Partition verhindert. Als Workaround editiert man das Script /etc/init.d/fstab und kommentiert die Zeile

echo 'WARNING: this is an auto ....

mit # aus.

Danach folgt die Änderung der /etc/config/fstab:

config global automount
        option from_fstab 1
        option anon_mount 1

config global autoswap
        option from_fstab 1
        option anon_swap 1

config mount
        option target   /overlay
        option device   /dev/sda1
        option fstype   ext3
        option options  rw,sync
        option enabled  1
        option enabled_fsck 1
        option is_rootfs 1

config swap
        option device   /dev/sda2
        option enabled  1


ACHTUNG: Wenn man als target nicht /overlay verwendet, dann wird /dev/sda1 nicht für das Rootfs verwendet.

Anschließend kann die Rootfs- Partition des Sticks gemountet und die Daten des bestehenden Rootfs auf den Stick kopiert werden.

mount /dev/sda1 /mnt
cp -a /overlay/* /mnt
umount /dev/sda1

Nach dem Reboot des Router sollte die Ausgabe von mount in etwa so aussehen:

rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/sda1 on /overlay type ext3 (rw,sync,relatime,errors=continue,data=writeback)
mini_fo:/overlay on / type mini_fo (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)

/dev/sda1 ist in /overlay eingehängt worden und wird von mini_fo als Rootfs Overlay verwendet. Die Ausgabe von free gibt Auskunft darüber, ob die Swap-Partition verwendet wird.  Wenn in der Zeile Swap 0 steht wird die Swap- Partition nicht verwendet und kann mit

swapon

aktiviert werden.

« OpenWRT Firewall Log aktivieren Upgrade von openSuSE 11.3 auf 11.4 »