Slide 1

Slide 1 text

近況まとめ 東海道らぐ 横浜 2018冬 @musashino205

Slide 2

Slide 2 text

自己紹介 • HN: 武蔵野, 大破 • musashino_205 • musashino205 @mstdn.maud.io • 続きはWebで: taiha.net, 大破.net

Slide 3

Slide 3 text

OpenWrtとは • ルータ等の組込デバイス向けLinuxディストリビューション • 見方を変えると → 組込Linux開発環境 • サポート済み各SoCに最適化されたLinuxイメージの生成 • 組込デバイスに特化したユーティリティ類 • dnsmasq, dropbear, busybox, ... • デバイス用ファームウェア生成ツール類 Linuxカーネルからファームウェアまで スライド: https://speakerdeck.com/musashino205/fall-openwrt

Slide 4

Slide 4 text

法律関係 • 市販ルータ(技適取得済み)へのサードパーティファームウェア導 入は “改造” に該当する可能性がある • 技適認証が無効扱いになる • OpenWrt等サードパーティファームウェアをインストールする場合、 電波は原則として出力しない • Raspberry Pi等は例外 法律を守って楽しいhackを。

Slide 5

Slide 5 text

近況

Slide 6

Slide 6 text

近況 • 機種のサポート追加(初夏の横浜以降(2018.08~)) • マージ済み • BUFFALO • BHR-4GRV (2011.08上旬 – ?(販売終了)) • BHR-4GRV2* (2014.06上旬 – ) • WZR-HP-G302H (2010.12上旬 – ?(販売終了)) • I-O DATA • ETG3-R (2013.03下旬 – 2018.03.07) • WN-AG300DGR (2012.8下旬 – 2013.11.13) • WN-AC1167DGR (2013.09中旬 – 2014.12/24) • WN-AC1600DGR2 (2014.03中旬 – 2014.10.01) • ELECOM • WRC-300GHBK2-I (2015.07下旬 – ?(販売終了)) * : ar71xx -> ath79移植

Slide 7

Slide 7 text

近況 • 機種のサポート追加(続き) • 作業中 • BUFFALO • WXR-2533DHP (2015.06中旬 – ?(販売終了)) • I-O DATA • WN-AC1167GR (2014.10下旬 – 2018.02.14) • WN-AC1600DGR (2013.06中旬 – 2014.07.16) • ELECOM • WRC-733GHBK (2013.10下旬 – ?(販売終了)) • WRC-1750GHBK2-I/C (2015.01中旬 – ?(販売終了)) • NEC • WG800HP (2016.04.14 – ?(販売終了)) • stock firmware → OpenWrtベース • 作業中(特別挑戦枠) • NEC • WR8750N (2012.01中旬 – ?(販売終了)) • NetBSD機

Slide 8

Slide 8 text

NEC Aterm WR8750N

Slide 9

Slide 9 text

NEC Aterm WR8750N • ハードウェア仕様 • SoC: Atheros AR9344 (1C1T, 560MHz) • RAM: 128 MB (DDR2 64MB x2) • Flash: 8 MB (SPI-NOR) • Ethernet: 1000 Mbps x5 • Switch: Atheros AR8327 • USB: USB 2.0 Type-A x1 • ソフトウェア仕様 • Bootloader: 不明(オリジナル?) • OS: NetBSD • Baudrate: 9600 bps ハードウェアは(RAMだいぶ多いけど)至って普通、ソフトウェアは(民生 用としては)異色

Slide 10

Slide 10 text

NEC Aterm WR8750N • 元々NECのNetBSD機は避けていた • Linuxをブートできなさそう • 色々めんどくさそう • が。 • SoCが古すぎない, GbE機, ...などの条件の機種が尽きてきた • まだ多少あるけど • AR9342 / AR9344はまだまだ使えるので興味が湧いた • USBポートあるし使い勝手良さそう • NetBSDブートできるならLinuxだってブートできるやろ(←???????? • NEC機は似たソフトウェア構成の機種が多い • この機種サポートできれば他機種もワンチャン

Slide 11

Slide 11 text

NEC Aterm WR8750N • レッツトライ • BootloaderとKernelにパスワードが掛けられている • Bootloaderは5chにヒント有 • TFTPで流し込むことはできそう • tftpd コマンドでTFTP待ち受け、クライアントからTFTP PUT • OpenWrtのinitramfs (Kernel + ramfs Root) ファームで試行 できそう

Slide 12

Slide 12 text

NEC Aterm WR8750N • Bootloaderコマンド類(主要なもの) • boot: Load済みイメージをブート • tftpd: TFTPサーバ開始 • debug: 各種デバッグコマンド • debug memory: メモリ系デバッグコマンド • debug memory read 0xb805002c 1 • 0xb805002cから1word(32bit)読み出し • debug flash: Flash系デバッグコマンド • debug flash info • Flash情報表示 • debug flash read 0xbf000000 100 • 0xbf000000から100byte読み出し

Slide 13

Slide 13 text

NEC Aterm WR8750N • 進捗 • gzip-compressedなOpenWrtのLinux Kernelを開始すること はできた

Slide 14

Slide 14 text

start tftp load openwrt-ath79-tiny-nec_wr8750n-i end tftp load length = 3583343 start memory load ... memory load complete begin : 0x80060000 length : 3583319 startup: 0x80060000 boot begin : 0x80060000 length : 3583319 startup: 0x80060000 option: 0x0 [ 0.000000] Linux version 4.14.87 (tofu@tofu-z77hvub18_openwrt) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r8695-1eb39ece8d)) #0 Tue Dec 11 13:11:03 2018 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 0001974c (MIPS 74Kc) [ 0.000000] MIPS: machine is NEC Aterm WR8750N [ 0.000000] SoC: Atheros AR9344 rev 1 [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 08000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] random: get_random_bytes called from 0x8045772c with crng_init=0 ...

Slide 15

Slide 15 text

NEC Aterm WR8750N • 進捗 • gzip-compressedなOpenWrtのLinux Kernelを開始すること はできた • お!?!?!?

Slide 16

Slide 16 text

NEC Aterm WR8750N • 進捗 • gzip-compressedなOpenWrtのLinux Kernelを開始すること はできた • お!?!?!? • が。

Slide 17

Slide 17 text

[ 1.048781] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 1.124770] TCP: Hash tables configured (established 1024 bind 1024) [ 1.200908] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 1.270713] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 1.345915] NET: Registered protocol family 1 [ 1.511715] Crashlog allocated RAM at address 0x3f00000 [ 1.575637] workingset: timestamp_bits=30 max_order=15 bucket_order=0 [ 1.657573] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.727362] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ IPL:SOFT-RESET memory test ... ok flinistall OK boot version: 1.0.0 PKG “Orthos-HP” CPU “Atheros/AR9344” Revision 212.1 CLOCK 560.0 MHz HEAP MEMORY 262144 bytes Boot: InitFilesystem phy0.1: “Atheros/AR8327(SW)” phy0.0: “Atheros/AR8327(phy)” active ch:0 now booting Firmware ... loaded Firmware ... (以降FlashからNetBSDのブート)

Slide 18

Slide 18 text

NEC Aterm WR8750N • 進捗 • gzip-compressedなOpenWrtのLinux Kernelを開始すること はできた • お!?!?!? • が。 • ブートが途中で中断され、soft-resetが掛かって再起動されてし まう • この原因は不明 • 複数の方より 「watchdog timer (wdt) では」 という指摘 • DTSで無効にしても変わらず • 要検証 • 原因を特定できず作業が行き詰まり • ヘルプミー!!!!!

Slide 19

Slide 19 text

おわり