この前購入したジャンクのWRC-X3200GST3-Bなんだけど、Flashメモリを剥がす前にとりあえずmtk_uartbootからinitramfs用なOpenWRTを起動できるのでそこからFlashメモリをいじってみることに。フラッシュメモリが壊れたのか、前オーナーがフラッシュメモリ飛ばしてしまったからジャンクとして売り飛ばしただけなのかを確認してみることに。
まずは前回同様に別なモデルのFIPを使ってmtk_uartbootで起動して、TFTPでinitramfsのOpenWRTを流し込む。openwrt-25.12.5-mediatek-mt7622-bananapi_bpi-r64-snand-bl31-uboot.fipでも起動することが出来た。
インターネットに繋ぎたいのでWANにインターネットに繋がってるLANケーブルを接続。
mtd-rwをインストールする。インストール完了したらSSHで接続し、
insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1
mtdの書き込みを有効にする。これでdmesgを見てみると
[ 6014.438259] mtd-rw: mtd0: setting writeable flag [ 6014.493693] mtd-rw: mtd1: setting writeable flag [ 6014.549047] mtd-rw: mtd2: setting writeable flag [ 6014.604385] mtd-rw: mtd3: setting writeable flag [ 6014.659727] mtd-rw: mtd4: setting writeable flag [ 6014.715091] mtd-rw: mtd7: setting writeable flag [ 6014.770468] mtd-rw: mtd8: setting writeable flag [ 6014.825809] mtd-rw: mtd9: setting writeable flag [ 6014.881170] mtd-rw: mtd10: setting writeable flag
のようにmtdパーティションが書き換え可能になる。
試しに書き換える前になんか入ってるのか確認してみる。
root@OpenWrt:~# cat /proc/mtd dev: size erasesize name mtd0: 00080000 00020000 "Preloader" mtd1: 00040000 00020000 "ATF" mtd2: 00080000 00020000 "u-boot" mtd3: 00080000 00020000 "u-boot-env" mtd4: 00100000 00020000 "factory" mtd5: 00600000 00020000 "kernel" mtd6: 01300000 00020000 "ubi" mtd7: 00500000 00020000 "tm_pattern" mtd8: 00100000 00020000 "tm_key" mtd9: 00f00000 00020000 "user_data" mtd10: 04500000 00020000 "reserved" root@OpenWrt:~# hexdump -C -n 64 /dev/mtd0 00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 00000040 root@OpenWrt:~# hexdump -C -n 64 /dev/mtd1 00000000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 02 |UBI#............| 00000010 00 00 08 00 00 00 10 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 40 93 2d 8c |............@.-.| 00000040 root@OpenWrt:~# hexdump -C -n 64 /dev/mtd2 00000000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 01 |UBI#............| 00000010 00 00 08 00 00 00 10 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 7f 58 53 19 |.............XS.| 00000040 root@OpenWrt:~# hexdump -C -n 64 /dev/mtd3 00000000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 01 |UBI#............| 00000010 00 00 08 00 00 00 10 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 7f 58 53 19 |.............XS.| 00000040 root@OpenWrt:~# hexdump -C -n 64 /dev/mtd4 00000000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 01 |UBI#............| 00000010 00 00 08 00 00 00 10 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 7f 58 53 19 |.............XS.| 00000040 root@OpenWrt:~#
なんかおかしい…
よく確認してみると128KiBごとにUBI#が並んでる。ユーザー容量増やそうとして他のパーティション飛ばしてしまったのでは…
試しに適当なデータを焼いても読めているので、Flashは問題ないかも。
純正のPreloaderとかubootとか持ってないしどうしようかなぁ
RAM上で問題なく起動できるのでもったいない。
どうせフラッシュの中身空っぽなんだし他のデバイスのファームウェアでも焼いてみるか…

0 件のコメント:
コメントを投稿