Commit Graph

820 Commits

Author SHA1 Message Date
Lyndon Brown 2511fff259 don't unnecessarily convert exit codes to strings
Closes: #952861
2020-03-05 11:33:12 +00:00
Lyndon Brown 36a3ba7634 fix indentation
including:
 - spaces replaced with tabs for consistency
 - alignment of `;;` in some case statements changed for consistency

Gbp-Dch: Short
Closes: #952857
2020-03-05 11:29:01 +00:00
Raphaël Hertzog be5aaa0c51 Get rid of extraneous whitespace showing up in syslinux menu
The leading space ends up in the FLAVOUR substitution in live.cfg.
2020-01-22 15:00:06 +01:00
Raphaël Hertzog 44b9b0a650 Support --distribution-binary and --distribution-chroot
This makes it possible to build an image against a first distribution
(--distribution-chroot) and have the resulting image point to another
distribution (--distribution-binary). We can use this to build against a
snapshot and have the result use the original distribution that was
snapshotted.

Closes: #888507
2019-12-19 18:18:44 +01:00
Raphaël Hertzog bca7af4ecb installer_debian-installer: don't mess with /var/lib/dpkg/status
Use a similar trick as for chroot_live-packages.

Relates to #944983.
2019-12-19 16:53:30 +01:00
Raphaël Hertzog 15c46fa152 Set default distribution to buster
Closes: #934495
Thanks: Алексей Шилин
2019-12-19 16:43:51 +01:00
Raphaël Hertzog 0647e985fa chroot_live-packages: use dpkg-query to see if a package is installed
Closes: #944983
2019-12-19 16:21:58 +01:00
Roland Clobus 56784ca1c0 Reenabled the command line option for colored messages for all scripts. The functionality was added 2008-11-01, but was not really active. 2019-06-03 10:48:58 +00:00
Roland Clobus c035b3f106
Updated URL in the LB_ISO_PUBLISHER field. 2019-04-17 21:29:34 +02:00
Roland Clobus f460533ca1
Updated URL in the LB_ISO_PREPARER field. 2019-04-17 21:27:04 +02:00
Roland Clobus 91da0772fc
Updated URL for reporting bugs. 2019-04-17 21:05:30 +02:00
Adrian Gibanel Lopez 80aa5ab611 Fixed foreign architecture package support to linux kernel flavours
Before Stretch there was an special amd64 kernel in the i386 arch repo.
So if you wanted to install an amd64 kernel alongside an i386 system
you did not need an additional arch repo.

Debian added multiarch support. That way you can install library packages
from multiple architectures on the same machine.

So there is no longer a need for having an amd64 kernel in i386 arch repo.
You can add an amd64 arch repo to an i386 arch system and fetch the amd64
kernel from the am64 arch repo.

live-build can be setup to use several linux kernel flavours in a single
image.

So in the days previous to this patch you could issue:
lb config --linux-flavours "486 amd64"
to use both 486 and amd64 kernel flavours.

Adding additional arch support to linux flavours poses two problems:

* Packages need to have its arch suffix (e.g. amd64:amd64).
If the suffix is not there apt-get insists on search amd64 kernel
package on i386 arch repo and, of course, fails to find it.

* The rest of the code which handles labels (bootloader config files)
or installed filenames (kernel images themselves) do not use the arch suffix.

This patch adds foreign architecture package support to
linux kernel flavours having taken those problems into account.

Practical example usage: i386 system and extra amd64 kernel.

First add amd64 foreign architecture in your i386 system
thanks to:

dpkg --add-architecture amd64
apt-get update

.

Finally enable amd64 kernel from amd64 arch alongside the
i386 system's 686 kernel thanks to:

lb config --architectures i386 --linux-flavours "686 amd64:amd64"
2019-03-14 23:06:31 +01:00
Hideki Yamane 2fa258cca2 use deb.debian.org as default
replace deprecated httpredir.debian.org to deb.debian.org and use
it as default mirror since it is appropriate for users
2018-10-13 12:39:42 +09:00
Luca Boccassi 08dd0b90db Print an error and exit if a host package (dependency) is missing.
Check_package will just add a missing dependency to the LB_PACKAGES
todo list if it doesn't find it, when build-with-chroot is true, even if
the check was not for the chroot.
Instead error out if the check is not done for the chroot, e.g.
Check_package host /bin/foo foo
2018-04-05 16:24:36 +01:00
Luca Boccassi 46c9596926 Add options to build ONIE images
Open Network Install Environment is an open image format used by
networking vendor to ship a standardised image for networking white
box switches.

ONIE hardware takes this image at boot and a script to chain load
into the final environment via kexec. We can support Debian and
derivatives on such systems by packing an ISO which then gets
unpacked, kexec'ed and live-booted.

A base ONIE system can be tested in QEMU by building a VM following
these instrunctions:

https://github.com/opencomputeproject/onie/blob/master/machine/kvm_x86_64/INSTALL

Once built, boot onie-recovery-x86_64-kvm_x86_64-r0.iso in QEMU/libvirt
and on the console there will be the terminal prompt. Check the IP
assigned by libvirt and then scp the live image (ssh access is enabled
as root without password...). Then the .bin can be booted with:
 ONIE-RECOVERY:/ # onie-nos-install /tmp/live.hybrid.iso-ONIE.bin

The implementation is inspired by ONIE's own scripts that can be found
at:
https://github.com/opencomputeproject/onie/blob/master/contrib/debian-iso/cook-bits.sh

A new option, --onie (false by default) can be set to true to enable
building this new format in addition to an ISO.
An additional option, --onie-kernel-cmdline can be used to specify
additional options that the ONIE system should use when kexec'ing the
final image.
Note that only iso or hybrid-iso formats are supported.

For more information about the ONIE ecosystem see:
http://onie.org

Signed-off-by: Erik Ziegenbalg <eziegenb@Brocade.com>
Signed-off-by: Luca Boccassi <bluca@debian.org>
2018-03-22 16:14:01 +00:00
Luca Boccassi 035518ff69 UEFI: add support for Secure Boot on amd64 and arm64
Support for UEFI Secure Boot is modelled after how it currently works
in Ubuntu and on how it is going to work on Debian.
A minimal bootloader, shim, is used as the first-stage and it then
loads grub. Both have to be signed.
shim-signed is already available in Debian so the filenames are
already established, and the grub2 repository and packaging is common
between the 2 distros so we can already be reasonably sure of what it
is going to be.
So if both are available, copy /usr/lib/shim/shim[x64|aa64].efi.signed
as boot[x64|aa64].efi so that UEFI loads it first, and copy
/usr/lib/grub/[x86_64|arm64]-efi-signed/grub[x64|aa64].efi.signed as
grub[x64|aa64].efi.
This grub2 EFI monolithic image is currently hard-coded in grub2's
repository to look for a config file in efi/debian, so make a copy
of the previously added minimal grub.cfg that loads the real one in
that directory in both the fat32 and ISO 9660 partitions.

The new option --uefi-secure-boot can be set to auto (default,
enable or disable.
In auto, the lack of the signed EFI binaries is intentionally left as a
soft failure - live-build will simply fallback to using the locally
generated non-signed grub2 monolithic EFI binary as the only
bootloader. Given the difficulties surrounding the Secure Boot
signing infrastructure this approach gives the most flexibility and
makes sure things will "just work" once the packages are available,
without the need to change anything in the configuration.
This will also greatly help downstream distributions and users who
want to do self-signing.
The enable or disable options work as expected.

Closes: #821084
2018-03-09 20:57:54 +00:00
Raphaël Hertzog 2f54fcf3d7 Replace "kirkwood" and "orion5x" armel flavors with the new "marvell" one
As done by the linux source package since its version 4.4.
2017-09-18 18:00:20 +02:00
Matthijs Kooijman 5ca1ded228 Error out when needed packages are missing on the host
Previously, Check_package would only show an error when host packages
are missing on a non-apt system. On apt system, the packages would be
added to _LB_PACKAGES, which causes them to be installed in the chroot,
not in the host (or not at all if Install_package is not called). This
behaviour could break the build.

This applies to either packages that must be present in the host (as
checked with `Check_package host ...`), as well as packages that can be
either in the chroot or host (as checked with `Check_package chroot`)
when LB_BUILD_WITH_CHROOT=false.
2017-09-01 10:22:02 +02:00
Matthijs Kooijman 4c229d9449 Pass --partscan to losetup
Recent versions of Linux, parted or some other bit of software cause
partition devices, like /dev/loop0p1 to be created when running parted
mkpart. However, these devices are not cleaned up when running
losetup -d to remove /dev/loop0 later, so they linger around and confuse
mkfs (which refuses to make a filesystem, thinking there are partitions):

	mkfs.fat 4.1 (2017-01-24)
	mkfs.vfat: Partitions or virtual mappings on device '/dev/loop0', not making filesystem (use -I to override)

To prevent this behaviour, pass --partscan to losetup when adding a new
partition, to clean up any lingering partitions. It seems losetup does not
accept --partscan when deleting a loop device, to clean up at that point, but
since binary_hdd mounts the partition last, there should not be any lingering
partition devices after live-build is done.

The --partscan option is available since util-linux 2.21 (released in 2012), so
it should be fairly safe to pass it unconditionally.
2017-09-01 10:07:00 +02:00
Raphaël Hertzog c5a334deb8 Update PREPARER data for consistency 2017-08-29 15:06:35 +02:00
Raphaël Hertzog 3f909bf486 Drop all references to live-systems.org and update copyright file
Also fix the version string in the manual pages.

Closes: #859290
2017-08-29 14:12:33 +02:00
Raphaël Hertzog d98f95bbbe Drop the versatile kernel flavour on armel. It's no longer built since Linux 4.9. 2017-02-13 16:52:10 +01:00
Raphaël Hertzog 61b92c654e Drop check on configuration version
The date based versioning scheme no longer allows such a check. And we
don't intend to break backwards compatibility for now.
2016-12-02 23:05:05 +01:00
Raphaël Hertzog 7ad6c408e5 Default for LB_UNION_FILESYSTEM is now "overlay" just like in live-boot. 2016-12-02 15:10:19 +01:00
Raphaël Hertzog b91b7de87a Fix permission on functions/bootloaders.sh 2016-11-28 23:15:38 +01:00
Raphaël Hertzog 02d933fc17 Fix Check_installed function when checking against host
Thanks to jnqnfe for the report.

Closes: #774807
2016-11-28 22:50:46 +01:00
Raphaël Hertzog 4b28b409a6 Export SOURCE_DATE_EPOCH when running chroot commands
Thanks to Chris Lamb <lamby@debian.org> for the patch.

Closes: #832998
2016-11-28 20:58:19 +01:00
Raphaël Hertzog b8f55caa14 Fix behaviour of (undocumented) "#nif" conditional test
Thanks to Erik Cumps <erik.cumps@esaturnus.com> for the patch.

Closes: #801379
2016-11-28 20:58:19 +01:00
Adrian Gibanel Lopez f811656150 Make: syslinux,grub-efi the default bootloaders because
UEFI is getting widely adopted but BIOS support is still
needed.
2016-07-31 15:09:13 +02:00
Adrian Gibanel Lopez ee9a6de2cc defaults.sh LB_BOOTLOADER updated to be: LB_BOOTLOADERS in incompatible warning 2016-07-31 15:09:13 +02:00
Adrian Gibanel Lopez 9d1a983cc8 Added new multi bootloader helper functions
* Added: functions/bootloaders.sh . This file adds bootloader functions that are heavily used in efi scenarios where a bootloader can act as a first or an extra bootloader.

Since the introduction of the new switch:

--bootloaders

you can setup it like this:

--bootloaders=syslinux,grub-efi

.

This means that syslinux is the first bootloader and grub-efi is the extra bootloader.

* Added new bootloader functions: Check_Non_First_Bootloader and Check_Non_Extra_Bootloader.

These functions let each one of the bootloaders abort the build because
they cannot perform a role either as a first bootloader or as an extra bootloader.

* Added bootloader functions: Check_First_Bootloader_Role, Check_Extra_Bootloader_Role and Check_Any_Bootloader_Role

These functions let bootloaders to force their default role in a single line.

At the same time many binary bootloaders were rewritten to make use of the new bootloader role functions explained above.

These roles were enforced:

binary_grub-legacy : First bootloader
binary_grub-pc : Either first or extra bootloader
binary_syslinux : Either first or extra bootloader

If a bootloader is tried to be used in a role that it's not meant to be used then the build fails because that might lead to a non-bootable system.
2016-07-31 15:08:11 +02:00
Adrian Gibanel Lopez 01a9df8ce3 functions/default.sh : Define LB_PRIMARY_BOOTLOADER at the Set_defaults function which it's the right place where to do it 2016-07-31 14:59:33 +02:00
Kristian Klausen 25b15bce09 Include ext{3,4} journal size when calculating image size
Fix #801712
2016-04-16 22:18:22 +02:00
Raphaël Hertzog 7f4e2654e4 Drop ixp4xx from available armel flavors
It's gone from Debian unstable/testing since Linux 3.17.

Sponsored-By: Offensive Security
2016-01-05 18:10:00 +01:00
Ben Armstrong 1f8975cc60 Remove 586 flavour for i386 architecture. (Closes: #807972) 2015-12-15 14:01:29 +00:00
Adrian Gibanel Lopez d515ae5684 Multi bootloader support
Note: OLDIFS use makes IFS to be reset to "" instead to it being unset.
Either we need to detect if old IFS was unset to unset it
or we need a proper way of setting it as a local variable.
Even more IFS it's not currently used in
Check_package (which it's called from: binary_hdd).
we should have a clean way of resetting/unsetting IFS when calling Check_package.

The other approach it's to explicitly define IFS with its default value in the
places inside live-build code where we implicitly suppose that it's going to have
its default value.
2015-08-29 23:56:41 +02:00
Daniel Baumann 2dcb4dc06e Updating stat calls to also give the right result in container setups, thanks to Kristian Klausen <klausenbusk@hotmail.com> (Closes: #789300). 2015-08-10 21:45:00 +02:00
Daniel Baumann 421419c7fc Getting rid of hard-coded release numbers and using /etc/os-release instead (Closes: #790860).
Unfortunately VERSION_ID on testing/unstable is currently not included
in /etc/os-release, see #795124.
2015-08-10 21:31:21 +02:00
Daniel Baumann 9280926b11 Switching from http.debian.net to httpredir.debian.org as default binary mirror. 2015-05-10 19:10:28 +02:00
Daniel Baumann 279a149d8a Dropping automagics for ubuntu.
Future live-build versions will still allow to use casper,
but its configuration will be done differently by a custom
config tree, rather than embedded and maintenance intensive
code in live-build itself.
2015-05-03 16:03:10 +02:00
Daniel Baumann f93e83e351 Dropping automagics for casper.
Future live-build versions will still allow to use casper,
but its configuration will be done differently by hooks
in the config tree, rather than embedded and maintenance intensive
code in live-build itself.
2015-05-03 15:50:03 +02:00
Daniel Baumann 7e633e77f2 Moving grub and grub2 templates into shared bootloader config directory. 2015-04-29 07:52:56 +02:00
Daniel Baumann 4520daa5b9 Setting progress-linux default distribution to cairon. 2015-04-28 07:58:16 +02:00
Daniel Baumann ca9cfd8318 Setting debian default distribution to stretch. 2015-04-28 07:58:16 +02:00
Daniel Reichelt 055517567a Don't truncate files outside the build chroot.
The list of files passed to Truncate() might contain absolute symlinks
pointing to files outside the chroot, which previously destroyed files on
the build host.
2015-04-26 20:20:24 +02:00
Daniel Baumann 151e21291c Making functions/chroot_bind_path.sh executable within the source tree (Closes: #777096). 2015-02-07 06:46:45 +01:00
Fathi Boudra 9d95afb9f6 Adding linux flavours for arm64/armhf architectures.
Signed-off-by: Fathi Boudra <fabo@debian.org>
2015-02-04 10:16:02 +02:00
Daniel Baumann e51315ae1e Switching to default to linux-image-586 on i386. 2015-01-26 06:30:49 +01:00
Daniel Baumann 19b372223b Correcting packagelist parsing when packages are listed with notation of a specific version (Closes: #775832). 2015-01-25 12:23:13 +01:00
Daniel Baumann 1f0a9d9ee0 Enabling security and release updates for jessie. 2015-01-25 10:04:13 +01:00