Consider the following example: $ ./ptgen -v -a 0 -h 255 -s 63 -l 1024 -o test2.img -p 3M -p 128M -p 128M Partition 0: start=1048576, end=4194304, size=3145728 1048576 3145728 Partition 1: start=5242880, end=139460608, size=134217728 5242880 134217728 Partition 2: start=140509184, end=274726912, size=134217728 140509184 134217728
Opening the image file with cfdisk shows that there is free space between the partitions which is not required/intended: Size: 1 GiB, 1073741824 bytes, 2097152 sectors Label: dos, identifier: 0x5452574f Device Boot Start End Sectors Size Id Type test2.img1 2048 8191 6144 3M 83 Linux Free space 8192 10239 2048 1M test2.img2 10240 272383 262144 128M 83 Linux Free space 272384 274431 2048 1M test2.img3 274432 536575 262144 128M 83 Linux Free space 536576 2097151 1560576 762M With this patch the very same execution of ptgen results in: $ ./ptgen -v -a 0 -h 255 -s 63 -l 1024 -o test2.img -p 3M -p 128M -p 128M Partition 0: start=1048576, end=4194304, size=3145728 1048576 3145728 Partition 1: start=4194304, end=138412032, size=134217728 4194304 134217728 Partition 2: start=138412032, end=272629760, size=134217728 138412032 134217728 And the view with cfdisk shows, that there is no free space inserted anymore: Disk: test2.img Size: 1 GiB, 1073741824 bytes, 2097152 sectors Label: dos, identifier: 0x5452574f Device Boot Start End Sectors Size Id Type test2.img1 2048 8191 6144 3M 83 Linux test2.img2 8192 270335 262144 128M 83 Linux test2.img3 270336 532479 262144 128M 83 Linux Free space 532480 2097151 1564672 764M Signed-off-by: Michael Heimpold <m...@heimpold.de> --- tools/firmware-utils/src/ptgen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c index 3e1b8ba..d549faf 100644 --- a/tools/firmware-utils/src/ptgen.c +++ b/tools/firmware-utils/src/ptgen.c @@ -149,7 +149,7 @@ static int gen_ptable(uint32_t signature, int nr) pte[i].active = ((i + 1) == active) ? 0x80 : 0; pte[i].type = parts[i].type; - start = sect + sectors; + start = sect + ((i == 0) ? sectors : 0); if (kb_align != 0) start = round_to_kb(start); pte[i].start = cpu_to_le32(start); -- 2.7.4 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev