20180919_jeffrey - silenceuncrio/diary GitHub Wiki
0905
M360 DNS 目前決議交由 john 來負責 share memory 的正確資訊提供給 UI 層做顯示
先等一下 john 吧
0935
解析一下昨天 52XXZ upgrade image 的訊息
root@52XXZ:/ramdisk/tmp# upgrade /tmp/fullimage.img full 0 0 1
Image Header --> Data Size = 10838152
Image Name = VR9 Fullimage
Image Header --> Data Size = 8835072
Image Name = LTQCPE RootFS
Image contains header with name [LTQCPE RootFS]
Volume ID 4, size 69 LEBs (8902656 bytes, 8.5 MiB), LEB size 129024 bytes (126.0 KiB), dynamic, name "rootfsB", alignment 1
Image Header --> Data Size = 1572800
Image Name = MIPS LTQCPE Linux-2.6.32.42
Image contains header with name [MIPS LTQCPE Linux-2.6.32.42]
Volume ID 3, size 13 LEBs (1677312 bytes, 1.6 MiB), LEB size 129024 bytes (126.0 KiB), dynamic, name "kernelB", alignment 1
parameter f_kernel_sizeB is not existed
Erasing 128 Kibyte @ 20000 -- 100 % complete
parameter active_bank value changed from rootfs_id=1 to B
Erasing 128 Kibyte @ 20000 -- 100 % complete
parameter update_chk value changed from c=D071DAD8 to 1
Image Header --> Data Size = 430080
Image Name = VR9 Firmware
Image contains header with name [VR9 Firmware]
Volume ID 5, size 4 LEBs (516096 bytes, 504.0 KiB), LEB size 129024 bytes (126.0 KiB), dynamic, name "firmwareB", alignment 1
Upgrade : successfully upgraded full
root@52XXZ:/ramdisk/tmp#
看一下 upgrade
這一支程式的簡單 help
root@52XXZ:~# upgrade
Usage : upgrade file_name image_type expand_direction saveenv_copy [reboot]
ToolChain:4.8-linaro/0.9.33.2
Version:1.0.5
對到我們下達的 command - upgrade /tmp/fullimage.img full 0 0 1
- file_name = /tmp/fullimage.img
- image_type = full
- expand_direction = 0
- saveenv_copy 1
- reboot 0
要再深入的話可能要看 upgrade
這隻程式的 source code
winston 表示他有小修一下
翻一下有沒有 source code
暴力搜尋
➜ 52XXZ git:(develop) ✗ grep -r "expand_direction"
Binary file proscend/rootfs/usr/sbin/upgrade matches
Binary file build_dir/target-mips_r2_uClibc-0.9.33.2_vrx288_gw_he_vdsl_lte/root-lantiq/usr/sbin/upgrade matches
build_dir/target-mips_r2_uClibc-0.9.33.2_vrx288_gw_he_vdsl_lte/ltq-utilities-2.4.0.21/opensrc_utilities/upgrade.c: ("Usage : upgrade file_name image_type expand_direction saveenv_copy [reboot]\n");
Binary file build_dir/target-mips_r2_uClibc-0.9.33.2_vrx288_gw_he_vdsl_lte/ltq-utilities-2.4.0.21/opensrc_utilities/upgrade matches
Binary file build_dir/target-mips_r2_uClibc-0.9.33.2_vrx288_gw_he_vdsl_lte/ltq-utilities-2.4.0.21/opensrc_utilities/upgrade.o matches
Binary file build_dir/target-mips_r2_uClibc-0.9.33.2_vrx288_gw_he_vdsl_lte/ltq-utilities-2.4.0.21/ipkg-lantiq/ltq-utilities/usr/sbin/upgrade matches
^C
➜ 52XXZ git:(develop) ✗
進去搜尋到 *.c
的目錄瞧瞧
➜ 52XXZ git:(develop) ✗ cd build_dir/target-mips_r2_uClibc-0.9.33.2_vrx288_gw_he_vdsl_lte/ltq-utilities-2.4.0.21/opensrc_utilities
➜ opensrc_utilities git:(develop) ✗ ls
command.c command.o crypt.c flash.h Makefile mem.c nohup nohup.o read_img read_img.o uboot_cfg.h uboot_env.c upgrade upgrade_cmd.c upgrade_core.c upgrade.o vsprintf.o
command.h common.h flash.c flash.o mem mem.o nohup.c pagebutton read_img.c resetbutton uboot_env uboot_env.o upgrade.c upgrade_cmd.o upgrade_core.o vsprintf.c
➜ opensrc_utilities git:(develop) ✗
稍微看了一下... 滿足了一下好奇心
我想我還是直接用好了
1050
明天要去 盟創 協調一下後續生產事宜
先前 mail 給他們從 M360P_v0.07_01F400000072C2B2.img
解開得到的 sysupgrade.bin
結果他們回報說
Hi Spring
R&D 把檔案LOAD進去出現的error 如下,完整的開機log 在附檔中。
另外很抱歉因為前期跟現在的Team member 有更動過,我們詢問過之前負責的R&D 但他沒有收到 Proscend 之前給過的舊的 image ,能麻煩您這邊幫忙把當初的mail 轉給我嗎? 或是把舊板的image 再提供給我一次。
若方便的話我可以直接找 SW R&D 直接過去貴司討論,再麻煩您建議您這周可以的時間。
29.768000] jffs2: Further such events for this erase block will not be printed
[ 29.820000] jffs2: Old JFFS2 bitmask found at 0x00c85cf4
[ 29.832000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
[ 29.848000] jffs2: Old JFFS2 bitmask found at 0x00c8b418
[ 29.856000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
[ 29.876000] jffs2: Old JFFS2 bitmask found at 0x00c9c1b8
[ 29.884000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
[ 29.900000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ca0000: 0x9555 instead
[ 31.348000] jffs2: Further such events for this erase block will not be printed
[ 31.436000] jffs2: Empty flash at 0x00d40f34 ends at 0x00d41000
[ 31.484000] jffs2: Empty flash at 0x00d41004 ends at 0x00d42000
[ 31.528000] jffs2: Empty flash at 0x00d42004 ends at 0x00d44000
[ 31.572000] jffs2: Empty flash at 0x00d44004 ends at 0x00d50000
[ 31.604000] jffs2_scan_eraseblock(): End of filesystem marker found at 0xd60000
[ 31.620000] jffs2: Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
[ 31.636000] jffs2: empty_blocks 149, bad_blocks 0, c->nr_blocks 256
[ 31.648000] VFS: Cannot open root device "mtdblock5" or unknown-block(31,5): error -5
[ 31.664000] Please append a correct "root=" boot option; here are the available partitions:
[ 31.680000] 1f00 130560 mtdblock0 (driver?)
[ 31.692000] 1f01 512 mtdblock1 (driver?)
[ 31.700000] 1f02 512 mtdblock2 (driver?)
[ 31.712000] 1f03 256 mtdblock3 (driver?)
[ 31.720000] 1f04 32768 mtdblock4 (driver?)
[ 31.732000] 1f05 32768 mtdblock5 (driver?)
[ 31.740000] 1f06 16384 mtdblock6 (driver?)
[ 31.752000] 1f07 16384 mtdblock7 (driver?)
Thank you
B.R.
Daphne #55568
目前的推論是他們在 upgrade 成我們的 image 之前可能需要先清空除了 uboot 之外的 partition
nand erase 80000 7000000
不然會受到先前他們 image 的影響
畢竟我們的 image 有支持 dual image
之前寫的 wiki - Dual Image
明天也許需要帶這份文件過去 盟創 方便協調
不過屬於我們自己的 know how 盡量不要給他們看
有必要的話需要另外 mail 給他們不涉及我們 know how 的資訊
1125
稍微 review 一下 52XXZ proscend Makefile 裡跟 fullimage 有關的流程
default all: prepare prosrc opensrc install clean_image rootfsimage fullimage
image/uImage: $(LTQCPE_IMAGE_DIR)/uImage
cp $(LTQCPE_IMAGE_DIR)/uImage image/
merge:
cp -rf $(BUILD_BASE)/base_fs/default/rootfs/* $(ROOTFS_DIR)
# ===TODO: git rm/add fail to modify base_fs/default/rootfs/home/log
rm -f $(ROOTFS_DIR)/home/log
mkdir -p $(ROOTFS_DIR)/home/log
@(LC_ALL=C date +%H%M-%d%b%y > $(ROOTFS_DIR)/etc/timestamp)
@echo ======================================================= > $(ROOTFS_DIR)/etc/banner
@echo $(VERTAG)-$(DATECODE) >> $(ROOTFS_DIR)/etc/banner
@echo $(RELEASE) >> $(ROOTFS_DIR)/etc/banner
@LC_ALL=C date -u >> $(ROOTFS_DIR)/etc/banner
@echo ======================================================= >> $(ROOTFS_DIR)/etc/banner
@make -C $(CUSTOMER_FS_DIR)
image/rootfs.img: merge
$(MKSQUASHFS4) rootfs image/root.squashfs -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -processors 1
$(MKIMAGE) -A MIPS -O Linux -C lzma -T filesystem -e 0x00 -a 0x00 -n "LTQCPE RootFS" -d image/root.squashfs image/rootfs.img
@rm -f image/root.squashfs
image/fullimage.img: image/rootfs.img image/uImage
@rm -f $(FULLIMAGE).tmp
@touch $(FULLIMAGE).tmp
@FILE="image/rootfs.img"; \
echo "add $$FILE to $(FULLIMAGE).tmp ..."; \
cat $$FILE > $(FULLIMAGE).tmp; \
len=`wc -c $$FILE | awk '{ printf $$1 }'`; pad=`expr 16 - $$len % 16`; pad=`expr $$pad % 16`; \
while [ $$pad -ne 0 ]; do echo -n "0" >> $(FULLIMAGE).tmp; pad=`expr $$pad - 1`; done; \
echo " ==>$$FILE, size=$$len, pad=$$pad";
@FILE="image/uImage"; \
echo "add $$FILE to $(FULLIMAGE).tmp ..."; \
cat $$FILE >> $(FULLIMAGE).tmp; \
len=`wc -c $$FILE | awk '{ printf $$1 }'`; pad=`expr 16 - $$len % 16`; pad=`expr $$pad % 16`; \
while [ $$pad -ne 0 ]; do echo -n "0" >> $(FULLIMAGE).tmp; pad=`expr $$pad - 1`; done; \
echo " ==>$$FILE, size=$$len, pad=$$pad";
$(MKIMAGE) -A MIPS -O Linux -C none -T multi -e 0x00 -a 0x00 -n "XRX200 Fullimage" -d $(FULLIMAGE).tmp $(FULLIMAGE).img;
@rm -f $(FULLIMAGE).tmp
clean_image:
rm -rf image
mkdir -p image
rootfsimage: image/rootfs.img
fullimage : image/fullimage.img
對比一下實際在 proscend 目錄下 make clean
再 make
的訊息
rm -rf image
mkdir -p image
cp -rf /home/user/proscend/base_fs/default/rootfs/* /home/user/proscend/rootfs
# ===TODO: git rm/add fail to modify base_fs/default/rootfs/home/log
rm -f /home/user/proscend/rootfs/home/log
mkdir -p /home/user/proscend/rootfs/home/log
make[1]: Entering directory `/home/user/proscend/customer_fs'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/user/proscend/customer_fs'
/home/user/staging_dir/host/bin/mksquashfs4 rootfs image/root.squashfs -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -processors 1
Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on image/root.squashfs, block size 131072.
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 131072
compressed data, compressed metadata, compressed fragments, no xattrs
duplicates are removed
Filesystem size 14815.91 Kbytes (14.47 Mbytes)
28.63% of uncompressed filesystem size (51744.42 Kbytes)
Inode table size 26522 bytes (25.90 Kbytes)
22.88% of uncompressed inode table size (115935 bytes)
Directory table size 35844 bytes (35.00 Kbytes)
46.15% of uncompressed directory table size (77675 bytes)
Number of duplicate files found 171
Number of inodes 3515
Number of files 3000
Number of fragments 145
Number of symbolic links 270
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 245
Number of ids (unique uids + gids) 1
Number of uids 1
root (0)
Number of gids 1
root (0)
/home/user/staging_dir/host/bin/mkimage -A MIPS -O Linux -C lzma -T filesystem -e 0x00 -a 0x00 -n "LTQCPE RootFS" -d image/root.squashfs image/rootfs.img
Image Name: LTQCPE RootFS
Created: Wed Sep 19 03:27:39 2018
Image Type: MIPS Linux Filesystem Image (lzma compressed)
Data Size: 15171584 Bytes = 14816.00 kB = 14.47 MB
Load Address: 00000000
Entry Point: 00000000
cp /home/user/bin/lantiq/vrx288_gw_he_vdsl_lte/uImage image/
add image/rootfs.img to image/fullimage.tmp ...
==>image/rootfs.img, size=15171648, pad=0
add image/uImage to image/fullimage.tmp ...
==>image/uImage, size=1835008, pad=0
/home/user/staging_dir/host/bin/mkimage -A MIPS -O Linux -C none -T multi -e 0x00 -a 0x00 -n "XRX200 Fullimage" -d image/fullimage.tmp image/fullimage.img;
Created: Wed Sep 19 03:27:39 2018
Image Type: MIPS Linux Multi-File Image (uncompressed)
Data Size: 17006664 Bytes = 16608.07 kB = 16.22 MB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 17006656 Bytes = 16608.06 kB = 16.22 MB
user@8de9e3d5af60:~/proscend$
來整理一下 Makefile
和 make
的訊息間的對應
Makefile - clean_image
clean_image:
rm -rf image
mkdir -p image
make 的訊息
rm -rf image
mkdir -p image
Makefile - merge
merge:
cp -rf $(BUILD_BASE)/base_fs/default/rootfs/* $(ROOTFS_DIR)
# ===TODO: git rm/add fail to modify base_fs/default/rootfs/home/log
rm -f $(ROOTFS_DIR)/home/log
mkdir -p $(ROOTFS_DIR)/home/log
@(LC_ALL=C date +%H%M-%d%b%y > $(ROOTFS_DIR)/etc/timestamp)
@echo ======================================================= > $(ROOTFS_DIR)/etc/banner
@echo $(VERTAG)-$(DATECODE) >> $(ROOTFS_DIR)/etc/banner
@echo $(RELEASE) >> $(ROOTFS_DIR)/etc/banner
@LC_ALL=C date -u >> $(ROOTFS_DIR)/etc/banner
@echo ======================================================= >> $(ROOTFS_DIR)/etc/banner
@make -C $(CUSTOMER_FS_DIR)
make 的訊息
cp -rf /home/user/proscend/base_fs/default/rootfs/* /home/user/proscend/rootfs
# ===TODO: git rm/add fail to modify base_fs/default/rootfs/home/log
rm -f /home/user/proscend/rootfs/home/log
mkdir -p /home/user/proscend/rootfs/home/log
make[1]: Entering directory `/home/user/proscend/customer_fs'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/user/proscend/customer_fs'
Makefile - image/rootfs.img
image/rootfs.img: merge
$(MKSQUASHFS4) rootfs image/root.squashfs -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -processors 1
$(MKIMAGE) -A MIPS -O Linux -C lzma -T filesystem -e 0x00 -a 0x00 -n "LTQCPE RootFS" -d image/root.squashfs image/rootfs.img
@rm -f image/root.squashfs
make 的訊息
/home/user/staging_dir/host/bin/mksquashfs4 rootfs image/root.squashfs -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -processors 1
Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on image/root.squashfs, block size 131072.
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 131072
compressed data, compressed metadata, compressed fragments, no xattrs
duplicates are removed
Filesystem size 14815.91 Kbytes (14.47 Mbytes)
28.63% of uncompressed filesystem size (51744.42 Kbytes)
Inode table size 26522 bytes (25.90 Kbytes)
22.88% of uncompressed inode table size (115935 bytes)
Directory table size 35844 bytes (35.00 Kbytes)
46.15% of uncompressed directory table size (77675 bytes)
Number of duplicate files found 171
Number of inodes 3515
Number of files 3000
Number of fragments 145
Number of symbolic links 270
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 245
Number of ids (unique uids + gids) 1
Number of uids 1
root (0)
Number of gids 1
root (0)
/home/user/staging_dir/host/bin/mkimage -A MIPS -O Linux -C lzma -T filesystem -e 0x00 -a 0x00 -n "LTQCPE RootFS" -d image/root.squashfs image/rootfs.img
Image Name: LTQCPE RootFS
Created: Wed Sep 19 03:27:39 2018
Image Type: MIPS Linux Filesystem Image (lzma compressed)
Data Size: 15171584 Bytes = 14816.00 kB = 14.47 MB
Load Address: 00000000
Entry Point: 00000000
Makefile - image/fullimage.img
image/fullimage.img: image/rootfs.img image/uImage
@rm -f $(FULLIMAGE).tmp
@touch $(FULLIMAGE).tmp
@FILE="image/rootfs.img"; \
echo "add $$FILE to $(FULLIMAGE).tmp ..."; \
cat $$FILE > $(FULLIMAGE).tmp; \
len=`wc -c $$FILE | awk '{ printf $$1 }'`; pad=`expr 16 - $$len % 16`; pad=`expr $$pad % 16`; \
while [ $$pad -ne 0 ]; do echo -n "0" >> $(FULLIMAGE).tmp; pad=`expr $$pad - 1`; done; \
echo " ==>$$FILE, size=$$len, pad=$$pad";
@FILE="image/uImage"; \
echo "add $$FILE to $(FULLIMAGE).tmp ..."; \
cat $$FILE >> $(FULLIMAGE).tmp; \
len=`wc -c $$FILE | awk '{ printf $$1 }'`; pad=`expr 16 - $$len % 16`; pad=`expr $$pad % 16`; \
while [ $$pad -ne 0 ]; do echo -n "0" >> $(FULLIMAGE).tmp; pad=`expr $$pad - 1`; done; \
echo " ==>$$FILE, size=$$len, pad=$$pad";
$(MKIMAGE) -A MIPS -O Linux -C none -T multi -e 0x00 -a 0x00 -n "XRX200 Fullimage" -d $(FULLIMAGE).tmp $(FULLIMAGE).img;
@rm -f $(FULLIMAGE).tmp
make 的訊息
cp /home/user/bin/lantiq/vrx288_gw_he_vdsl_lte/uImage image/
add image/rootfs.img to image/fullimage.tmp ...
==>image/rootfs.img, size=15171648, pad=0
add image/uImage to image/fullimage.tmp ...
==>image/uImage, size=1835008, pad=0
/home/user/staging_dir/host/bin/mkimage -A MIPS -O Linux -C none -T multi -e 0x00 -a 0x00 -n "XRX200 Fullimage" -d image/fullimage.tmp image/fullimage.img;
Created: Wed Sep 19 03:27:39 2018
Image Type: MIPS Linux Multi-File Image (uncompressed)
Data Size: 17006664 Bytes = 16608.07 kB = 16.22 MB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 17006656 Bytes = 16608.06 kB = 16.22 MB
1305
我可以參考一下目前 M360 打包 firmware 的方式來打包 52XXZ 的 firmware
firmware_img: sysupgrade_bin
rm -f image/firmware.img
rm -rf image/firmware
cp rootfs/etc/mcsv image/mcsv
openssl des3 -salt -in image/mcsv -out image/mcsv.enc -k 2wsx#EDC
mkdir -p firmware
cp image/mcsv.enc firmware
cp image/sysupgrade.bin firmware
cd firmware; md5sum * > firmware.md5
tar -cf image/$(IMAGE_NAME) firmware
cp image/$(IMAGE_NAME) image/firmware.img
rm -rf firmware
@echo MCSV=$(MCSV)
先試著手動執行需要的流程
user@8de9e3d5af60:~/proscend$ ls image/
fullimage.img rootfs.img uImage
user@8de9e3d5af60:~/proscend$ cp rootfs/etc/mcsv image/mcsv
user@8de9e3d5af60:~/proscend$ openssl des3 -salt -in image/mcsv -out image/mcsv.enc -k 2wsx#EDC
user@8de9e3d5af60:~/proscend$ mkdir -p firmware
user@8de9e3d5af60:~/proscend$ cp image/mcsv.enc firmware/
user@8de9e3d5af60:~/proscend$ cp image/fullimage.img firmware/
user@8de9e3d5af60:~/proscend$ cd firmware; md5sum * > firmware.md5
user@8de9e3d5af60:~/proscend/firmware$ cd ..
user@8de9e3d5af60:~/proscend$ tar -cf image/xxx.img firmware/
user@8de9e3d5af60:~/proscend$ cp image/xxx.img image/firmware.img
user@8de9e3d5af60:~/proscend$ rm -rf firmware/
user@8de9e3d5af60:~/proscend$ cat image/mcsv
147B00000012C2B7
user@8de9e3d5af60:~/proscend$ ls image/
firmware.img fullimage.img mcsv mcsv.enc rootfs.img uImage xxx.img
成功產出了需要的 firmware.img
1340
試著寫進 Makefile 裡
@@ -102,7 +102,7 @@ IMAGE_NAME := $(MODEL_NAME)-$(shell date +"%m%d%Y").img
.PHONY: all clean install distclean
#default all: prepare prosrc opensrc install rootfsimage root_squashfs sysupgrade_bin fullimage
-default all: prepare prosrc opensrc install clean_image rootfsimage fullimage
+default all: prepare prosrc opensrc install clean_image rootfsimage fullimage firmware_img
install:
echo "PROSCEND INSTALL"
@@ -254,6 +254,23 @@ clean_image:
rootfsimage: image/rootfs.img
fullimage : image/fullimage.img
+
+
+firmware_img: fullimage
+ rm -f image/firmware.img
+ cp rootfs/etc/mcsv image/mcsv
+ openssl des3 -salt -in image/mcsv -out image/mcsv.enc -k 2wsx#EDC
+ mkdir -p firmware
+ cp image/mcsv.enc firmware
+ cp image/fullimage.img firmware
+ cd firmware; md5sum * > firmware.md5
+ tar -cf image/$(IMAGE_NAME) firmware
+ cp image/$(IMAGE_NAME) image/firmware.img
+ rm -rf firmware
+ @echo MCSV=$(MCSV)
+
+
+
.PHONY: buildenv_check buildenv_gen buildenv_clean penv merge
menuconfig: pconfig pconfig_links pvars_links penv prosrc_clean openwrt-base
make 的過程多了最後這一段
rm -f image/firmware.img
cp rootfs/etc/mcsv image/mcsv
openssl des3 -salt -in image/mcsv -out image/mcsv.enc -k 2wsx#EDC
mkdir -p firmware
cp image/mcsv.enc firmware
cp image/fullimage.img firmware
cd firmware; md5sum * > firmware.md5
tar -cf image/52XXZ-09192018.img firmware
cp image/52XXZ-09192018.img image/firmware.img
rm -rf firmware
MCSV=147B00000012C2B7
看一下成果
user@8de9e3d5af60:~/proscend$ ls -al image/
total 66480
drwxr-xr-x 2 user user 4096 Sep 19 05:24 .
drwxrwxr-x 11 user user 4096 Sep 19 05:24 ..
-rw-r--r-- 1 user user 17018880 Sep 19 05:24 52XXZ-09192018.img
-rw-r--r-- 1 user user 17018880 Sep 19 05:24 firmware.img
-rw-r--r-- 1 user user 17006728 Sep 19 05:24 fullimage.img
-rw-r--r-- 1 user user 17 Sep 19 05:24 mcsv
-rw-r--r-- 1 user user 40 Sep 19 05:24 mcsv.enc
-rw-r--r-- 1 user user 15171648 Sep 19 05:24 rootfs.img
-rw-r--r-- 1 user user 1835008 Sep 19 05:24 uImage
這 52XXZ-09192018.img
就是將來要 release 的 firmware 了
1355
換從 web ui 出發
目前 CGI firmware.cgi?act=progress
的錯誤如圖
該 CGI 觸發的行動如下
static void _progress()
{
system("FirmwareProgress.sh");
json_object *progress = json_object_from_file(PROGRESS);
if (progress)
{
jweb.out.json.data("progress", progress);
}
else
{
jweb.out.json.fail("something happen");
}
}
直接在 shell 下執行 FirmwareProgress.sh
就出錯了
root@52XXZ:~# FirmwareProgress.sh
.curr_time="14598.37"
/usr/sbin/icos/FirmwareProgress.sh: line 72: jq: command not found
先想辦法把 jq build 進去
參考一下 M360P 之前為了 jq 做的 commit
忘了當初 jq 這個 package 我是從哪 copy 的
不過該 package 在 M360P source code 的位置如下
➜ M360P git:(develop) ✗ ls package/utils
admswconfig busybox fbtest hostap-utils jsonfilter mdadm procps px5g-standalone shadow ubi-utils usbmode usbutils xfsprogs
bash e2fsprogs fuse jq lua mkelfimage px5g robocfg spidev_test ugps usbreset util-linux
M360 有了該 package 之後
我們便可以透過 make menuconfig 把它選起來
發現 52XXZ 的 make menuconfig 已經有該 package
不過透過 make menuconfig
save 所得到的 config
和原來的 52xxz_defconfig
一比較
差異大到令人卻步
直接把 CONFIG_PACKAGE_jq
turn on 試試
@@ -2252,6 +2252,7 @@ CONFIG_PACKAGE_cpufrequtils=y
# CONFIG_PACKAGE_iwcap is not set
# CONFIG_PACKAGE_iwinfo is not set
# CONFIG_PACKAGE_jpeg-tools is not set
+CONFIG_PACKAGE_jq=y
# CONFIG_PACKAGE_jshn is not set
# CONFIG_PACKAGE_kexec-tools is not set
# CONFIG_PACKAGE_ldconfig is not set
build 不過
user@8de9e3d5af60:~$ make package/utils/jq/compile V=s
make[1]: Entering directory `/home/user'
...
checking for bison version... 2.5
configure: error: You need bison version 3.0 or greater, or use --disable-maintainer-mode.
make[2]: *** [/home/user/build_dir/target-mips_r2_uClibc-0.9.33.2_vrx288_gw_he_vdsl_lte/jq-1.5/.configured_] Error 1
make[2]: Leaving directory `/home/user/package/utils/jq'
make[1]: *** [package/utils/jq/compile] Error 2
make[1]: Leaving directory `/home/user'
make: *** [package/utils/jq/compile] Error 2
1510
M360P 上該 bison 的 package 版本為 3.0.2
user@10972b0a698a:~$ cat tools/bison/Makefile
#
# Copyright (C) 2008-2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=bison
PKG_VERSION:=3.0.2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
PKG_MD5SUM:=146be9ff9fbd27497f0bf2286a5a2082
PKG_CAT:=xzcat
HOST_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/host-build.mk
HOST_LDFLAGS += $(HOST_STATIC_LINKING)
define Host/Clean
-$(MAKE) -C $(HOST_BUILD_DIR) uninstall
$(call Host/Clean/Default)
endef
$(eval $(call HostBuild))
不過 52XXZ 上 bison 的 package 版本為 2.5
user@8de9e3d5af60:~$ cat tools/bison/Makefile
#
# Copyright (C) 2008-2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=bison
PKG_VERSION:=2.5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
PKG_MD5SUM:=9dba20116b13fc61a0846b0058fbe004
PKG_CAT:=bzcat
HOST_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/host-build.mk
HOST_LDFLAGS += $(HOST_STATIC_LINKING)
define Host/Clean
-$(MAKE) -C $(HOST_BUILD_DIR) uninstall
$(call Host/Clean/Default)
endef
$(eval $(call HostBuild))
直接拿 M360P 的 tools/bison
來用
➜ 52XXZ git:(develop) ✗ rm -rf tools/bison
➜ 52XXZ git:(develop) ✗ cp -r ../M360P/tools/bison tools
build 過了
user@8de9e3d5af60:~$ make tools/bison/compile
make[1] tools/bison/compile
make[2] -C tools/m4 compile
make[2] -C tools/m4 install
make[2] -C tools/flex compile
make[2] -C tools/flex install
make[2] -C tools/bison compile
再 build 一次 package/utils/jq
user@8de9e3d5af60:~$ make package/utils/jq/compile
make[1] package/utils/jq/compile
make[2] -C package/toolchain compile
make[2] -C package/utils/jq compile
把 proscend 外層的 openwrt 再 build 一次吧... ok
再進 proscend 再 build 一次 image... ok
upgrade 52XXZ via uboot - run update_fullimage
... ok
開機再次確認 FirmwareProgress.sh
root@52XXZ:~# FirmwareProgress.sh
root@52XXZ:~# cat /tmp/FirmwareUpgrade.progress.json
{"state":"idle","status":"idle","curr_time":"70.87"}
整理一下先上 code 吧
不過 /proscend/Makefile
先不上
@@ -102,7 +102,7 @@ IMAGE_NAME := $(MODEL_NAME)-$(shell date +"%m%d%Y").img
.PHONY: all clean install distclean
#default all: prepare prosrc opensrc install rootfsimage root_squashfs sysupgrade_bin fullimage
-default all: prepare prosrc opensrc install clean_image rootfsimage fullimage
+default all: prepare prosrc opensrc install clean_image rootfsimage fullimage firmware_img
install:
echo "PROSCEND INSTALL"
@@ -254,6 +254,23 @@ clean_image:
rootfsimage: image/rootfs.img
fullimage : image/fullimage.img
+
+
+firmware_img: fullimage
+ rm -f image/firmware.img
+ cp rootfs/etc/mcsv image/mcsv
+ openssl des3 -salt -in image/mcsv -out image/mcsv.enc -k 2wsx#EDC
+ mkdir -p firmware
+ cp image/mcsv.enc firmware
+ cp image/fullimage.img firmware
+ cd firmware; md5sum * > firmware.md5
+ tar -cf image/$(IMAGE_NAME) firmware
+ cp image/$(IMAGE_NAME) image/firmware.img
+ rm -rf firmware
+ @echo MCSV=$(MCSV)
+
+
+
.PHONY: buildenv_check buildenv_gen buildenv_clean penv merge
menuconfig: pconfig pconfig_links pvars_links penv prosrc_clean openwrt-base
1600
commit b3be1c09dc07ea2da3005646a1cb01637f9126d6
Refs: [develop], {origin/develop}, {origin/HEAD}
Author: jeffrey <[email protected]>
Date: Wed Sep 19 16:01:35 2018 +0800
enable the 'jq' package:
- need bison version 3.0 or greater
52xxz_defconfig | 1 +
dl/bison-3.0.2.tar.xz | Bin 0 -> 1927296 bytes
dl/jq-1.5.tar.gz | Bin 0 -> 739309 bytes
tools/bison/Makefile | 10 +++++-----
tools/bison/patches/000-relocatable.patch | 20 --------------------
tools/bison/patches/010-intl-stub-compat.patch | 8 ++++----
tools/bison/patches/100-fix-gets-removal.patch | 17 +++++++++--------
7 files changed, 19 insertions(+), 37 deletions(-)
1610
firmware.cgi?act=progress
已經可以正常運作
1620
為了讓 FirmwareUpgrade.sh
能正常執行
我需要 md5sum
目前該功能沒被啟動
修正 52xxz_defconfig
@@ -513,7 +513,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_LS_USERNAME=y
CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR=y
CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-# CONFIG_BUSYBOX_CONFIG_MD5SUM is not set
+CONFIG_BUSYBOX_CONFIG_MD5SUM=y
CONFIG_BUSYBOX_CONFIG_MKDIR=y
# CONFIG_BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
# CONFIG_BUSYBOX_CONFIG_MKFIFO is not set
重新 source proenv.sh
後先 build proscend 外層... ok
再進 proscend build image... ok
再次前進
出現錯誤
root@52XXZ:/ramdisk/tmp/firmware# ls
firmware.md5 fullimage.img mcsv.enc
root@52XXZ:/ramdisk/tmp/firmware# cat firmware.md5
cbd88a2992cecacbc2d1f82627f2992c fullimage.img
da42328de01a395c384c75d894324ae7 mcsv.enc
root@52XXZ:/ramdisk/tmp/firmware# md5sum -c firmware.md5
md5sum: can't open '-c': No such file or directory
8dbb5a71125227fbbc89543e9b51b5b2 firmware.md5
比較一下 52XXZ 和 M360P 上 md5sum 的版本差異
52XXZ
root@52XXZ:/ramdisk/tmp/firmware# md5sum --help
BusyBox v1.17.1 (2018-09-19 08:31:59 UTC) multi-call binary.
Usage: md5sum [OPTIONS] [FILE]...
Print MD5 checksums
M360P
root@M360-P:/tmp/firmware# md5sum --help
BusyBox v1.22.1 (2018-09-14 04:24:50 UTC) multi-call binary.
Usage: md5sum [-c[sw]] [FILE]...
Print or check MD5 checksums
-c Check sums against list in FILEs
-s Don't output anything, status code shows success
-w Warn about improperly formatted checksum lines
busyBox 升級這條路困難重重
我得想辦法自己寫了
再把 diff 開起來用
@@ -513,7 +513,7 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_LS_USERNAME=y
CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR=y
CONFIG_BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
-# CONFIG_BUSYBOX_CONFIG_MD5SUM is not set
+CONFIG_BUSYBOX_CONFIG_MD5SUM=y
CONFIG_BUSYBOX_CONFIG_MKDIR=y
# CONFIG_BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
# CONFIG_BUSYBOX_CONFIG_MKFIFO is not set
@@ -611,7 +611,7 @@ CONFIG_BUSYBOX_CONFIG_WHICH=y
CONFIG_BUSYBOX_CONFIG_AWK=y
CONFIG_BUSYBOX_CONFIG_FEATURE_AWK_LIBM=y
# CONFIG_BUSYBOX_CONFIG_CMP is not set
-# CONFIG_BUSYBOX_CONFIG_DIFF is not set
+ CONFIG_BUSYBOX_CONFIG_DIFF=y
# CONFIG_BUSYBOX_CONFIG_ED is not set
# CONFIG_BUSYBOX_CONFIG_PATCH is not set
CONFIG_BUSYBOX_CONFIG_SED=y