- デュアルイメージのブート切り替えは "working" パーティション内
0x4
の値によって決定される
(0x00
: bank1,0x01
: bank2)
その際、同一パーティション内に格納されているイメージのデータ長 (0x10 - 0x13
) とCRC32値 (0x14 - 0x17
) はU-Bootにおいてはチェックされておらず、書き換えなくてもブートする/ # cat /proc/mtd dev: size erasesize name mtd0: 08000000 00020000 "mtk-nand" mtd1: 00080000 00020000 "Bootloader" mtd2: 00080000 00020000 "Config" mtd3: 00080000 00020000 "Factory" mtd4: 02e00000 00020000 "firmware" mtd5: 00620000 00020000 "kernel" mtd6: 027e0000 00020000 "apps" mtd7: 02e00000 00020000 "firmware2" mtd8: 00620000 00020000 "kernel2" mtd9: 027e0000 00020000 "apps2" mtd10: 00600000 00020000 "storage" mtd11: 00100000 00020000 "idmkey" mtd12: 00080000 00020000 "working" / # hexdump -C /dev/mtdblock12 00000000 ff ff ff ff 01 ff ff ff ff ff ff ff ff ff ff ff |................| 00000010 b2 00 ee 00 2e e0 90 7a ff ff ff ff ff ff ff ff |.......z........| 00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 00080000
- U-Bootの環境変数領域(上記では "Config")内にはデフォルトでMACアドレス等の個体固有データが格納されているが、何故かU-BootがCRCエラーでそのデータを無視する。デフォルトで格納されているデータのCRC32値算出データ長と実機上のU-Bootの取り扱いデータ長が異なっている可能性があり、その状態でU-Boot上から
saveenv
を実行した場合にMACアドレス等多数の機種固有データが消失する恐れがある
2021/07/20 追記: 予想通り、U-Bootからsaveenv
を実行したところ、MACアドレスやSSID、WPA2パスワードなど多くの個体固有データが吹き飛ばされた
環境変数領域の有効データ長がデフォルトの環境変数データにおいては0x1000
、搭載するU-Bootにおいては0x20000
に設定されており、crc32値を算出するデータ長が異なることから算出された値が不一致となり、U-Bootからデフォルトデータを認識できていない それ故にU-Bootは無効データとして扱うので、saveenv
実行時に遠慮なくデフォルトデータを全て上書きして吹き飛ばす
ログ:=> nand read 0x81000000 0x80000 0x20000 NAND read: device 0 offset 0x80000, size 0x20000 131072 bytes read: OK => md.l 0x81000000 100 81000000: 222620be 6b6e6162 3d64695f 61620030 . &"bank_id=0.ba 81000010: 61726475 313d6574 30323531 6f620030 udrate=115200.bo 81000020: 7261746f 633d7367 6f736e6f 743d656c otargs=console=t 81000030: 30537974 3531312c 00303032 746f6f62 tyS0,115200.boot 81000040: 3d646d63 616b746d 626f7475 00746f6f cmd=mtkautoboot. 81000050: 746f6f62 616c6564 00303d79 746f6f62 bootdelay=0.boot 81000060: 756e656d 533d305f 74726174 73207075 menu_0=Startup s 81000070: 65747379 4428206d 75616665 3d29746c ystem (Default)= 81000080: 626b746d 6472616f 746f6f62 6f6f6200 mtkboardboot.boo 81000090: 6e656d74 3d315f75 72677055 20656461 tmenu_1=Upgrade 810000a0: 6d726966 65726177 6b746d3d 72677075 firmware=mtkupgr 810000b0: 20656461 62007766 6d746f6f 5f756e65 ade fw.bootmenu_ 810000c0: 70553d32 64617267 6f622065 6f6c746f 2=Upgrade bootlo 810000d0: 72656461 6b746d3d 72677075 20656461 ader=mtkupgrade 810000e0: 62006c62 6d746f6f 5f756e65 70553d33 bl.bootmenu_3=Up 810000f0: 64617267 6f622065 6f6c746f 72656461 grade bootloader 81000100: 64612820 636e6176 6d206465 2965646f (advanced mode) 81000110: 6b746d3d 72677075 20656461 64616c62 =mtkupgrade blad 81000120: 6f620076 656d746f 345f756e 616f4c3d v.bootmenu_4=Loa 81000130: 6d692064 3d656761 6c6b746d 0064616f d image=mtkload. 81000140: 6c637963 00323d65 61687465 653d7463 cycle=2.ethact=e 81000150: 31406874 30303165 00303030 63746466 th@1e100000.fdtc 81000160: 72746e6f 64616c6f 383d7264 63656666 ontroladdr=8ffec 81000170: 00306136 656c6966 72646461 3030383d 6a0.fileaddr=800 81000180: 30303031 69660030 6973656c 613d657a 10000.filesize=a 81000190: 62303061 70690032 72646461 3239313d a00b2.ipaddr=192 810001a0: 3836312e 312e302e 64746d00 6e766564 .168.0.1.mtddevn 810001b0: 3d656d61 6f622d75 6d00746f 65646474 ame=u-boot.mtdde 810001c0: 6d756e76 6d00303d 64696474 616e3d73 vnum=0.mtdids=na 810001d0: 3d30646e 616e6172 6d00646e 61706474 nd0=ranand.mtdpa 810001e0: 3d737472 7064746d 73747261 6e61723d rts=mtdparts=ran 810001f0: 3a646e61 6b323135 622d7528 29746f6f and:512k(u-boot) 81000200: 3231352c 2d75286b 746f6f62 766e652d ,512k(u-boot-env 81000210: 31352c29 66286b32 6f746361 2c297972 ),512k(factory), 81000220: 286d3334 6d726966 65726177 33342c29 43m(firmware),43 81000230: 6966286d 61776d72 29326572 286d382c m(firmware2),8m( 81000240: 64766544 29617461 6d32332c 65735528 Devdata),32m(Use 81000250: 61645f72 00296174 6d74656e 3d6b7361 r_data).netmask= 81000260: 2e353532 2e353532 2e353532 61700030 255.255.255.0.pa 81000270: 74697472 3d6e6f69 646e616e 00302c30 rtition=nand0,0. 81000280: 76726573 70697265 3239313d 3836312e serverip=192.168 81000290: 312e302e 73003030 65746174 73004e3d .0.100.state=N.s 810002a0: 72656474 61753d72 696c7472 40306574 tderr=uartlite0@ 810002b0: 30306531 30306330 64747300 753d6e69 1e000c00.stdin=u 810002c0: 6c747261 30657469 30653140 30633030 artlite0@1e000c0 810002d0: 74730030 74756f64 7261753d 74696c74 0.stdout=uartlit 810002e0: 31403065 30303065 00303063 61687465 e0@1e000c00.etha 810002f0: 3d726464 343a3035 39423a31 3axxxx3a ddr=50:41:B9:xx: 81000300: 463axxxx 61770034 6464616e 30353d72 xx:F4.wanaddr=50 81000310: 3a31343a xx3a3942 xxxx3axx 0036463a :41:B9:xx:xx:F6. 81000320: xx3d6e73 xxxxxxxx xxxxxxxx 00xxxxxx sn=xxxxxxxxxxxx. 81000330: 63616d72 3a30353d 423a3134 xxxx3a39 rmac=50:41:B9:xx 81000340: 3axxxx3a 72003446 3263616d 3a30303d :xx:F4.rmac2=00: 81000350: 323a3131 33333a32 3a34343a 72003434 11:22:33:44:44.r 81000360: 4a3d6e63 64720050 00353d6e 326e6372 cn=JP.rdn=5.rcn2 81000370: 00504a3d 326e6472 0032313d 336e6372 =JP.rdn2=12.rcn3 81000380: 004e433d 336e6472 3332313d 73737200 =CN.rdn3=123.rss 81000390: 493d6469 5441444f xxxx2d41 3466xxxx id=IODATA-xxxxf4 810003a0: 0047322d 69737372 493d3264 5441444f -2G.rssid2=IODAT 810003b0: xxxx2d41 3466xxxx 0047352d 79656b72 A-xxxxf4-5G.rkey 810003c0: xxxxxx3d xxxxxxxx xxxxxxxx 7200xxxx =xxxxxxxxxxxxx.r 810003d0: 3279656b xxxxxx3d xxxxxxxx xxxxxxxx key2=xxxxxxxxxxx 810003e0: 680030xx 3d726576 00323056 00000000 xx.hver=V02..... 810003f0: 00000000 00000000 00000000 00000000 ................ => printenv baudrate=115200 bootcmd=mtkautoboot bootdelay=0 bootmenu_0=Startup system (Default)=mtkboardboot bootmenu_1=Upgrade firmware=mtkupgrade fw bootmenu_2=Upgrade bootloader=mtkupgrade bl bootmenu_3=Upgrade bootloader (advanced mode)=mtkupgrade bladv bootmenu_4=Load image=mtkload fdtcontroladdr=8fff1780 ipaddr=192.168.1.1 nand_erasesize=20000 nand_oobsize=40 nand_writesize=800 netmask=255.255.255.0 serverip=192.168.1.2 stderr=uartlite0@1e000c00 stdin=uartlite0@1e000c00 stdout=uartlite0@1e000c00 Environment size: 495/131068 bytes => saveenv Saving Environment to NMBM... Erasing on NMBM... Writing on NMBM... OK OK => nand read 0x81000000 0x80000 0x20000 NAND read: device 0 offset 0x80000, size 0x20000 131072 bytes read: OK => md.l 0x81000000 100 81000000: 12b3cfd9 64756162 65746172 3531313d ....baudrate=115 81000010: 00303032 746f6f62 3d646d63 616b746d 200.bootcmd=mtka 81000020: 626f7475 00746f6f 746f6f62 616c6564 utoboot.bootdela 81000030: 00303d79 746f6f62 756e656d 533d305f y=0.bootmenu_0=S 81000040: 74726174 73207075 65747379 4428206d tartup system (D 81000050: 75616665 3d29746c 626b746d 6472616f efault)=mtkboard 81000060: 746f6f62 6f6f6200 6e656d74 3d315f75 boot.bootmenu_1= 81000070: 72677055 20656461 6d726966 65726177 Upgrade firmware 81000080: 6b746d3d 72677075 20656461 62007766 =mtkupgrade fw.b 81000090: 6d746f6f 5f756e65 70553d32 64617267 ootmenu_2=Upgrad 810000a0: 6f622065 6f6c746f 72656461 6b746d3d e bootloader=mtk 810000b0: 72677075 20656461 62006c62 6d746f6f upgrade bl.bootm 810000c0: 5f756e65 70553d33 64617267 6f622065 enu_3=Upgrade bo 810000d0: 6f6c746f 72656461 64612820 636e6176 otloader (advanc 810000e0: 6d206465 2965646f 6b746d3d 72677075 ed mode)=mtkupgr 810000f0: 20656461 64616c62 6f620076 656d746f ade bladv.bootme 81000100: 345f756e 616f4c3d 6d692064 3d656761 nu_4=Load image= 81000110: 6c6b746d 0064616f 63746466 72746e6f mtkload.fdtcontr 81000120: 64616c6f 383d7264 31666666 00303837 oladdr=8fff1780. 81000130: 64617069 313d7264 312e3239 312e3836 ipaddr=192.168.1 81000140: 6e00312e 5f646e61 73617265 7a697365 .1.nand_erasesiz 81000150: 30323d65 00303030 646e616e 626f6f5f e=20000.nand_oob 81000160: 657a6973 0030343d 646e616e 6972775f size=40.nand_wri 81000170: 69736574 383d657a 6e003030 616d7465 tesize=800.netma 81000180: 323d6b73 322e3535 322e3535 302e3535 sk=255.255.255.0 81000190: 72657300 69726576 39313d70 36312e32 .serverip=192.16 810001a0: 2e312e38 74730032 72726564 7261753d 8.1.2.stderr=uar 810001b0: 74696c74 31403065 30303065 00303063 tlite0@1e000c00. 810001c0: 69647473 61753d6e 696c7472 40306574 stdin=uartlite0@ 810001d0: 30306531 30306330 64747300 3d74756f 1e000c00.stdout= 810001e0: 74726175 6574696c 65314030 63303030 uartlite0@1e000c 810001f0: 00003030 00000000 00000000 00000000 00.............. 81000200: 00000000 00000000 00000000 00000000 ................ 81000210: 00000000 00000000 00000000 00000000 ................ 81000220: 00000000 00000000 00000000 00000000 ................ 81000230: 00000000 00000000 00000000 00000000 ................ 81000240: 00000000 00000000 00000000 00000000 ................ 81000250: 00000000 00000000 00000000 00000000 ................ 81000260: 00000000 00000000 00000000 00000000 ................ 81000270: 00000000 00000000 00000000 00000000 ................ 81000280: 00000000 00000000 00000000 00000000 ................ 81000290: 00000000 00000000 00000000 00000000 ................ 810002a0: 00000000 00000000 00000000 00000000 ................ 810002b0: 00000000 00000000 00000000 00000000 ................ 810002c0: 00000000 00000000 00000000 00000000 ................ 810002d0: 00000000 00000000 00000000 00000000 ................ 810002e0: 00000000 00000000 00000000 00000000 ................ 810002f0: 00000000 00000000 00000000 00000000 ................ 81000300: 00000000 00000000 00000000 00000000 ................ 81000310: 00000000 00000000 00000000 00000000 ................ 81000320: 00000000 00000000 00000000 00000000 ................ 81000330: 00000000 00000000 00000000 00000000 ................ 81000340: 00000000 00000000 00000000 00000000 ................ 81000350: 00000000 00000000 00000000 00000000 ................ 81000360: 00000000 00000000 00000000 00000000 ................ 81000370: 00000000 00000000 00000000 00000000 ................ 81000380: 00000000 00000000 00000000 00000000 ................ 81000390: 00000000 00000000 00000000 00000000 ................ 810003a0: 00000000 00000000 00000000 00000000 ................ 810003b0: 00000000 00000000 00000000 00000000 ................ 810003c0: 00000000 00000000 00000000 00000000 ................ 810003d0: 00000000 00000000 00000000 00000000 ................ 810003e0: 00000000 00000000 00000000 00000000 ................ 810003f0: 00000000 00000000 00000000 00000000 ................