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>
109 lines
2.5 KiB
Bash
Executable File
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 ${@}
|