piątek, 3 sierpnia 2007

WRT54G SC/MMC hack/mod

Tunning wykonałem krok po kroku za instrukcją umieszczoną w WRT54G Ultimate Hacking. I niby wszystko było ok .. system widział kartę .. dało się na niej coś zapisać .. jednak podczas instalowania na niej dodatkowych paczek z oprogramowanie router wieszał się po chwili. A to wszystko za sprawą złej kolejności ustawiania maski GPIO oraz ładowania modułu mmc.o.
Prawidłowa kolejność to najpierw maska, potem moduł. Mój skrypt startowy wygląda tak:

root@OpenWrt:# cat /etc/init.d/S20mmc
#!/bin/sh
echo "0x7e" > /proc/diag/gpiomask
insmod mmc gpio_sd_di_pin=2
mount /mnt/mmc

0x7e zamiast 0x9c które można znaleźć w innych HowTo ponieważ mod wykonałem na modelu WRT54GL v1.0 gdzie nie ma (nie znaleziono) miejsca z którego by można wyciągnąć GPIO 5, dlatego też zamiast niego użyłem GPIO 2, a następnie poinformowałem o tym moduł mmc.o przez podanie parametru gpio_sd_di_pin=2. Moduł do systemu plików ładuje za pomocą /etc/modules.d.

Kolejna sprawa która wyskoczyła w tak zwanym miedzy czasie to problem z zainstalowaniem tcpdump'a na zewnętrznej karcie. Wszystko za sprawą systemu plików FAT który uniemożliwia tworzenie symlinków, a takowe chce tworzyć niezbędna do uruchomienia tcpdump'a paczka zbiblioteką pcap. Problem można obejść tworzą kopie odpowiednich plików i nadając im odpowiednie nazwy, ale tracimy przez to niepotrzebnie miejsce.
Wyjście? Formatujemy kartę na ext2. W tym celu musimy zainstalować paczkę e2fsprogs którą znajdziemy w backportach dla wersji RC6 whiterussian. Następnie wykonać komendę:
mkfs.ext2 /dev/mmc/disc0/part1

zainstalować moduł kmod-ext2
ipkg install kmod-ext2

spowodować aby ładował się on przy każdym starcie
echo 'ext2' > /etc/modules.d/30-ext2

zmodyfikować plik /etc/fstab
echo '/dev/mmc/disc0/part1 /mnt/mmc ext2 defaults 0 0' > /etc/fstab

reboot i już :)