大破雑記帳

個人用メモな雑記ブログ いろんなことをざっくりと。

WRC-X1800GS メモ

ブート

  • NAND Flash内にOSイメージ領域が2組存在。後述のbootnumにより切り替えられる
  • U-Boot環境変数領域の bootmenu_delay がデフォルトで0に設定されている為、ブート時にU-Bootでbootmenuが出ること無くLinux Kernelのブートに進んでしまう
  • OpenWrtベースであり、ブート中にfailsafeに入るかどうか尋ねるログが出るものの、実際に F キーと Enter を押しても - failsafe - というログが出るのみで通常と変わらないブートが進行してしまい、failsafeのコマンドラインには入れない

その他

  • "Ubootenv" や "Factory" など一部パーティションをread-onlyにする mtd_locked.ko は、debugflagが無効 (=0) である場合insmodされてしまう

    • debugflagは mtd_locked.ko によってread-onlyにされるうちの1つである "Factory" 内の値である為、debugflagが無効である場合書き換えが不可となる
    • I-O DATA WN-DX1167RやWN-AX1167GR2などの同じくMSTC製造機と同様、mtd_locked.ko をrmmodしてもread-onlyのまま
    • I-O DATAのMSTC製造機の場合、 /etc/init.d/ 配下の特定のサービスファイルを削除することで回避できたが、本機種ではブート中に実行されるプログラムが直接insmodを行うスクリプトを呼び出しており、回避が困難
  • debugflagはI-O DATAのMSTC製造機においてはU-Bootによるブート時にZyXEL独自(?)のローダを止められるようにするフラグにもなっていたが、本機種においてはそのローダを搭載していない為関与しないようである

debugflag, bootnum

root@WRC-X1800GS:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 07f80000 00020000 "All"
mtd1: 00100000 00020000 "Bootloader"
mtd2: 00100000 00020000 "Ubootenv"
mtd3: 001c0000 00020000 "Factory"
mtd4: 03240000 00020000 "firmware_now"
mtd5: 00380000 00020000 "kernel"
mtd6: 02e80000 00020000 "rootfs"
mtd7: 00100000 00020000 "Config"
mtd8: 03240000 00020000 "firmware"
mtd9: 00100000 00020000 "Config_2"
mtd10: 00100000 00020000 "persist"
mtd11: 00100000 00020000 "mesh"
mtd12: 01340000 00020000 "Backup"
mtd13: 03240000 00020000 "RAS1"
mtd14: 03240000 00020000 "RAS2"
  • bootnum

    0x4 (persist)

      root@WRC-X1800GS:~# mstc_persist read bootnum
      1
      root@WRC-X1800GS:~# hexdump -n 128 -C -v /dev/mtdblock10
      00000000  1b 05 ce 17 01 00 00 00  00 00 00 00 00 00 00 00  |................|
      00000010  00 00 00 00 00 00 00 00  29 aa 9d 83 ff ff ff ff  |........).......|
      00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000030  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000040  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000080
      root@WRC-X1800GS:~# mstc_persist write bootnum 2
      Unlocking persist ...
      root@WRC-X1800GS:~# hexdump -n 128 -C -v /dev/mtdblock10
      00000000  1b 05 ce 17 02 00 00 00  00 00 00 00 00 00 00 00  |................|
      00000010  00 00 00 00 00 00 00 00  29 aa 9d 83 ff ff ff ff  |........).......|
      00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000030  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000040  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      00000080
    
  • debugflag

    WN-DX1200GR同様、0x10000 後ろにズレた位置に存在する

    0x1FE75 (Factory)

      root@WRC-X1800GS:~# sys debugflag
      DebugFlag: 0
      root@WRC-X1800GS:~# hexdump -n $((0x100)) -v -s $((0x1FE00)) -C /dev/mtdblock3
      0001fe00  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe10  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe20  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe30  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe40  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe50  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe60  30 39 33 39 4c 38 37 32  31 30 31 33 31 35 38 97  |0939L8721013158.|
      0001fe70  a4 56 eb 38 02 00 ea ea  00 00 00 ff ff ff ff ff  |.V.8............|    <---
      0001fe80  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe90  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fea0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001feb0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fec0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fed0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fee0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fef0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001ff00
      root@WRC-X1800GS:~# sys debugflag 1
      PASS
      root@WRC-X1800GS:~# hexdump -n $((0x100)) -v -s $((0x1FE00)) -C /dev/mtdblock3
      0001fe00  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe10  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe20  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe30  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe40  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe50  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe60  30 39 33 39 4c 38 37 32  31 30 31 33 31 35 38 97  |0939L8721013158.|
      0001fe70  a4 56 eb 38 02 01 ea ea  00 00 00 ff ff ff ff ff  |.V.8............|    <---
      0001fe80  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fe90  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fea0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001feb0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fec0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fed0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fee0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001fef0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
      0001ff00