* Compare mount output using base of dirname
If you're building from a bind-mounted directory, the build will
fail as it will find two entries to unmount, but a single unmount
will remove them both causing an error. Adding a space means that
the mountpoint will only match with a single mount entry ; the
expected path, rather than the pre bind-mount.
* Switch to awk instead of mount, grep, cut pipes
Retry unmount 5 times and give up, letting the user know that they need to resolve the issue manually
---------
Co-authored-by: David Peverley <pev@analogue-micro.com>
Co-authored-by: Serge Schneider <serge@raspberrypi.com>
Although the loop block device is created before attaching the image
to it, the devices for the partition that the image contains are still
not created. This patch creates those devices as well, when they are
not already available.
Fixes#482
Signed-off-by: Vasilis Tsiligiannis <acinonyx@openwrt.gr>
Format the root partition with the metadata_csum option
Format the boot partition with 4 sectors per cluster for a slight performance boost
Remove 'flush' mount option from the boot partition
Previously, fdisk was used by sending commands into its stdin, which is
not very robust (since it heavily relies on the interactive prompts
offered by fdisk as well as the default values it offers, which seem
prone to changing in future version).
It seems likely that in the past, fdisk was easier than parted since it
provides default values that make it easier to create adjacent
partitions, without precalculating all positions in the script. However
now that partitions are manually being aligned, all data must be
calculated anyway.
This commit changes the partition generation to use parted rather than
fdisk. For this, it rewrites various calculations and renames variables
to be easier to read as well. All values are now in number of bytes,
rather than mixing bytes and sectors.
This commit also makes makes sure that the boot partition and root
partition are always adjacent (previously the root partition was aligned
without also rounding the boot partition size, leaving some empty space
in between).
As a side effect of using parted, this also causes the "bootcode" part
of the MBR to be filled with some default x86 bootcode. This is totally
irrelevant for booting the Raspberry Pi, but it does prevent triggering
a bug in parted. When using parted to change the partition table (e.g.
when resizing the root partition on first boot by raspi-config's
init_resize.sh), the disk identifier would be changed due to this bug,
which would change the PARTUUID of all partitions. The init_resize.sh
script would work around this by updating the PARTUUID in e.g. fstab,
but that's fragile at best. This commit prevents the bug from
triggering and keeps the disk identifier the same.
See https://debbugs.gnu.org/35714 for details about this parted bug.
This commit fixes#284.
The `(..)/raspberrypi-kernel/changelog.Debian.gz` file is not guaranteed
to be present in the built `ROOTFS_DIR`, for example when building very
minimal images without package documentation. In these cases, the `firmware`
variable will be left empty and the subsequent calls to `curl` will return
large 404 HTML content from GitHub.
Instead, simply check if the changelog file exists before using it.