20180124_jeffrey - silenceuncrio/diary GitHub Wiki

0915

先 trace m360 image 產出的步驟

make V=s 可以看到 compile 過程的詳細訊息

從最後面開始找跟產出 image 有關的流程

make[5]: Entering directory `/home/user/MTKOpenWrt-ODM/target/linux/ramips/image'
make[5]: `compile' is up to date.
# Use symbolic permissions to avoid clobbering SUID/SGID/sticky bits
/usr/bin/find /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips -type f -not -perm +0100 -not -name 'ssh_host*' -not -name 'shadow' -print0 | xargs -r -0 chmod u+rw,g+r,o+r
/usr/bin/find /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips -type f -perm +0100 -print0 | xargs -r -0 chmod u+rwx,g+rx,o+rx
/usr/bin/find /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips -type d -print0 | xargs -r -0 chmod u+rwx,g+rx,o+rx
install -d -m0755 /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/tmp
chmod 1777 /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/tmp
cp /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux.elf /home/user/MTKOpenWrt-ODM/bin/ramips/openwrt-ramips-mt7621-vmlinux.elf
cp /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux /home/user/MTKOpenWrt-ODM/bin/ramips/openwrt-ramips-mt7621-vmlinux.bin
/home/user/MTKOpenWrt-ODM/staging_dir/host/bin/lzma e /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux -lc1 -lp2 -pb2 /home/user/MTKOpenWrt-ODM/build_dir/ta
rget-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03
mkimage -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" -d /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux.bin.lz
ma /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/uImage.lzma
Image Name:   OpenWrt Linux-3.10.14
Created:      Tue Jan 23 09:48:24 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1566640 Bytes = 1529.92 kB = 1.49 MB
Load Address: 80001000
Entry Point:  80001000
cp /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/uImage.lzma /home/user/MTKOpenWrt-ODM/bin/ramips/openwrt-ramips-mt7621-uImage.bin
/home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mksquashfs4 /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uCli
bc-0.9.33.2/linux-ramips_mt7621/root.squashfs -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2  -b 256k -p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1' -processors 1
Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs, block size 262144.
Pseudo file "/dev" exists in source filesystem "/home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/dev".
Ignoring, exclude it (-e/-ef) to override.
[==================================================================================================================================================================================================-] 785/785 100%
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
        compressed data, compressed metadata, compressed fragments, no xattrs
        duplicates are removed
Filesystem size 3250.58 Kbytes (3.17 Mbytes)
        30.11% of uncompressed filesystem size (10794.56 Kbytes)
Inode table size 8378 bytes (8.18 Kbytes)
        23.60% of uncompressed inode table size (35499 bytes)
Directory table size 10510 bytes (10.26 Kbytes)
        48.32% of uncompressed directory table size (21753 bytes)
Number of duplicate files found 25
Number of inodes 1072
Number of files 789
Number of fragments 26
Number of symbolic links  186
Number of device nodes 1
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 96
Number of ids (unique uids + gids) 1
Number of uids 1
        root (0)
Number of gids 1
        root (0)
dd if=/home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs of=/home/user/MTKOpenWrt-ODM/bin/ramips/openwrt-ramips-mt7621-root.squashfs bs=128k conv=sync
25+1 records in
26+0 records out
3407872 bytes (3.4 MB) copied, 0.00644181 s, 529 MB/s
cp /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-
mt7621
#/home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/linux-3.10.14/scripts/dtc/dtc -O dtb -o /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.
2/linux-ramips_mt7621/MT7621.dtb ../dts/MT7621.dts
#/home/user/MTKOpenWrt-ODM/staging_dir/host/bin/patch-dtb /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621 /home/user/MTKOpenWrt-ODM/build_dir/target
-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/MT7621.dtb
/home/user/MTKOpenWrt-ODM/staging_dir/host/bin/lzma e /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621 -lc1 -lp2 -pb2 /home/user/MTKOpenWrt-ODM/build
_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03
mkimage -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" -d /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621
.bin.lzma /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.uImage
Image Name:   OpenWrt Linux-3.10.14
Created:      Tue Jan 23 09:48:30 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1566640 Bytes = 1529.92 kB = 1.49 MB
Load Address: 80001000
Entry Point:  80001000
cat /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.uImage /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_
mt7621/root.squashfs > /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin
/home/user/MTKOpenWrt-ODM/staging_dir/host/bin/padjffs2 /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin 4 8 16
 64 128 256
padding image to 004ac000
padding image to 004b0000
padding image to 004c0000
if [ `stat -c%s "/home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin"` -gt 8060928 ]; then echo "Warning: /home/us
er/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin is too big" >&2; else cp -fpR /home/user/MTKOpenWrt-ODM/build_dir/targ
et-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin /home/user/MTKOpenWrt-ODM/bin/ramips/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin; fi
( cd /home/user/MTKOpenWrt-ODM/bin/ramips ; /usr/bin/find -maxdepth 1 -type f \! -name 'md5sums'  -printf "%P\n" | sort | xargs md5sum --binary > md5sums )
make[5]: Leaving directory `/home/user/MTKOpenWrt-ODM/target/linux/ramips/image'
make[4]: Leaving directory `/home/user/MTKOpenWrt-ODM/target/linux/ramips'
make[3]: Leaving directory `/home/user/MTKOpenWrt-ODM/target/linux'
make[2]: Leaving directory `/home/user/MTKOpenWrt-ODM'

1000

化簡一下 /home/user/MTKOpenWrt-ODM/build_dir 縮成 build_dir /home/user/MTKOpenWrt-ODM/bin 縮成 bin

make[5]: Entering directory `/home/user/MTKOpenWrt-ODM/target/linux/ramips/image'
make[5]: `compile' is up to date.



# Use symbolic permissions to avoid clobbering SUID/SGID/sticky bits

find build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips 
  -type f -not -perm +0100 -not -name 'ssh_host*' -not -name 'shadow' -print0 | 
  xargs -r -0 chmod u+rw,g+r,o+r

find build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips 
  -type f -perm +0100 -print0 | 
  xargs -r -0 chmod u+rwx,g+rx,o+rx

find build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips 
  -type d -print0 | 
  xargs -r -0 chmod u+rwx,g+rx,o+rx

install -d -m0755 build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/tmp

chmod 1777 build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/tmp

cp 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux.elf 
  bin/ramips/openwrt-ramips-mt7621-vmlinux.elf

cp 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux 
  bin/ramips/openwrt-ramips-mt7621-vmlinux.bin

lzma e build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux 
  -lc1 -lp2 
  -pb2 build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

mkimage 
  -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" 
  -d build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux.bin.lzma 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/uImage.lzma

Image Name:   OpenWrt Linux-3.10.14
Created:      Tue Jan 23 09:48:24 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1566640 Bytes = 1529.92 kB = 1.49 MB
Load Address: 80001000
Entry Point:  80001000



cp 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/uImage.lzma 
  bin/ramips/openwrt-ramips-mt7621-uImage.bin



mksquashfs4 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs 
  -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2  -b 256k -p '/dev d 755 0 0' 
  -p '/dev/console c 600 0 0 5 1' -processors 1

Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs, block size 262144.
Pseudo file "/dev" exists in source filesystem "/home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/dev".
Ignoring, exclude it (-e/-ef) to override.
[==================================================================================================================================================================================================-] 785/785 100%
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
        compressed data, compressed metadata, compressed fragments, no xattrs
        duplicates are removed
Filesystem size 3250.58 Kbytes (3.17 Mbytes)
        30.11% of uncompressed filesystem size (10794.56 Kbytes)
Inode table size 8378 bytes (8.18 Kbytes)
        23.60% of uncompressed inode table size (35499 bytes)
Directory table size 10510 bytes (10.26 Kbytes)
        48.32% of uncompressed directory table size (21753 bytes)
Number of duplicate files found 25
Number of inodes 1072
Number of files 789
Number of fragments 26
Number of symbolic links  186
Number of device nodes 1
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 96
Number of ids (unique uids + gids) 1
Number of uids 1
        root (0)
Number of gids 1
        root (0)



dd 
  if=build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs 
  of=bin/ramips/openwrt-ramips-mt7621-root.squashfs bs=128k conv=sync
25+1 records in
26+0 records out
3407872 bytes (3.4 MB) copied, 0.00644181 s, 529 MB/s

cp 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621

#dtc -O dtb 
  -o build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/MT7621.dtb 
  ../dts/MT7621.dts

#patch-dtb 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/MT7621.dtb

lzma e build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621 
  -lc1 -lp2 -pb2 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

mkimage -
  A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" 
  -d build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.uImage

Image Name:   OpenWrt Linux-3.10.14
Created:      Tue Jan 23 09:48:30 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1566640 Bytes = 1529.92 kB = 1.49 MB
Load Address: 80001000
Entry Point:  80001000



cat 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.uImage 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs 
  > 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin

padjffs2 
  build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin 4 8 16 64 128 256
padding image to 004ac000
padding image to 004b0000
padding image to 004c0000

make[5]: Leaving directory `/home/user/MTKOpenWrt-ODM/target/linux/ramips/image'

1015

繼續化簡

  • build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2 縮成 <build_target>
make[5]: Entering directory `/home/user/MTKOpenWrt-ODM/target/linux/ramips/image'
make[5]: `compile' is up to date.



# Use symbolic permissions to avoid clobbering SUID/SGID/sticky bits

find <build_target>/root-ramips 
  -type f -not -perm +0100 -not -name 'ssh_host*' -not -name 'shadow' -print0 | 
  xargs -r -0 chmod u+rw,g+r,o+r

find <build_target>/root-ramips 
  -type f -perm +0100 -print0 | 
  xargs -r -0 chmod u+rwx,g+rx,o+rx

find <build_target>/root-ramips 
  -type d -print0 | 
  xargs -r -0 chmod u+rwx,g+rx,o+rx

install -d -m0755 <build_target>/root-ramips/tmp

chmod 1777 <build_target>/root-ramips/tmp

cp 
  <build_target>/linux-ramips_mt7621/vmlinux.elf 
  bin/ramips/openwrt-ramips-mt7621-vmlinux.elf

cp 
  <build_target>/linux-ramips_mt7621/vmlinux 
  bin/ramips/openwrt-ramips-mt7621-vmlinux.bin

lzma e <build_target>/linux-ramips_mt7621/vmlinux 
  -lc1 -lp2 
  -pb2 <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

mkimage 
  -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" 
  -d <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma 
  <build_target>/linux-ramips_mt7621/uImage.lzma

Image Name:   OpenWrt Linux-3.10.14
Created:      Tue Jan 23 09:48:24 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1566640 Bytes = 1529.92 kB = 1.49 MB
Load Address: 80001000
Entry Point:  80001000



cp 
  <build_target>/linux-ramips_mt7621/uImage.lzma 
  bin/ramips/openwrt-ramips-mt7621-uImage.bin



mksquashfs4 
  <build_target>/root-ramips 
  <build_target>/linux-ramips_mt7621/root.squashfs 
  -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2  -b 256k -p '/dev d 755 0 0' 
  -p '/dev/console c 600 0 0 5 1' -processors 1

Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs, block size 262144.
Pseudo file "/dev" exists in source filesystem "/home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/dev".
Ignoring, exclude it (-e/-ef) to override.
[==================================================================================================================================================================================================-] 785/785 100%
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
        compressed data, compressed metadata, compressed fragments, no xattrs
        duplicates are removed
Filesystem size 3250.58 Kbytes (3.17 Mbytes)
        30.11% of uncompressed filesystem size (10794.56 Kbytes)
Inode table size 8378 bytes (8.18 Kbytes)
        23.60% of uncompressed inode table size (35499 bytes)
Directory table size 10510 bytes (10.26 Kbytes)
        48.32% of uncompressed directory table size (21753 bytes)
Number of duplicate files found 25
Number of inodes 1072
Number of files 789
Number of fragments 26
Number of symbolic links  186
Number of device nodes 1
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 96
Number of ids (unique uids + gids) 1
Number of uids 1
        root (0)
Number of gids 1
        root (0)



dd 
  if=<build_target>/linux-ramips_mt7621/root.squashfs 
  of=bin/ramips/openwrt-ramips-mt7621-root.squashfs bs=128k conv=sync
25+1 records in
26+0 records out
3407872 bytes (3.4 MB) copied, 0.00644181 s, 529 MB/s

cp 
  <build_target>/linux-ramips_mt7621/vmlinux 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621

#dtc -O dtb 
  -o <build_target>/linux-ramips_mt7621/MT7621.dtb 
  ../dts/MT7621.dts

#patch-dtb 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621 
  <build_target>/linux-ramips_mt7621/MT7621.dtb

lzma e <build_target>/linux-ramips_mt7621/vmlinux-mt7621 
  -lc1 -lp2 -pb2 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

mkimage -
  A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" 
  -d <build_target>/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621.uImage

Image Name:   OpenWrt Linux-3.10.14
Created:      Tue Jan 23 09:48:30 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1566640 Bytes = 1529.92 kB = 1.49 MB
Load Address: 80001000
Entry Point:  80001000



cat 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621.uImage 
  <build_target>/linux-ramips_mt7621/root.squashfs 
  > 
  <build_target>/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin

padjffs2 
  <build_target>/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin 
  4 8 16 64 128 256
padding image to 004ac000
padding image to 004b0000
padding image to 004c0000

make[5]: Leaving directory `/home/user/MTKOpenWrt-ODM/target/linux/ramips/image'

1050

看一下 lzma 的用法

user@a5076210d06e:~/study$ /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

Usage:  LZMA <e|d> inputFile outputFile [<switches>...]
  e: encode file
  d: decode file
  b: Benchmark
<Switches>
  -a{N}:  set compression mode - [0, 1], default: 1 (max)
  -d{N}:  set dictionary size - [12, 30], default: 23 (8MB)
  -fb{N}: set number of fast bytes - [5, 273], default: 128
  -mc{N}: set number of cycles for match finder
  -lc{N}: set number of literal context bits - [0, 8], default: 3
  -lp{N}: set number of literal pos bits - [0, 4], default: 0
  -pb{N}: set number of pos bits - [0, 4], default: 2
  -mf{MF_ID}: set Match Finder: [bt2, bt3, bt4, hc4], default: bt4
  -mt{N}: set number of CPU threads
  -eos:   write End Of Stream marker
  -si:    read data from stdin
  -so:    write data to stdout

解析

lzma e <build_target>/linux-ramips_mt7621/vmlinux 
  -lc1 -lp2 
  -pb2 <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma
  • e - encode file
  • inputFile = <build_target>/linux-ramips_mt7621/vmlinux
  • outputFile = <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma
  • -lc1 - set number of literal context bits - 1
  • -lp2 - set number of literal pos bits - 2
  • -pb2 - set number of pos bits - 2

看一下效果

vmlinux 使用 lzma 前 size 為 4,593,984

user@a5076210d06e:~/study$ ls -al
total 4496
drwxr-xr-x 2 user user    4096 Jan 24 03:10 .
drwxrwxr-x 8 user user    4096 Jan 24 02:55 ..
-rwxr-xr-x 1 user user 4593984 Jan 24 02:55 vmlinux

使用 lzmavmlinux 壓成 vmlinux.bin.lzma

user@a5076210d06e:~/study$ /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/lzma e vmlinux vmlinux.bin.lzma -lc1 -lp2 -pb2

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

壓縮後的 vmlinux.bin.lzma 的 size 為 1,566,640

user@a5076210d06e:~/study$ ls -al
total 6028
drwxr-xr-x 2 user user    4096 Jan 24 03:12 .
drwxrwxr-x 8 user user    4096 Jan 24 02:55 ..
-rwxr-xr-x 1 user user 4593984 Jan 24 02:55 vmlinux
-rw-r--r-- 1 user user 1566640 Jan 24 03:12 vmlinux.bin.lzma

約為原本的 34.1% 節省了 3,027,344

1125

看一下 mkimage 的用法

user@a5076210d06e:~/study$ /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mkimage
Usage: /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mkimage -l image
          -l ==> list image header information
       /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mkimage [-x] -A arch -O os -T type -C comp -M magic -a addr -e ep -n name -d data_file[:data_file...] image
          -A ==> set architecture to 'arch'
          -O ==> set operating system to 'os'
          -T ==> set image type to 'type'
          -C ==> set compression type 'comp'
          -M ==> set image magic to 'magic'
          -a ==> set load address to 'addr' (hex)
          -e ==> set entry point to 'ep' (hex)
          -n ==> set image name to 'name'
          -d ==> use image data from 'datafile'
          -x ==> set XIP (execute in place)
       /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mkimage [-D dtc_options] [-f fit-image.its|-F] fit-image
          -D => set options for device tree compiler
          -f => input filename for FIT source
Signing / verified boot not supported (CONFIG_FIT_SIGNATURE undefined)
       /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mkimage -V ==> print version information and exit

解析

mkimage 
  -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" 
  -d <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma 
  <build_target>/linux-ramips_mt7621/uImage.lzma
  • -A mips - set architecture to 'mips'
  • -O linux - set operating system to 'linux'
  • -T kernel - set image type to 'kernel'
  • -C lzma - set compression type 'lzma'
  • -a 0x80001000 - set load address to '0x80001000' (hex)
  • -e 0x80001000 - set entry point to '0x80001000' (hex)
  • -n "OpenWrt Linux-3.10.14" - set image name to "OpenWrt Linux-3.10.14"
  • -d <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma - use image data from '<build_target>/linux-ramips_mt7621/vmlinux.bin.lzma'
  • <build_target>/linux-ramips_mt7621/uImage.lzma - target image

1305

看一下 mksquashfs4 的用法

user@a5076210d06e:~/study$ /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mksquashfs4
SYNTAX:/home/user/MTKOpenWrt-ODM/staging_dir/host/bin/mksquashfs4 source1 source2 ...  dest [options] [-e list of exclude
dirs/files]

Filesystem build options:
-comp <comp>            select <comp> compression
                        Compressors available:
                                gzip (default)
                                lzma
                                xz
-b <block_size>         set data block to <block_size>.  Default 131072 bytes
-no-exports             don't make the filesystem exportable via NFS
-no-sparse              don't detect sparse files
-no-xattrs              don't store extended attributes (default)
-xattrs                 store extended attributes (unsupported)
-noI                    do not compress inode table
-noD                    do not compress data blocks
-noF                    do not compress fragment blocks
-noX                    do not compress extended attributes
-no-fragments           do not use fragments
-always-use-fragments   use fragment blocks for files larger than block size
-no-duplicates          do not perform duplicate checking
-all-root               make all files owned by root
-force-uid uid          set all file uids to uid
-force-gid gid          set all file gids to gid
-nopad                  do not pad filesystem to a multiple of 4K
-keep-as-directory      if one source directory is specified, create a root
                        directory containing that directory, rather than the
                        contents of the directory

Filesystem filter options:
-p <pseudo-definition>  Add pseudo file definition
-pf <pseudo-file>       Add list of pseudo file definitions
-sort <sort_file>       sort files according to priorities in <sort_file>.  One
                        file or dir with priority per line.  Priority -32768 to
                        32767, default priority 0
-ef <exclude_file>      list of exclude dirs/files.  One per line
-wildcards              Allow extended shell wildcards (globbing) to be used in
                        exclude dirs/files
-regex                  Allow POSIX regular expressions to be used in exclude
                        dirs/files

Filesystem append options:
-noappend               do not append to existing filesystem
-root-becomes <name>    when appending source files/directories, make the
                        original root become a subdirectory in the new root
                        called <name>, rather than adding the new source items
                        to the original root

Mksquashfs runtime options:
-version                print version, licence and copyright message
-recover <name>         recover filesystem data using recovery file <name>
-no-recovery            don't generate a recovery file
-info                   print files written to filesystem
-no-progress            don't display the progress bar
-processors <number>    Use <number> processors.  By default will use number of
                        processors available
-read-queue <size>      Set input queue to <size> Mbytes.  Default 64 Mbytes
-write-queue <size>     Set output queue to <size> Mbytes.  Default 512 Mbytes
-fragment-queue <size>  Set fragment queue to <size> Mbytes.  Default 64 Mbytes

Miscellaneous options:
-root-owned             alternative name for -all-root
-noInodeCompression     alternative name for -noI
-noDataCompression      alternative name for -noD
-noFragmentCompression  alternative name for -noF
-noXattrCompression     alternative name for -noX

Compressors available and compressor specific options:
        gzip (no options) (default)
        lzma
          -Xpreset <preset>
                compression preset (0-9, default 6)
          -Xe
                Try to improve compression ratio by using more CPU time.
          -Xlc <lc>
                Number of literal context bits (0-4, default 3)
          -Xlp <lp>
                Number of literal position bits (0-4, default 0)
          -Xpb <pb>
                Number of position bits (0-4, default 2)
          -Xnice <nice>
                Nice length of a match (5-273, default 64)
          -Xdict-size <dict-size>
                Use <dict-size> as the LZMA dictionary size.  The dictionary size
                can be specified as a percentage of the block size, or as an
                absolute value.  The dictionary size must be less than or equal
                to the block size and 4096 bytes or larger.  It must also be
                storable in the lzma header as either 2^n or as 2^n+2^(n+1).
                Example dict-sizes are 75%, 50%, 37.5%, 25%, or 32K, 16K, 8K
                etc.
        xz
          -Xpreset <preset>
                compression preset (0-9, default 6)
          -Xe
                Try to improve compression ratio by using more CPU time.
          -Xlc <lc>
                Number of literal context bits (0-4, default 3)
          -Xlp <lp>
                Number of literal position bits (0-4, default 0)
          -Xpb <pb>
                Number of position bits (0-4, default 2)
          -Xnice <nice>
                Nice length of a match (5-273, default 64)
          -Xdict-size <dict-size>
                Use <dict-size> as the XZ dictionary size.  The dictionary size
                can be specified as a percentage of the block size, or as an
                absolute value.  The dictionary size must be less than or equal
                to the block size and 8192 bytes or larger.  It must also be
                storable in the lzma header as either 2^n or as 2^n+2^(n+1).
                Example dict-sizes are 75%, 50%, 37.5%, 25%, or 32K, 16K, 8K
                etc.
          -Xbcj filter1,filter2,...,filterN
                Compress using filter1,filter2,...,filterN in turn
                (in addition to no filter), and choose the best compression.
                Available filters: x86, arm, armthumb, powerpc, sparc, ia64

解析

mksquashfs4 
  <build_target>/root-ramips 
  <build_target>/linux-ramips_mt7621/root.squashfs 
  -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2  -b 256k -p '/dev d 755 0 0' 
  -p '/dev/console c 600 0 0 5 1' -processors 1
  • <build_target>/root-ramips - source1 source2 ...
  • <build_target>/linux-ramips_mt7621/root.squashfs - dest
  • -nopad - do not pad filesystem to a multiple of 4K
  • -noappend - do not append to existing filesystem
  • -root-owned - alternative name for -all-root
  • -comp xz - elect compression - xz
  • -Xpreset 9- compression preset 9
  • -Xe - Try to improve compression ratio by using more CPU time.
  • -Xlc 0 - Number of literal context bits 0
  • -Xlp 2 - umber of literal position bits 2
  • -Xpb 2 - Number of position bits 2
  • -b 256k - set data block to 256k
  • -p '/dev d 755 0 0' - Add pseudo file definition
  • -p '/dev/console c 600 0 0 5 1' - Add pseudo file definition
  • -processors 1 - Use 1 processors

再整理一下 SYNTAX:mksquashfs4 - 只列出 options 大項

SYNTAX:mksquashfs4 source1 source2 ...  dest [options] [-e list of exclude dirs/files]

Filesystem build options:

Filesystem filter options:

Filesystem append options:

Mksquashfs runtime options:

Miscellaneous options:

Compressors available and compressor specific options:

再次解析 - 加上 SYNTAX:mksquashfs4 options 大項

mksquashfs4 
  <build_target>/root-ramips 
  <build_target>/linux-ramips_mt7621/root.squashfs 
  -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2  -b 256k -p '/dev d 755 0 0' 
  -p '/dev/console c 600 0 0 5 1' -processors 1
  • source1 source2 ...
    • <build_target>/root-ramips
  • dest
    • <build_target>/linux-ramips_mt7621/root.squashfs
  • options
    • Filesystem build options
      • -comp xz - elect compression - xz
      • -b 256k - set data block to 256k
      • -nopad - do not pad filesystem to a multiple of 4K
    • Filesystem filter options
      • -p '/dev d 755 0 0' - Add pseudo file definition
      • -p '/dev/console c 600 0 0 5 1' - Add pseudo file definition
    • Filesystem append options
      • -noappend - do not append to existing filesystem
    • Mksquashfs runtime options
      • -processors 1 - Use 1 processors
    • Miscellaneous options
      • -root-owned - alternative name for -all-root
    • Compressors available and compressor specific options
      • xz
        • -Xpreset 9- compression preset 9
        • -Xe - Try to improve compression ratio by using more CPU time.
        • -Xlc 0 - Number of literal context bits 0
        • -Xlp 2 - umber of literal position bits 2
        • -Xpb 2 - Number of position bits 2

以下是執行的 console output

Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on <build_target>/linux-ramips_mt7621/root.squashfs, block size 262144.
Pseudo file "/dev" exists in source filesystem "<build_target>/root-ramips/dev".
Ignoring, exclude it (-e/-ef) to override.
[==================================================================================================================================================================================================-] 785/785 100%
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
        compressed data, compressed metadata, compressed fragments, no xattrs
        duplicates are removed
Filesystem size 3250.58 Kbytes (3.17 Mbytes)
        30.11% of uncompressed filesystem size (10794.56 Kbytes)
Inode table size 8378 bytes (8.18 Kbytes)
        23.60% of uncompressed inode table size (35499 bytes)
Directory table size 10510 bytes (10.26 Kbytes)
        48.32% of uncompressed directory table size (21753 bytes)
Number of duplicate files found 25
Number of inodes 1072
Number of files 789
Number of fragments 26
Number of symbolic links  186
Number of device nodes 1
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 96
Number of ids (unique uids + gids) 1
Number of uids 1
        root (0)
Number of gids 1
        root (0)

1350

再化簡一次產出 image 的流程

刪掉跟最後產出的 image 不相關的部分

  • make[5]:*
  • Use symbolic permissions to avoid clobbering SUID/SGID/sticky bits
  • install -d -m0755 <build_target>/root-ramips/tmp
  • chmod 1777 <build_target>/root-ramips/tmp
  • cp vmlinux.elf openwrt-ramips-mt7621-vmlinux.elf
  • cp vmlinux openwrt-ramips-mt7621-vmlinux.bin
  • cp uImage.lzma openwrt-ramips-mt7621-uImage.bin

這部分也無關

lzma e <build_target>/linux-ramips_mt7621/vmlinux 
  -lc1 -lp2 
  -pb2 <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

mkimage 
  -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" 
  -d <build_target>/linux-ramips_mt7621/vmlinux.bin.lzma 
  <build_target>/linux-ramips_mt7621/uImage.lzma

這部分也無關

dd 
  if=<build_target>/linux-ramips_mt7621/root.squashfs 
  of=bin/ramips/openwrt-ramips-mt7621-root.squashfs bs=128k conv=sync
25+1 records in
26+0 records out
3407872 bytes (3.4 MB) copied, 0.00644181 s, 529 MB/s

最後留下來的主流程

mksquashfs4 
  <build_target>/root-ramips 
  <build_target>/linux-ramips_mt7621/root.squashfs 
  -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2  -b 256k -p '/dev d 755 0 0' 
  -p '/dev/console c 600 0 0 5 1' -processors 1

Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on /home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs, block size 262144.
Pseudo file "/dev" exists in source filesystem "/home/user/MTKOpenWrt-ODM/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/dev".
Ignoring, exclude it (-e/-ef) to override.
[==================================================================================================================================================================================================-] 785/785 100%
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
        compressed data, compressed metadata, compressed fragments, no xattrs
        duplicates are removed
Filesystem size 3250.58 Kbytes (3.17 Mbytes)
        30.11% of uncompressed filesystem size (10794.56 Kbytes)
Inode table size 8378 bytes (8.18 Kbytes)
        23.60% of uncompressed inode table size (35499 bytes)
Directory table size 10510 bytes (10.26 Kbytes)
        48.32% of uncompressed directory table size (21753 bytes)
Number of duplicate files found 25
Number of inodes 1072
Number of files 789
Number of fragments 26
Number of symbolic links  186
Number of device nodes 1
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 96
Number of ids (unique uids + gids) 1
Number of uids 1
        root (0)
Number of gids 1
        root (0)



cp 
  <build_target>/linux-ramips_mt7621/vmlinux 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621

lzma e <build_target>/linux-ramips_mt7621/vmlinux-mt7621 
  -lc1 -lp2 -pb2 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03

mkimage -
  A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" 
  -d <build_target>/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621.uImage

Image Name:   OpenWrt Linux-3.10.14
Created:      Tue Jan 23 09:48:30 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1566640 Bytes = 1529.92 kB = 1.49 MB
Load Address: 80001000
Entry Point:  80001000



cat 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621.uImage 
  <build_target>/linux-ramips_mt7621/root.squashfs 
  > 
  <build_target>/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin



padjffs2 
  <build_target>/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin 
  4 8 16 64 128 256
padding image to 004ac000
padding image to 004b0000
padding image to 004c0000

1400

再看 padjffs2 的 usage

user@a5076210d06e:~/study$ /home/user/MTKOpenWrt-ODM/staging_dir/host/bin/padjffs2
Usage: padjffs2 file [<options>] [pad0] [pad1] [padN]
Options:
  -x <offset>:          Add an extra offset for padding data
  -J:                   Use a fake big-endian jffs2 padding element instead of EOF
                        This is used to work around broken boot loaders that
                        try to parse the entire firmware area as one big jffs2
  -j:                   (like -J, but little-endian instead of big-endian)

解析

padjffs2 
  <build_target>/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin 
  4 8 16 64 128 256

實在不太知道 4 8 16 64 128 256 到底是什麼

1515

直接參考 include/image.mk 裡的定義

# pad to 4k, 8k, 16k, 64k, 128k, 256k and add jffs2 end-of-filesystem mark
define prepare_generic_squashfs
	$(STAGING_DIR_HOST)/bin/padjffs2 $(1) 4 8 16 64 128 256
endef

1535

再回到我們自己的 M360P source code

先 git pull 後再 compile

1630

我們的 M360P 終於也產出 image 了

仿照今天的 trace 來記錄 M360P image 的產出主流程

mksquashfs4 <build_target>/root-ramips <build_target>/linux-ramips_mt7621/root.squashfs 
-nopad 
-noappend 
-root-owned 
-comp xz 
-Xpreset 9 
-Xe 
-Xlc 0 
-Xlp 2 
-Xpb 2  
-b 256k 
-p '/dev d 755 0 0' 
-p '/dev/console c 600 0 0 5 1' 
-processors 1

Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on /home/user/M360P/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/root.squashfs, block size 262144.
Pseudo file "/dev" exists in source filesystem "/home/user/M360P/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/dev".
Ignoring, exclude it (-e/-ef) to override.
[================================================================================================================================================================================================|] 1435/1435 100%
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
        compressed data, compressed metadata, compressed fragments, no xattrs
        duplicates are removed
Filesystem size 10146.93 Kbytes (9.91 Mbytes)
        29.14% of uncompressed filesystem size (34823.05 Kbytes)
Inode table size 15116 bytes (14.76 Kbytes)
        24.91% of uncompressed inode table size (60679 bytes)
Directory table size 18042 bytes (17.62 Kbytes)
        46.99% of uncompressed directory table size (38397 bytes)
Number of duplicate files found 32
Number of inodes 1815
Number of files 1392
Number of fragments 62
Number of symbolic links  271
Number of device nodes 1
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 151
Number of ids (unique uids + gids) 1
Number of uids 1
        root (0)
Number of gids 1
        root (0)



cp <build_target>/linux-ramips_mt7621/vmlinux <build_target>/linux-ramips_mt7621/vmlinux-mt7621

lzma e <build_target>/linux-ramips_mt7621/vmlinux-mt7621 
-lc1 -lp2 -pb2 
<build_target>/linux-ramips_mt7621/vmlinux-mt7621.bin.lzma

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03
mkimage -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n "OpenWrt Linux-3.10.14" -d /home/user/M360P/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.bin.lzm$
 /home/user/M360P/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/vmlinux-mt7621.uImage
Image Name:   OpenWrt Linux-3.10.14
Created:      Wed Jan 24 08:25:31 2018
Image Type:   MIPS Linux Kernel Image (lzma compressed)
Data Size:    1623038 Bytes = 1585.00 kB = 1.55 MB
Load Address: 80001000
Entry Point:  80001000



cat 
  <build_target>/linux-ramips_mt7621/vmlinux-mt7621.uImage 
  <build_target>/linux-ramips_mt7621/root.squashfs 
  > 
  <build_target>/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin

padjffs2 
  <build_target>/linux-ramips_mt7621/openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin 
  4 8 16 64 128 256

padding image to 00b75000
padding image to 00b76000
padding image to 00b78000
padding image to 00b80000

直接 ls -al <build_target>/linux-ramips_mt7621 裡的內容看看大小

user@a5076210d06e:~/M360P/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621$ ls -al
total 94732
drwxr-xr-x  9 user user     4096 Jan 24 08:25 .
drwxr-xr-x 89 user user     4096 Jan 24 08:20 ..
drwxr-xr-x  3 user user     4096 Jan 24 08:15 base-files
drwxr-xr-x 15 user user     4096 Jan 24 08:15 iptables-1.4.21
drwxrwxr-x 28 user user     4096 Jan 24 08:25 linux-3.10.14
drwxr-xr-x  5 user user     4096 Jan 24 08:15 linux-atm-2.5.2
lrwxrwxrwx  1 user user      100 Jan 23 08:31 linux-kernel -> /home/user/M360P/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/linux-3.10.14
drwxr-xr-x  5 user user     4096 Jan 24 08:19 mt7603e-4.0.1.0
drwxr-xr-x  3 user user     4096 Jan 24 08:19 mtd
-rw-r--r--  1 user user 12058628 Jan 24 08:25 openwrt-ramips-mt7621-mt7621-squashfs-sysupgrade.bin
drwxr-xr-x  3 user user     4096 Jan 24 08:15 packages
-rw-r--r--  1 user user 10390452 Jan 24 08:25 root.squashfs
-rw-r--r--  1 user user  1623102 Jan 24 08:25 uImage.lzma
-rwxr-xr-x  1 user user  4770112 Jan 24 08:25 vmlinux
-rw-r--r--  1 user user  1623038 Jan 24 08:25 vmlinux.bin.lzma
-rwxr-xr-x  1 user user 53678877 Jan 24 08:25 vmlinux.debug
-rwxr-xr-x  1 user user  4775168 Jan 24 08:25 vmlinux.elf
-rwxr-xr-x  1 user user  4770112 Jan 24 08:25 vmlinux-mt7621
-rw-r--r--  1 user user  1623038 Jan 24 08:25 vmlinux-mt7621.bin.lzma
-rw-r--r--  1 user user  1623102 Jan 24 08:25 vmlinux-mt7621.uImage
⚠️ **GitHub.com Fallback** ⚠️