Lumidan

Instalace oleg firmware na Asus WL500g Premium

Toto je postup, jak nainstalovat oleg firmware na router Asus WL500gP. Zvládne to i kdejaký uživatel začátečník, otázka však je, jestli ten to bude potřebovat...
24.03.2008 v 12:46
Důvodů pro instalaci oleg formwaru je mnoho. Mojí motivací byla naprostá nemožnost jakýmkoliv způsobem zasáhnout do routeru, připojit se na něj přes SSH, případně z linuxu stahovat bittorentem soubory. Pravda, Asus nabízí download manager, ale ten je jen pro windows a pod wine šlo přidávat pouze ftp a http požadavky. Takové drobnosti, jako nemožnost změnit login administrátora, rozšířený syslog atd. bych už překousnul.
Základním předpokladem pro možnost rozšířené konfigurace je připojený externí USB disk, ale pro instalaci oleg to není bezpodmínečně nutné. Já nyní používám USB flash disk 4GB.
Postupoval jsem podle návodu na http://wl500g.info/showthread.php?t=10307. Návod je naprosto dokonalý, leč například cron se mi podle jejich návodu nepodařilo zprovoznit, proto uvedu mírnou modifikaci v mém případě.
Na stránce http://oleg.wl500g.info/ je ke stažení nejnovější firmware. Já použil verzi 1.9.2.7-9. Stáhnul jsem si balíček WL500gp-1.9.2.7-9.zip, který obsahuje .trx firmware. Před samotnou instalací je nutné resetovat nastavení routeru. Pro případ, že by se upgrade nepovedl, nebo v případě, že bych se chtěl vrátit jsem si v administračním rozhraní stáhnul ještě stávající konfiguraci. Pro jistotu jsem si také stáhnul původním firmware ze stránek Asusu.
Upgrade firmware
Ve výše uvedeném návodu doporučují upgrade pomocí nástroje firmware restoration. Jelikož používám linux, netroufl jsem si firmware upgradovat přes wine, proto jsem upgrade udělal přes admin rozhraní. Proces trval cca 3 minuty, stránka se automaticky sama načte. Pokud IP adresu získáváte přes DHCP, měl by vám internet začít hned chodit. Pokud ne, musíte si router nakonfigurovat podle poskytovatele, návod by měl být identický jako v případě originálního firmware.
Před dalším postupem je doporučováno vypnout FTP, sambu a NFS. Pro prvotní instalaci musí být povolen telnet a je dobré si také změnit login (defaltní je admin) a heslo (admin).
Připojte se přes telnet k routeru (ve windows je asi nejlepší volbou putty). Adresa routeru je 192.168.1.1. Po připojení zkuste pignout nějaký vnější server, například:
ping www.abclinuxu.cz
PING abicko.abclinuxu.cz (195.70.150.7): 56 data bytes
84 bytes from 195.70.150.7: icmp_seq=0 ttl=56 time=7.9 ms
84 bytes from 195.70.150.7: icmp_seq=1 ttl=56 time=13.8 ms
84 bytes from 195.70.150.7: icmp_seq=2 ttl=56 time=7.2 ms
--- abicko.abclinuxu.cz ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 7.2/9.6/13.8 ms
CTRL+C zruší pingování. Když nebude chodit internet, nedoporučuji pokračovat a zabívat se rozchozením internetu :-).
Instalace SSH daemona
Jako SSH daemon je na routeru předinstalován dropbear. Rozdíly oproti openssh neznám, nicméně vypadá to, že umožňuje stejné základní funkce, které potřebuji. Je zapotřebí vytvořit adresář s konfigurací daemona:
mkdir -p /usr/local/etc/dropbear
, vygenerovat klíče
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
a vytvořit spouštěcí skripty
mkdir -p /usr/local/sbin/
touch /usr/local/sbin/post-boot
touch /usr/local/sbin/post-firewall
touch /usr/local/sbin/post-mount
touch /usr/local/sbin/pre-shutdown
chmod +x /usr/local/sbin/*
a vložit spouštění dropbear po spuštění systému
echo "#!/bin/sh" >> /usr/local/sbin/post-boot
echo "dropbear" >> /usr/local/sbin/post-boot
(Kdo chce, může použít editor vi, ale já ho pro svojí ne-user friendly rozhraní přímo nenávidím, ale nevyheme se mu:-(). Po spuštění dropbear by měl už být vidět ve výpisu procesů (ps aux). Protože změny provádíme zatím pouze v RAMce, je nutné je ještě flashnout příkazem flashfs save && flashfs commit && flashfs enable && reboot.
Po rebootu doporučuji vypnout telnet a již nadále používat pouze ssh (ve windows pořád putty, jen se změní protokol).
Příprava disku
Zde je nutné vědět na co vlastně router chcete, co s ním budete dělat. Po připojení externího disku je dobré minimálně vytvořit swap a partition pro data. Pokud nebudete dál pokračovat v instalaci, asi vystačíte se swapem i jen 32MB, klidně i bez něj, a zbytek na data. Pokud budete instalovat další balíčky, stačí také 32MB, jeden oddíl na souborový systém /opt o velikosti řekněme 128MB až 256MB (i to už je hodně) a zbytek na data. Pokud si chcete s routerem hrát a budete instalovat gcc jako já, asi je dobrá použít swap 64MB, ipkg 1GB a zbytek data. Při instalaci podle výše uvedeného návodu jsem se nechal unést doporučením a na swap použil 256MB, ipkg 1GB a zbytek data. Nicméně zkušeností jsem zjistil, že i SWAP 128MB booohatě stačí (zjistil jsem, že systém téměř vůbec neswapuje), na IPKG tak tak stačí 512MB (po instalaci gcc mám na ipkg použitých 351MB) a zbytek můžou být data. otázkou zůstává, zda zmíněných 32MB na swap není zbytečná paranoia, jestli by nestačilo i méně. Netroufám si říci s jistotou, ale pokud router funguje i bez swapu, tak bych řekl že bude fungovat i s 4MB swapem :-))). Zde je důležité zmínit, že router umí číst i psát FAT32 a ext2/ext3. Pokud nehodláte tahat disk k lidem co fungujou na windowsech, doporučuji ext3 souborový systém, už jen kvůli podpoře souborů větších než 2GB.
Po rozmyšlení problému doporučuji přistoupit k samotnému rozdělení disku. Možná bude potřeba nainstalovat moduly pro podporu USB disků (nicméně u mě to nebylo potřebné, ale za zkoušku nic nedáte:-) ):
insmod scsi_mod
insmod sd_mod
insmod usb-storage
. Po zasunutí disku do USB konektoru je zapotřebí zjistit, do kterého místa byl disk připojen a to příkazem df. Výsledek by měl být zhruba následující:
Filesystem            Size  Used Avail Use% Mounted on
rootfs                3.0M  3.0M     0 100% /
/dev/root             3.0M  3.0M     0 100% /
/dev/discs/disc0/part2
                      965M  351M  566M  39% /opt
/dev/discs/disc0/part3
                      2.6G   65M  2.4G   3% /tmp/mnt/disc0_3
, s tím, že bude pravděpodobně existovat jen jeden přípojný bod /tmp/mnt/disc0, resp. /tmp/harddisk (to je link na skutečné umístění). Příkazem umount /přípojný_bod odmountujte disk. Pokud se to nezdaří, asi bude zapotřebí vypnout sambu, nebo FTP daemony.
Následuje rozdělení disk fdiskem. POZOR! při tomto procesu příjdete o svá data, pokud je to třeba, zálohujte. Příkazem fdisk /dev/discs/disc0/disc rozdělte disk na požadovaný počet partition. Příkaz m zobrazí nápovědu, p zobrazí dostupné oddíly, d smaže oddíly a n vytvoří nový oddíl. Vytvořte primární oddíly, první swap (typ 82), další linux (83) a poslední také. Zvolené počty oddílů upravte podle svých požadavků. Příkazem w zapíšete změny na disk.
Příkazem fdisk -l byste měli vidět přibližně následující seznam oddílů:
Disk /dev/scsi/host0/bus0/target0/lun0/disc: 4110 MB, 4110417920 bytes
127 heads, 62 sectors/track, 1019 cylinders
Units = cylinders of 7874 * 512 = 4031488 bytes

                                 Device Boot    Start       End    Blocks   Id  System
/dev/scsi/host0/bus0/target0/lun0/part1               1          65      255874   82  Linux swap
/dev/scsi/host0/bus0/target0/lun0/part2              66         320     1003935   83  Linux
/dev/scsi/host0/bus0/target0/lun0/part3             321        1019     2751963   83  Linux
.
Teď můžeme přistoupit k zapnutí swapu:
mkswap /dev/discs/disc0/part1
swapon /dev/discs/disc0/part1
. Příkazem free je možné zjistit dostupnou paměť:
             total       used       free     shared    buffers     cached
Mem:         30172      29020       1152          0       3472      14952
-/+ buffers/cache:      10596      19576
Swap:       255864       2348     253516
(zde je vidět, že zrovna swap není moc používán).
Příkazy
mke2fs -j /dev/discs/disc0/part2
mke2fs -j /dev/discs/disc0/part3
vytvoříte ext3 oddíly. Přepínač -j specifikuje vytvoření žurnálu na oddílu (bez tohoto přepínače by se vytvořil ext2).
Pomocí editoru vi /usr/local/sbin/post-boot vyeditujeme post-boot soubor následujícím způsobem:
mount /dev/discs/disc0/part2 /opt
i=0
while [ $i -le 30 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i=`expr $i + 1`
done

mount /dev/discs/disc0/part3 /tmp/harddisk
swapon /dev/discs/disc0/part1
/opt/etc/init.d/rc.unslung
. To zabezpečí po startu namountování /opt oddílu (viz dále), největšího oddílu harddisku do /tmp/harddisk, zapnutí swapu a spuštění všech zaváděcích skriptů v /opt/etc/init.d/* (viz dále).
Následuje flashnutí změn příkazy flashfs save && flashfs commit && flashfs enable && reboot a reboot systému.
Příkazy free a df -h je možné ověřit dostupnost swapu a namountovaných diskových oddílů.
Protože adresář /opt/etc/init.d neexistuje (včetně zaváděcího skriptu rc.unslung) je nutné je vytvořit:
mkdir /opt/etc
mkdir /opt/etc/init.d
vi /opt/etc/init.d/rc.unslung
, do rc.unslung vložit následující příkazy:
#!/bin/sh
#
for i in /opt/etc/init.d/S??* ;do
# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue
case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done
a udělat rc.unslung spustitelný chmod +x /opt/etc/init.d/rc.unslung. Skript rc.unslung zabezpečí spuštění všech skriptů v init.d začínajících písmenem S a to podle abecedy/pořadí (např. S01, S50, S99 atd.).
IPKG - správce balíčků
IPKG je správce balíčků (něco jako synaptic, yast apod.). Existují dva správci, výchozí ipkg a pokročilý ipkg-opt. Liší se pouze tím, jaký používají adresář. ipkg-opt pracuje v /opt, to je důvod proč byl vytvořen samostatný oddíl /opt, do kterého se budou stahovat balíčky a instalovat aplikace (samozřejmě, že by to šlo řešit také jedním oddílem a link /tmp/harddisk jednoduše bude odkazovat do /opt/data, ale oddělené oddíly mají své kouzlo například v zálohování). Příkazy
mkdir /opt/tmp
mkdir /opt/tmp/ipkg
cd /opt/tmp/ipkg
se vytvoří adresář pro dočasné soubory .ipk a zároveň se tam přesuneme. Následuje sekvence příkazů
wget http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ipkg-opt_0.99.163-9_mipsel.ipk
ipkg.sh install ipkg-opt_0.99.163-9_mipsel.ipk
wget http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/uclibc-opt_0.9.28-13_mipsel.ipk
ipkg.sh install uclibc-opt_0.9.28-13_mipsel.ipk
ipkg update
, která stáhne balíčky ipkg-opt, knihovnu uclibc (o té nic bližšího nevím, ale asi je zapotřebí), nainstaluje je a nový správce ipkg (ten je nyní v systému v /opt/bin) updatuje databázi balíčků. Nyní je možné kdykoliv příkazem ipkg list_installed kdykoliv zjistit, jaké balíčky jsou nainstalované. Příkaz ipkg remove odstraní vybraný balíček a ipkg upgrade provede upgrade nainstalovaných balíčků do nové verze (pokud je dostupná).
Midnight commander
ipkg install mc nainstaluje midnight commander.
Pro mc je dobré nastavit alias pro barvu a externí proměnnou TERMINFO:
echo "export TERMINFO=/opt/share/terminfo">>/opt/etc/profile
echo "alias mc=\"mc -c\"">>/opt/etc/profile
. Protože /opt/etc/profile je spuštěn z /usr/etc/profile jako spustitelný, musí se nastavit ještě příznak spustitelného souboru chmod +x /opt/etc/profile. Podobným způsobem je dobré nastavit ještě alias pro alias df="df -h", aby čísla byla srozumitelná lidem. Zde bych ještě zdůraznil na nastavení cesty LD_LIBRARY_PATH=/opt/lib:${LD_LIBRARY_PATH} v /opt/etc/profile. Toto nastavení dělá problémy se zrušením cest ke spustitelným souborům. Potom přestanou záhadně fungovat některé programy (man, prohlížení .bz souborů apod). Pokud se vám toto kdykoliv stane, je to pravděpodobně způsobeno tímto nastavením (program potom hlásí Permission denied).
Nástroje
Instalace dalších nástrojů:
ipkg install coreutils
ipkg install findutils
ipkg install diffutils
ipkg install screen
ipkg install nano
ipkg install procps
ipkg install less
ipkg install unzip
ipkg install hdparm
ipkg install man
ipkg install man-pages
umožní mj. zobrazování manuálních stránek, hledání souborů a zejména (z mého hlediska) je možné používat už editor nano, který je proti vi snad tisíckrát vyspělejší:-). Doporučuji do /opt/etc/profile (nano /opt/etc/profile) zapsat
export EDITOR="/opt/bin/nano"
a to z důvodu budoucí úpravy tabulky cronu, případně úpravy dalších souborů. od teď je možné získat nápovědu z manuálních stránek (např. man ps).
CRON
ipkg install cron
nainstaluje cron daemona. Vytvoříme adresáře:
mkdir /opt/etc/cron.5mins
mkdir /opt/etc/cron.hourly
mkdir /opt/etc/cron.daily
mkdir /opt/etc/cron.weekly
mkdir /opt/etc/cron.monthly
, příkazem
nano /opt/var/cron/cron.allow
vložíme do nového souboru jméno zvoleného uživatele a root (chceme abysme měli přístup ke cronu), a příkazem
crontab -e
vyeditujeme tabulku cronu uživatele následujícím způsobem:
# m h  dom mon dow   command
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
# Syntax for lines is : minute hour day month dayofweek command #
*/5 * * * * run-parts /opt/etc/cron.5mins
0 * * * * run-parts /opt/etc/cron.hourly
0 0 * * * run-parts /opt/etc/cron.daily
0 0 * * 0 run-parts /opt/etc/cron.weekly
0 0 1 * * run-parts /opt/etc/cron.monthly
a příkazem
nano /opt/sbin/run-parts
vytvoříme následující soubor:
#!/bin/sh
#
# runparts.sh by macsat@macsat.com
# intended for use with cron
#
# based on rc.unslung by unslung guys :-)
#
if [ -z "$1" ]
then
echo "Usage : $0 "
fi

RUNDIR=$1"/*"

for i in $RUNDIR ;do

# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue

case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done
(ten je standardně v každé distribuci). Zde musím poznamenat, že návod z http://wl500g.info/showthread.php?t=10307 s /opt/etc/crontab mi nefungoval (a nevím, kde donutit cron, aby bral tuto systémovou tabulku). Navíc jsem musel ještě ručně povolit cron uživateli (viz výše soubor cron.allow). Nastavíme ještě spustitelný příznak pro run-parts:
chmod +x /opt/sbin/run-parts
.
Příkazem
nano /opt/etc/cron.daily/ipkgupdate
vytvoříme nový soubor s obsahem:
#!/bin/sh
#
# update the ipkg
/opt/bin/ipkg update
a bastavíme příznak spustitelného souboru
chmod +x /opt/etc/cron.daily/ipkgupdate
Tím zajistíme denní aktualizaci databáze balíčků.
Následuje opět reboot flashfs save && flashfs commit && flashfs enable && reboot. Po rebootu by měl být v procesech již spuštěný cron. Pokud ne, někde jste udělali chybu :-).
Podle výše (a dále níže) uvedených návodů je možné místo editoru nano používat také editor vi anebo midnight commander.
Torrent a nastavení rotování logu
Konečně se dostáváme k té části, která přispěla k tomu, abych změnil firmware.
ipkg install logrotate
ipkg install gnuplot
ipkg install libbt
ipkg install transmission
. Po trošku delší instalaci (možná že znáte GNUPlot také z windows systému, já jej používal už na vysoký škole) vytvoříme adresáře
mkdir /tmp/harddisk/torrent
mkdir /tmp/harddisk/torrent/source
mkdir /tmp/harddisk/torrent/work
mkdir /tmp/harddisk/torrent/target
a nastavíme jim příznaky pro zápis všem uživatelům
chmod ugoa+w /tmp/harddisk/torrent
chmod ugoa+w /tmp/harddisk/torrent/source
chmod ugoa+w /tmp/harddisk/torrent/target
chmod ugoa+w /tmp/harddisk/torrent/work
Vyeditujte soubor /opt/etc/transmission.conf
nano /opt/etc/transmission.conf
a případně si změňte nastavení torrent klienta:
MAX_ACTIVE_TORRENTS=5
pro maximálně 5 aktivním torrentů,
UPLOAD_SPEED=10
pro maximální upload 10kB/s,
DOWNLOAD_SPEED=200
pro maximální download 200kB/s apod.
Pomocí crontab -e vyeditujte crontab a vložte řádek
*/30 * * * * nice transmission_watchdog
, který zajistí spuštění torrenta každou půlhodinu (resp. zajistí kontrolu, zda byl přidán nový zdroj, viz dále).
Nastavení rotování logu zajistíme řádkem
0 0 * * * /opt/sbin/logrotate -f /opt/etc/logrotate.conf &>/dev/null
v crontab. Řádek zajistí spuštění logrotate s konfigurací /opt/etc/logrotate.conf, výstup přesměruje do /dev/null a spustí se na pozadí. Zároveň upravíme /opt/etc/logrotate.conf:
compress
/var/log/messages {
        size 1024k
        weekly
        rotate 9
        postrotate
        killall -HUP syslogd
        endscript
}
include /opt/etc/logrotate.d
a zajistíme spuštění syslog daemona vytvořením souboru /opt/etc/init.d/S05syslogd (nano /opt/etc/init.d/S05syslogd):
#!/bin/sh
#
# Startup script for syslogd
if [ -n "`pidof syslogd`" ]; then
killall syslogd >>/dev/null
fi
# copy content of original syslogd to new syslog.
cat /tmp/syslog.log >> /opt/var/log/messages
# remove old syslog.log
rm /tmp/syslog.log
# add symlink so log is available at old location (e.g. for webinterface)
ln -s /opt/var/log/messages /tmp/syslog.log
/sbin/syslogd -m 0 -O /opt/var/log/messages -S -l 7
Nastavíme mu spustitelný příznak chmod +x /opt/etc/init.d/S05syslogd, zapíšeme do flashky a restartujeme flashfs save && flashfs commit && flashfs enable && reboot.
Po rebootu zkuste příkaz transmission_watchdog. Transmission by měl být nyní ve výpise procesů (ps aux). Na adrese http://router_ip:8008/cgi-bin/transmission.cgi je nyní k dispozici manager pro sledování přenosů. Pokud přidáte do adresáře /tmp/harddisk/torrent/source jakýkoliv .torrent zdroj. Po kliknutí na update v manageru lze updatovat zdroje. (Update - updatuje zdroje, Push - vloží/suspenduje zdroje, List - výpis všech zdrojů, Log - výpis logu plus statistika z GNUPlot, Pause - pozastaví stahování, Watchdog - spuštění watchdogu z webového rozhraní, Remove - odstranění stahování (lze jen suspendovaný zdroj), Fetch - vloží .torrent zdroj do fronty)
Další nástroje
Doporučuji nainstalovat ještě balíček lynx (konzolový webový prohlížeč) nload (statistika sítě)
Vývoj aplikací
Balíčkem ipkg-opt -t /opt install optware-devel je možné nainstalovat podporu vývoje aplikací a balíčkem ipkg -t /opt install buildroot se nainstaluje gcc/g++. Přepínač -t je nutný v případě, ze používáte výchozí ipkg a ne ipkg-opt. Instalace zabere nějaký ten čas, takže si skočte na kafíčko :-))).
Zkuste jednoduchou aplikaci:
#include
int main()
{
        printf("Hello World\n");
        return 0;
}
a přeločte příkazem gcc pokus.c a testněte svou první embedded aplikaci ;-).
To je zatím vše.
 

Komentáře

Zobrazit vše Počet příspěvků: 89 , poslední 07.03.2020 01:26:21
I am happy to read and hear this kind of news. Bobbyrok 07.03.2020 01:26:21
viagra Faixbenna 09.09.2011 06:16:28
pozycjonowanie warszawa Fubunfada 09.01.2011 03:42:40
Best way to lose weight OralihalNig 03.01.2011 02:21:00
Alice was source to take home very tired of sitting not later than her sister on the bank, and of having nothing to do once. verbeagenry 01.12.2010 09:06:27
 Přidat komentář 
Uživatelské jméno

Heslo


Zaregistrovat


S-Rank
Google PageRank
WebRank

Jaký operační systém především používáte na svém počítači.
Windows
Windows
GNU/Linux
GNU/Linux
Mac OS
Mac OS
Unix
Unix
Jiný
Jiný
Na těchto stránkách bych uvítal více ...
Politiky
Politiky
Zábavy
Zábavy
Praktických linuxových rad
Praktických linuxových rad
Něco jiného (napíšu to do questbooku)
Něco jiného (napíšu to do questbooku)

TOPlist

optimalizace PageRank.cz
vokno - vyhledávací server s lokalizací místní i na mapách ČR od Geodézie ČS
Toplink - katalog odkazů
klikni.cz
alfa.elchron.cz

Svobodni.cz

Creative Commons License