Portál AbcLinuxu, 25. dubna 2024 13:31

Customizing Asus AM200g - I. PREPARATION

20.5.2008 02:05 | Přečteno: 3485× | Linux | poslední úprava: 3.7.2008 01:48

As a fresh ADSL subscriber I became the owner of Asus AM200g ADSL modem/wireless router. The box is quite powerful - it is run by a 256 MHz processor, has 16 MB of RAM and is running Linux, so I'd like to use it for some other useful tasks. Since Asus has not yet released the source code it's not going to be that easy.

I want to touch the original firmware the least possible, so I'm going to add everything to an attached flash drive. But the firmware only supports vfat and squashfs! Because of vfat filesystem limitations I decided to use a squashfs partition to store program files and a vfat one to store data that need to be modified, let's see how it works out. Note that all is done using Mandriva Linux 2008.1.

# urpmi squashfs-tools
$ mksquashfs /tmp/directory /tmp/dir.sqsh
Parallel mksquashfs: Using 1 processor
Creating little endian 3.1 filesystem on /tmp/dir.sqsh, block size 131072.
[==============================================================] 6136/6136 100%
Exportable Little endian filesystem, data block size 131072, compressed data, compressed metadata, compressed fragments, duplicates are removed
Filesystem size 4586.44 Kbytes (4.48 Mbytes)
        8.61% of uncompressed filesystem size (53255.07 Kbytes)
Inode table size 53222 bytes (51.97 Kbytes)
        23.13% of uncompressed inode table size (230058 bytes)
Directory table size 73178 bytes (71.46 Kbytes)
        31.71% of uncompressed directory table size (230774 bytes)
Number of duplicate files found 3581
Number of inodes 7327
Number of files 6092
Number of fragments 224
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 1235
Number of uids 1
        hajma (500)
Number of gids 0
Now I wrote the created image to the flash drive's first partition:
# dd if=/tmp/dir.sqsh of=/dev/sdb1
Rather surprisingly, the firmware only supports squashfs v2.0, so after plugging the flash to the router, it shows in the logs
kernel: SQUASHFS error: Major/Minor mismatch, filesystem is (3:1), I support (1 : x) or (2 : <= 0)
and in addition squashfs v3 does not support creating v2 images. Oh fsck. So I downloaded squashfs2.0-r2.tar.gz and

# urpmi make
# urpmi zlib1-devel

$ tar -xvf squashfs2.0-r2.tar.gz # note that tar now automatically gunzips the file too!
$ cd squashfs2.0-r2/squashfs-tools/
$ make
cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2   -c -o mksquashfs.o mksquashfs.c
mksquashfs.c: In function ‘create_inode’:
mksquashfs.c:476: warning: integer constant is too large for ‘long’ type
mksquashfs.c:489: error: lvalue required as left operand of assignment
mksquashfs.c:541: warning: integer constant is too large for ‘long’ type
mksquashfs.c:546: warning: integer constant is too large for ‘long’ type
mksquashfs.c:549: error: lvalue required as left operand of assignment
mksquashfs.c:568: warning: integer constant is too large for ‘long’ type
mksquashfs.c: In function ‘write_file’:
mksquashfs.c:1030: warning: integer constant is too large for ‘long’ type
mksquashfs.c:1096: warning: integer constant is too large for ‘long’ type
mksquashfs.c: In function ‘dir_scan’:
mksquashfs.c:1275: warning: integer constant is too large for ‘long’ type
mksquashfs.c:1352: warning: integer constant is too large for ‘long’ type
make: *** [mksquashfs.o] Error 1
$
hmm, okay, the old crap does not want to be compiled with gcc 4 ...
# urpmi gcc3.3
$ CC=gcc-3.3.6 make
$ ./mksquashfs /tmp/directory /tmp/dir.sqsh
# dd if=/tmp/dir.sqsh of=/dev/sdb1
After plugging it into the router,
kernel: SQUASHFS: Mounting a different endian SQUASHFS filesystem on sda1
shows up in the logs. Okay, time to try
$ ./mksquashfs /tmp/directory /tmp/dir.sqsh -be
# dd if=/tmp/dir.sqsh of=/dev/sdb1
and I am getting one error message less! But I still see an ugly
kernel: SQUASHFS error: lzma_fs error while decompressing!
kernel: SQUASHFS error: Unable to read cache block [4bea97:7ae]
kernel: SQUASHFS error: Unable to read inode [4bea97:7ae]
kernel: SQUASHFS error: Root inode create failed" and it does not get mounted. 
Googling reveals three links that do not help much. But since decompression is mentioned ... let's try to turn off compression ... :
$ ./mksquashfs /tmp/opends/src /tmp/dir.sqsh -be -noI -noD -noF 
# dd if=/tmp/dir.sqsh of=/dev/sdb1
and voila, it gets mounted!
kernel: usb 1-1: new high speed USB device using address 7
kernel: scsi5 : SCSI emulation for USB Mass Storage devices
kernel: Vendor: USB 2.0 Model: Flash Disk Rev: 0.00
kernel: Type: Direct-Access ANSI SCSI revision: 02
kernel: SCSI device sda: 2047999 512-byte hdwr sectors (1049 MB)
kernel: sda: assuming Write Enabled
kernel: sda: assuming drive cache: write through
kernel: sda1 sda2
kernel: Attached scsi removable disk sda at scsi5, channel 0, id 0, lun 0
kernel: Attached scsi generic sg0 at scsi5, channel 0, id 0, lun 0, type 0
kernel: USB Mass Storage device found at 7
syslog: mkdir -p /var/usb/usb_1
syslog: mount /dev/sda1 /var/usb/usb_1

Next time I'll try to get a jabber server running, time to go sleep now.


Customizing Asus AM200g - V. firmware modification
Customizing Asus AM200g - IV. jabberd configuration
Customizing Asus AM200g - III. jabberd and vim
Customizing Asus AM200g - II. Preparing the environment
       

Hodnocení: 75 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

16.10.2008 09:47 Jakub
Rozbalit Rozbalit vše Re: Customizing Asus AM200g - I. PREPARATION
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobry den,

tenhle clanek je asi o neco dal nez jsem schopen pojmot presto bych vas rad pozadal o radu a sice jak nastavit na tomto modemu port forwarding a staticke pridelovani adres urcitym strojum.

Velice dekuji, Jakub.
hajma avatar 16.10.2008 21:19 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: Customizing Asus AM200g - I. PREPARATION
jak nastavit na tomto modemu port forwarding
to je v manuálu
a staticke pridelovani adres urcitym strojum.
nelze. firmware obsahuje starou verzi udhcp, která to neumí. Mám v plánu dát do fw novou verzi, ale zas tak mě to netíží, tak to pořád odsouvám
21 promarněných znaků
6.8.2009 10:36 tomaso
Rozbalit Rozbalit vše Re: Customizing Asus AM200g - I. PREPARATION
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobry den, tento router se mi nedari nastavit jako klienta ve WIFI siti. Myslite, ze by to mohlo jit upravou firmware nebo customizacnimi skripty, jak to delate vy v tomto clanku? Drive jsem mel ADSL a ted bych se rad pripojil na mistni WIFI sit a modem provozoval pouze jako klienta+router pro domaci lokalni (kabelovou) sit.
hajma avatar 6.8.2009 12:54 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: Customizing Asus AM200g - I. PREPARATION

uprimne receno nevim

21 promarněných znaků

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.