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.
When building a very minimal live system on a usb-hdd target, the generated
image is too small. A very minimal system is smaller than 50MB, and so this is
the same as DU_DIM for such a system. This is too small. Unconditionally adding
one solves the problem.
Marco sais, that flash devices often need a different erase size than mkfs.jffs2
defaults to. Hence, this parameter passes the blocksize to the mkfs.jffs2 call
through --eraseblock option.
By using APT_OPTIONS and APTITUDE_OPTIONS in config/common,
one can manipulate the default options wich is made to each
and every apt and aptitude call.
Since debootstrap 1.0.8 there's a variant called minbase that installs
just essentials packages so base's size is greatly reduced. Use this
variant when producing reduced images.
New debootstrap has change the scripts to /usr/share since they're
architecture independent code. The support for it has been added
however it fallback to /usr/lib to keep backward compatibility.
Some non-local hooks clean the chroot too much, resulting in the
local hooks having to perform identical clean-up tasks (for example,
downloading a package).
to succeed, otherwise the second one is not expanded and "*.deb" (for
example) is used literally.
This patch expands (haha) each "for" loop into it's own.
added a new syslinux menu splash screen, I'm not an artist
but I think it is better than the generic splash which was
already included. Also added the svg file if anyone wants
to make any changes.
change MILISECONDS to SECONDS. Syslinux actually uses
tenths of seconds not milliseconds, but it seems
unnecessary to expose this to the user. Fix templates
to only specify the timeout once.
At the moment this only works with the root volume
on nfs as well. If we add a switch to configure the
network early in the boot process then this option
could be made available for other root mediums. This
option works reliably on the latest kernel 2.6.23.1
On earlier kernels I experienced frequent oopses.
To make the root filesystem as small as possible, it can be useful to exclude
certain files or directories. This is now possible by using the file
config/binary_rootfs/exclude, which contains a whitespace separated list of
file paths to exclude; wildcards are allowed. These paths are removed from the
chroot copy before the root filesystem is built.
When an ISO is created with the kernel image file name ending in ".img", the
ISO will not boot. In Qemu, the following error will be shown:
FATAL: Int13 eltorito call with AX=4C00
This means a non-implemented BIOS entry was called. In VMware and on real
hardware there is a different error message:
Cannot load disk image (invalid file)?
Removing the ".img" part of the file name solves this.
This option allows you to expose the root read only. Using
this option a person could upgrade the root filesystem or
add packages without requiring the user to reboot. The root
filesystem could be kept on an nfs volume or some other
persistent medium. Multiple clients could then be booted off
the same root fs. I used LTSP as a template to determine which
directories to make rw.
I did not realize that the syslinux boot methods,
iso, net, & hdd do not have feature parity for any
given version. As per old comments etch syslinux
v3.31 does not support sub directories on FAT images
share more code.
Change pxelinux directory setup to match debian installer
Change syslinux templates to use {$VAR} syntax so the
templates are easier to read
Remove etch support for syslinux, since INCLUDE syntax
is not available in etch syslinux v3.31
To properly support syslinux menus we need to provide fonts (specially
when using accents and like) and those files are usually found on
systems using multiple dots on their filenames (e.g iso01.f14.psf) and
then makes sense to support this by default or our users can spent _a
lot_ of time to sort this kind of problem out.
While doing it, the duplicated command line has been removed and code
changed to avoid this duplication making future changes need to touch
just one place.
To allow better customization of resulting system, support to include
and exclude packages of base system has been added. It has been
included for debootstrap and cdebootstrap helpers.
All files from syslinux-menu templates directory has been moved to
syslinux/menu. lh_binary_syslinux had some changes to work with that
but they were minimal ones.
A set of new options has been add to allow the syslinux vesa menu
support to be added. Those are the new options:
- LH_SYSLINUX_CFG: set custom syslinux configuration file
- LH_SYSLINUX_MENU: set syslinux menu
- LH_SYSLINUX_MENU_LIVE_ENTRY: set text to be used on the menu for
live entries
- LH_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY: set text to be used on the
menu for live entries (failsafe ones)
- LH_SYSLINUX_MENU_MEMTEST_ENTRY: set text to be used on the menu
for memtest entry