New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reproducible image building #498
Conversation
This include .buildinfo, .treeinfo and .discinfo. Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Even when FS do not support owner/modes, preserve timestamps. Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
By default mkfs.mksdos choose volume id based on current time. If SOURCE_DATE_EPOCH is set, use that instead. Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Some files are created in non-reproducible way, including including random data explicitly (/etc/machine-id), timestamps (fontconfig cache, ldconfig aux-cache, certs cache), or entries in random order (groups, systemd catalog, package list). Fix this by either making the files reproducible, or removing them.
Pull Request Test Coverage Report for Build 728
|
|
Thanks for posting these, I'll try to take a look at them sometime this week. |
|
Overall this looks pretty simple. ISTR there was a good reason we didn't switch to plain squashfs for the install.img but cannot remember exactly why. @wgwoods may remember though. |
|
Apart from making the build reproducible, this also reduce size and complexity of the image. Not requiring |
Yeah, I think the others can be taken as-is so that would be good. |
Correct, the problem with bare squashfs images was that anaconda still needs its root filesystem to be writeable (for I've always thought the ext4-inside-squashfs image payload was needlessly complex and would be happy to see a simpler solution. |
da1da06
to
81d0744
Compare
Done: #507 |
As part of Reproducible Builds effort, make the images produced by lorax reproducible, given the same set of inputs (packages, configuration, SOURCE_DATE_EPOCH variable).
See individual commits for explanation of specific changes.
The last commit require matching anaconda change, as it change image layout. It should be possible to make anaconda support both old and new format. Is there any actual reason why ext4 image is packaged into squashfs instead of using squashfs directly? I imagine historically it could be lack of overlayfs in vanilla kernel and the need to use dm-snapshot. But it is no longer the case. Anything else?
One thing not solved here is
efiboot.img, because I didn't managed to reproducibly build FAT filesystem. Even after eliminating obvious metadata differences (volume ID, file mtimes, files order), there are still some differences near the end of the image, which I didn't identified.