Hatena::ブログ(Diary)

sdkt4aの日記 このページをアンテナに追加 RSSフィード

2008-08-13

FONにOpenWrtを入れよう!

FON La Fonera (ラ・フォネラ) FON機能搭載 無線LANルータ 世界中のFONスポットで無料インターネットが利用可能!
FON La Fonera (ラ・フォネラ) FON機能搭載 無線LANルータ 世界中のFONスポットで無料インターネットが利用可能!
フォン・ジャパン株式会社
売り上げランキング : 70

おすすめ平均 star
starちょっと悪戦苦闘しましたが、無事に使えるようになりました!
star非常にコンパクト!
star使えないプロバイダーがあります。

Amazonで詳しく見る
by G-Tools

楽天でも買えるよー。



ケーブルの用意。

 シリアルコンソールのケーブルの作り方は、FONまとめWikiを参考に。

 http://fon-wiki.maniado.com/index.php?DD-WRT

 先日書いた「マイコンとシリアルポートを繋ぐためのレベルコンバータ(TTL,RS-232c)の自作」を使ってごにょごにょします。

 

f:id:sdkt4a:20080808061658j:image

RedBootへのログイン

 RedBootはFONに使われているブートローダーです(?)

 FONの電源を入れた直後にシリアルコンソールケーブルを接続して、コンソール(linuxだとscreen /dev/ttyS0 9600とか)からCtrl+Cを送ってあげることで、RedBootのコンソールに入ることができます。

Ethernet eth0: MAC address 00:18:84:26:e8:a4
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug  7 2006

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: ap51 
RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 1.000 seconds - enter ^C to abort
^C
RedBoot>

 

 いろいろ弄ったので表示される内容はちょこっと違うかもしれません

OpenWrtを入れる

 OpenWrtを入れるところは、「OpenWRTいってみよう - kuroの覚え書き」を参考にしました。詳しくは、OpenWrtDocs/Hardware/Fon/Foneraにあります。英語だけど簡単なので大丈夫です。

 先人に習い、ファームはKamikaze7.09でいきます。

 まず、必要なファイルをOpenWrtのサイトからダウンロードします。

  • openwrt-atheros-2.6-vmlinux.lzma
  • openwrt-atheros-2.6-root.squashfs

 次に、RedBootで、上記のファイルをTFTPでぶち込みます。TFTPサーバーIPアドレスが10.10.10.32、FONIPアドレスが10.10.10.3だと仮定して続けます。それぞれの環境に合わせて置き換えて読んでください。TFTPサーバーは、WidowsだとPoor TFTP Serverとかを使えば簡単です。

 IPアドレスを設定します。

RedBoot> ip_address -l 10.10.10.3/24 -h 10.10.10.32
IP: 10.10.10.3/255.255.255.0, Gateway: 0.0.0.0
Default server: 10.10.10.32

 TFTPサーバからファームを持ってきます。

RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x801007ff, assumed entry at 0x80040800

 TFTPサーバーが動いてなかったり、LANケーブルをさし忘れてたり(忘れてました><)するとこうなります。

RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
Using default protocol (TFTP)
__udp_sendto: Can't find address of server
Can't load 'openwrt-atheros-2.6-vmlinux.lzma': some sort of network error

 フラッシュを初期化します。

RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
			
Initialize FLASH Image System
... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

 

 フラッシュイメージを作ります。

RedBoot> fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
... Erase from 0xa8030000-0xa80f0000: ............
... Program from 0x80040800-0x80100800 at 0xa8030000: ............
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

 

 空きスペースを確認します。

RedBoot> fis free
  0xA80F0000 .. 0xA87E0000

 空きスペースは 0xA87E0000-0xA80F0000で0x6F0000のようです。

 ファイルシステムのデータをTFTPでぶち込みます。

RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-root.squashfs
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x801607ff, assumed entry at 0x80040800

 ファイルシステムを構築します。

RedBoot> fis create -l 0x006F0000 rootfs
... Erase from 0xa80f0000-0xa87e0000: ........................................................... Program from 0x80040800-0x80160800 at 0xa80f0000: ..................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

0x006F0000はfis freeで表示された値から計算したものです。たぶん同じ値になるはず。んで、これは結構時間かかるので、地味に待ちます。

 いよいよ再起動です。

RedBoot> reset
... Resetting.

 RedBootさんが先に起動して、OpenWrtのイメージを読み込んでます。


			
  1. PHY ID is 0022:5521
Warning: IP address 0.0.0.0 in use Ethernet eth0: MAC address 00:18:84:26:e8:a4 IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0 Default server: 0.0.0.0 RedBoot(tm) bootstrap and debug environment [ROMRAM] Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006 Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. Board: ap51 RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each. == Executing boot script in 1.000 seconds - enter ^C to abort RedBoot> fis load -l vmlinux.bin.l7 Image loaded from 0x80041000-0x80290085 RedBoot> exec Now booting linux kernel: Base address 0x80030000 Entry 0x80041000 Cmdline : Linux version 2.6.21.5 (nbd@ds10) (gcc version 4.1.2) #2 Sun Sep 30 20:16:16 CEST 2007 CPU revision is: 00019064 Determined physical RAM map: memory: 01000000 @ 00000000 (usable) Initrd not found or empty - disabling initrd Built 1 zonelists. Total pages: 4064 Kernel command line: console=ttyS0,9600 rootfstype=squashfs,jffs2 init=/etc/preinit Primary instruction cache 16kB, physically tagged, 4-way, linesize 16 bytes. Primary data cache 16kB, 4-way, linesize 16 bytes. Synthesized TLB refill handler (20 instructions). Synthesized TLB load handler fastpath (32 instructions). Synthesized TLB store handler fastpath (32 instructions). Synthesized TLB modify handler fastpath (31 instructions). PID hash table entries: 64 (order: 6, 256 bytes) Using 92.000 MHz high precision timer. Dentry cache hash table entries: 2048 (order: 1, 8192 bytes) Inode-cache hash table entries: 1024 (order: 0, 4096 bytes) Memory: 13504k/16384k available (1955k kernel code, 2880k reserved, 292k data, 116k init, 0k h ighmem) Mount-cache hash table entries: 512 NET: Registered protocol family 16 Radio config found at offset 0xf8(0x1f8) Time: MIPS clocksource has been installed. NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 512 (order: 0, 4096 bytes) TCP bind hash table entries: 512 (order: -1, 2048 bytes) TCP: Hash tables configured (established 512 bind 512) TCP reno registered squashfs: version 3.0 (2006/03/15) Phillip Lougher Registering mini_fo version $Id$ JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered (default) Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing disabled serial8250: ttyS0 at MMIO 0xb1100003 (irq = 37) is a 16550A eth0: Dropping NETIF_F_SG since no checksum feature. eth0: Atheros AR231x: 00:18:84:26:e8:a4, irq 4 cmdlinepart partition parsing not available Searching for RedBoot partition table in spiflash at offset 0x7d0000 Searching for RedBoot partition table in spiflash at offset 0x7e0000 5 RedBoot partitions found on MTD device spiflash Creating 5 MTD partitions on "spiflash": 0x00000000-0x00030000 : "RedBoot" 0x00030000-0x000f0000 : "vmlinux.bin.l7" 0x000f0000-0x007e0000 : "rootfs" 0x001f0000-0x007e0000 : "rootfs_data" 0x007e0000-0x007ef000 : "FIS directory" 0x007ef000-0x007f0000 : "RedBoot config" nf_conntrack version 0.5.0 (128 buckets, 1024 max) ip_tables: (C) 2000-2006 Netfilter Core Team TCP vegas registered NET: Registered protocol family 1 NET: Registered protocol family 17 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com> All bugs added by David S. Miller <davem@redhat.com> VFS: Mounted root (squashfs filesystem) readonly. Freeing unused kernel memory: 116k freed eth0: Configuring MAC for full duplex Warning: unable to open an initial console. Algorithmics/MIPS FPU Emulator v1.5
  • preinit -
jffs2 not ready yet; using ramdisk mini_fo: using base directory: / mini_fo: using storage directory: /tmp/root
  • init -
init started: BusyBox v1.4.2 (2007-09-29 07:21:40 CEST) multi-call binary Please press Enter to activate this console. device eth0 entered promiscuous mode br-lan: port 1(eth0) entering learning state br-lan: topology change detected, propagating br-lan: port 1(eth0) entering forwarding state PPP generic driver version 2.4.2 wlan: 0.8.4.2 (svn r2568) ath_hal: module license 'Proprietary' taints kernel. ath_hal: 0.9.30.13 (AR5212, AR5312, RF2316, TX_DESC_SWAP) ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (svn r2568) ath_rate_minstrel: look around rate set to 10% ath_rate_minstrel: EWMA rolloff level set to 75% ath_rate_minstrel: max segment size in the mrr set to 6000 us wlan: mac acl policy registered ath_ahb: 0.9.4.5 (svn r2568) ath_pci: switching rfkill capability off ath_pci: switching per-packet transmit power control off wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54 Mbps wifi0: H/W encryption support: WEP AES AES_CCM TKIP wifi0: mac 11.0 phy 4.8 radio 7.0 wifi0: Use hw queue 1 for WME_AC_BE traffic wifi0: Use hw queue 0 for WME_AC_BK traffic wifi0: Use hw queue 2 for WME_AC_VI traffic wifi0: Use hw queue 3 for WME_AC_VO traffic wifi0: Use hw queue 8 for CAB traffic wifi0: Use hw queue 9 for beacons wifi0: Atheros 2315 WiSoC: mem=0xb0000000, irq=3 jffs2_scan_eraseblock(): End of filesystem marker found at 0x0 jffs2_build_filesystem(): unlocking the mtd device... done. jffs2_build_filesystem(): erasing all blocks after the end marker... BusyBox v1.4.2 (2007-09-29 07:21:40 CEST) Built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M KAMIKAZE (7.09) ----------------------------------- * 10 oz Vodka Shake well with ice and strain * 10 oz Triple sec mixture into 10 shot glasses. * 10 oz lime juice Salute! --------------------------------------------------- root@OpenWrt:/#

 

 バイバイFON

 コンニチワOPENWRT!

 ファイルシステムの構成はこんな感じです。

root@OpenWrt:/# df -h
Filesystem                Size      Used Available Use% Mounted on
none                      6.6M     24.0k      6.6M   0% /tmp
tmpfs                   512.0k         0    512.0k   0% /dev
mini_fo:/tmp/root         1.0M      1.0M         0 100% /tmp/root
/dev/mtdblock3            5.9M    328.0k      5.6M   5% /jffs
mini_fo:/jffs             1.0M      1.0M         0 100% /

 IPアドレスは192.168.1.1が割り当てられてます。

root@OpenWrt:/# ifconfig
br-lan    Link encap:Ethernet  HWaddr 00:18:84:26:E8:A4  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2440 (2.3 KiB)  TX bytes:650 (650.0 B)

eth0      Link encap:Ethernet  HWaddr 00:18:84:26:E8:A4  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2776 (2.7 KiB)  TX bytes:1693 (1.6 KiB)
          Interrupt:4 Base address:0x1000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 僕は、LANにぶら下がってるFONが欲しいだけなので、LANポートのWAN化をせずに、IPアドレスのみ変更します。

root@OpenWrt:/# vi /etc/config/network

# Copyright (C) 2006 OpenWrt.org

config interface loopback
        option ifname   lo
        option proto    static
        option ipaddr   127.0.0.1
        option netmask  255.0.0.0

config interface lan
        option ifname   eth0
#        option type     bridge
        option proto    static
        option ipaddr   10.10.10.3
        option netmask  255.255.255.0
        option gateway   10.10.10.2
        option dns       10.10.10.2


 というわけで、FONにOpenWrtが入ったので今日はここまで。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証