Sounds scary, but it happens at build time, not runtime, so it cannot
brick devices. However, it was a frustrating exercise to uncover it,
as it is not entirely deterministic. This has been there for quite a
long time and I honestly cannot tell why it happened to me now.
Perhaps the exact location of the sparse holes on the filesystem makes
a difference. Or perhaps some versions of mkfs can handle it, others
not. All I know for sure, is that with `sparse` enabled I got massive
filesystem corruption (though sane enough to be somewhat readable) on
the rootfs. Without it, it's clean.
Changelog: Title
Signed-off-by: Kristian Amlie <kristian.amlie@northern.tech>
- Issue: #MEN-3725
The following new config variables have been added which closely mirror those used in meta-mender
to give fine grained controll over partition device paths. If partuuid support is enabled then
these partition variables must be used as format doesnt fit device/number variables scheme.
If partuuid support is disabled then partition variables are optional liek in meta-mender.
MENDER_ENABLE_PARTUUID
MENDER_BOOT_PART
MENDER_ROOTFS_PART_A
MENDER_ROOTFS_PART_B
MENDER_DATA_PART
Example:
MENDER_BOOT_PART="/dev/disk/by-partuuid/26445670-f37c-408b-be2c-3ef419866620" #gpt
MENDER_BOOT_PART="/dev/disk/by-partuuid/26445670-01" #dos
MENDER_BOOT_PART="/dev/sda1" #partuuid support disabled
Changelog: Partition UUID support added for gpt/dos partition tables for deterministic booting
Signed-off-by: Dell Green <dell.green@ideaworks.co.uk>
The current code enumerates the partitions and uses the index of this enumeration to query partition parameters rather than the actual partition number that is reported and expected by partx. This might not work in certain cases.
Example:
/dev/sda1
/dev/sda2
/dev/sda5
The partition number of the last partition is 5 but current code will use 3. This PR fixes this so that the actual number reported by partx is used for all operations rather than the enumerated index.
ChangeLog: Fix error when partitions numbers are not sequential
Signed-off-by: Purushotham Nayak <purunaya@cisco.com>
With GPT there should be a backup partition table at the end of the disk. Before this change, mender-convert-package creates the output image file, writes the partition table, and when it writes the first partition data the file is truncated and the backup partition table is gone.
This change should not cause any worse performance, it leaves the backup partition table when using GPT partition scheme, and makes troubleshooting easier when looking at the partition table of the output diskimage.
Also worth noting, if the output diskimage is written to a disk that is larger than the diskimage, the backup partition table will end up in the wrong place. This can be fixed by running 'sgdisk -e <device>'. The device will still boot without the backup partition table, but it would be good to either document this or make it automatic as part of any "first boot" disk/partition operations.
Changelog: Title
Signed-off-by: Nate Baker <bakern@gmail.com>
Previously there was a mix between two, and four spaces.
This commits unifies all scripts to use two-spaces for indentation.
Changelog: None
Signed-off-by: Ole Petter <ole.orhagen@northern.tech>
The goals of the re-write was to achieve the following:
1. It should be easy to extend the tool to support other boards or distributions
2. We should not compile code in the tool (rely on binaries built elsewhere)
compiling code increases complexity, due to requirement of toolchains etc.
3. The tool shall not be designed around specific hardware/platform types
- This is the case today with the usage of --device-type flag
4 The tool should be to convert images without knowing anything about the hardware/platform
relates to above 3.
5. Configuration interface should be simplified
- command line flags -> configuration files
6. Platform specific code shall be provided trough “hooks”, and are not part of the “core” mender-convert code
7. It shall be easy to extend functionality
- support for rootfs overlay to inject user applications/configurations
- ability to override how the Mender Artifact is generated (to be able to sign and include state-scripts)
8. Code structure should be modular
- Eases Maintenance and possibility of making isolated changes
Changelog: Title
Signed-off-by: Mirza Krak <mirza.krak@northern.tech>