Users who are modifying initramfs scripts via chroot_local-includes
should really run update-initramfs themselves - this wasn't possible until
fairly recently due to re-ordering of calls from lh_chroot.
This mostly reverts my most recent chroot_local-packages/preferences commit
as I found problems when re-running parts of the build: as the pinning
stanza was removed, calls to "apt-get upgrade" from within live-helper
would remove replacement packages placed in chroot_local-packages.
This isn't 100% foolproof - running apt-get upgrade on the binary image may
still attempt to remove replacement packages (heavy users of this should
probably be using their own repo for this sort of thing anyway).
This reverts config/chroot_local-packages to almost original semantics by
giving any package in chroot_local-packages a priority of 1001, allowing
it to "downgrade" packages and generally override the standard APT sources.
I think this follows the idea of this directory more and is likely to be
more useful with this setup - rebuilding a package simply to bump a version
number or keeping a custom apt_preferences(5) file around kinda sucks,
especially as it is often used as a temporary workaround.
This ensures that incompatible configurations that are created by editing
files in config/ are detected when building the image via lh_build.
This also has the side-effect of ensuring that configuration warnings (if
any) appear for live-magic.
When wget 404's, an target file is created - this poisons the cache as the
file is apparently downloaded but in actuality is simply empty. We fix this
by unconditionally deleting the cache file if wget fails and emitting an
error.
Without this, a modified version of the (say) "gnome" list inside
chroot_package-lists would be completely ignored when installing binary
packagelists.
This patch installs (almost) all chroot packages by queueing the package
names into a single file and then installing that. It depends on my
previous patch to install local packages by using an APT mirror.
This speeds up image build causes even greater speedups once more packages
adopt triggers.
(Packages installed by debconf preseeding are not touched, nor are packages
installed by tasks.)
This patch modifies chroot_sources to build a small APT repo of the
local-packages and use that for local package installation instead of
"dpkg -i". This has a few advantages:
* Removes the true ugliness that is "dpkg -i *.deb && apt-get install -f".
This not only is slow and brittle, it causes scary "dpkg dependency
error" messages to appear in build logs.
* We can (ie. not implemented here) move to installing all the packages
from:
- lh_chroot_packages (ie. ${LH_PACKAGES})
- lh_chroot_local-packages (ie. config/chroot_local-packages/*.deb)
- lh_chroot_local-packageslists
- lh_chroot_packages-lists
- lh_chroot_linux-image
.. in one shot. This would primarily improve speed as we would not keep
invoking ${LH_APT}, and package installations can share triggers and
suchlike -- installing a custom live-initramfs via local packages
currently costs an additional "update-initramfs -u" call.
It would also fix a number of obscure dependency cases, such as the one
documented in #475739, and--if the user is using aptitude--may even
result in better resolution choices.
* Removes some messy and somewhat brittle code in lh_chroot_linux-image
that edgecases a local live-initramfs.
The disadvantages are:
* If local packages are being used and we are building in a chroot, we
must refresh the sources list and rebuild the repo before building the
binary images. (However, before this patch, we had to do this anyway if
the binary mirrors were different from the chroot ones.)
* We must add a little hack to the minimal hook to detect whether we are
using local packages and not remove apt-utils (which creates the
repository in lh_chroot_sources) if that is the case -- we cannot simply
use "Install_package" inside lh_chroot_sources as we are not guaranteed
to have working APT data because the minimal hook deliberately removes
them!
This means that /isolinux/isolinux.bin and /boot/grub/stage2_eltorito are
not included in md5sum files anymore as intended. It also prevents a
strange and verbose warning from appearing in build logs.
The loop-aes-utils sets a umask in its update-initramfs configuration,
causing initrds to have "0600" permissions which causes boot failures
when offering the files over netboot or similar.
The justification given by loop-aes is that, as it supports encrypting
against embedded GPG keyrings, the keys would be compromised if the files
were group- or world- readable. However, as live-helper does not support
this feature, it is safe to simply correct the permissions.
mksquashfs has a nasty habit of segfaulting when creating an image where
an image already exists. This can happen, for example, if you are
performing multiple runs of lh_binary and the build breaks for some reason.
This is almost certainly a bug in mksquashfs; I will look into finding a
suitable testcase.
This patch repacks the initrd when using the d-i netboot images in order
to incorporate a preseed.cfg if it exists. Before this patch, preseeding
of d-i netboot images was not possible.
Repacking the initrd has the additional advantage of being able to preseed
the first few questions of the installation process.
The code which determined whether to use the netboot d-i images was the
inverse of the code which determined whether to create a local package
pool: this patch merges the two.
This patch additionally ensures that setting "businesscard" whilst building
an ISO image will install the d-i netboot images; this was causing d-i
failures when it couldn't find its (non-existent) package pool.
We must use "aptitude install <pkgname>" to install dependencies of a
dpkg-installed <pkgname>, or aptitude's resolver will remove it. apt-get
does not have this "feature".
This was causing a problem when using a custom versions of live-initramfs
as they would be removed, causing a boot failure.
Using --no-clobber at the same time as -O<file> results in <file> being
created with no contents, which was resulting in (broken) zero-byte d-i
kernels and initrds.
The patch is simple -- simply remove --no-clobber: wget -O<file> <url> will always download <url> to <file>, regardless of how
many times it is run.
This patch also modifies the configuration logic to ensure that setting
LH_DEBIAN_INSTALLER="enabled" whilst creating a netboot image will install
the netboot variety of d-i.
This patch alters the syslinux labels to follow the "expert" and
"expertgui" style in favour of "TextExpert" and "GUIExpert".
This makes the names match Live Helper's syslinux templates, as well as the
more typical d-i installations and numerious sources that claim that one
should "just type 'expert' at the syslinux prompt", etc.