live-build/scripts/build/binary
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

109 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
## live-build(7) - System Build Scripts
## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
##
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
## This is free software, and you are welcome to redistribute it
## under certain conditions; see COPYING for details.
set -e
# Including common functions
[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh
# Automatically populating config tree
if [ -x auto/config ] && [ ! -e .build/config ]
then
Echo_message "Automatically populating config tree."
lb config
fi
# Setting static variables
DESCRIPTION="$(Echo 'build binary images')"
HELP=""
USAGE="${PROGRAM} [--force]"
Arguments "${@}"
# Reading configuration files
Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
# Setup cleanup function
Setup_cleanup
# Preparing root filesystem
lb binary_chroot ${@}
if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
then
# Configuring chroot
lb chroot_devpts install ${@}
lb chroot_proc install ${@}
lb chroot_selinuxfs install ${@}
lb chroot_sysfs install ${@}
lb chroot_hosts install ${@}
lb chroot_resolv install ${@}
lb chroot_hostname install ${@}
lb chroot_sysv-rc install ${@}
lb chroot_apt install-binary ${@}
lb chroot_archives chroot install ${@}
fi
# Building root filesystem
lb binary_rootfs ${@}
lb binary_manifest ${@}
# Prepare images
lb binary_package-lists ${@}
lb binary_linux-image ${@}
lb binary_memtest ${@}
lb binary_grub-legacy ${@}
lb binary_grub-pc ${@}
lb binary_loopback_cfg ${@}
lb binary_syslinux ${@}
lb binary_disk ${@}
lb binary_loadlin ${@}
lb binary_win32-loader ${@}
lb binary_includes ${@}
lb binary_hooks ${@}
lb binary_grub-efi ${@}
lb binary_checksums ${@}
if [ "${LB_BUILD_WITH_CHROOT}" != "true" ]
then
lb chroot_devpts install ${@}
lb chroot_proc install ${@}
lb chroot_selinuxfs install ${@}
lb chroot_sysfs install ${@}
fi
# Building images
lb binary_iso ${@}
lb binary_onie ${@}
lb binary_netboot ${@}
lb binary_tar ${@}
lb binary_hdd ${@}
lb binary_zsync ${@}
if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
then
# Deconfiguring chroot
rm -f .build/chroot_archives
lb chroot_apt remove ${@}
lb chroot_hostname remove ${@}
lb chroot_resolv remove ${@}
lb chroot_hosts remove ${@}
lb chroot_sysv-rc remove ${@}
lb chroot_dpkg remove ${@}
lb chroot_debianchroot remove ${@}
fi
lb chroot_sysfs remove ${@}
lb chroot_selinuxfs remove ${@}
lb chroot_proc remove ${@}
lb chroot_devpts remove ${@}