Merge "miniboot: Use release-specific initrd-mini and kickstart-override files"
This commit is contained in:
commit
34087435e0
@ -66,34 +66,34 @@ EFI_MOUNT=
|
||||
# Set this to a directory path containing kickstart *.cfg script(s) for testing:
|
||||
KICKSTART_OVERRIDE_DIR=${KICKSTART_OVERRIDE_DIR:-/var/miniboot/kickstart-override}
|
||||
|
||||
# Logging functions: logs are printed to stderr and logged to /var/log/user.log:
|
||||
function log_verbose {
|
||||
if [ -n "$VERBOSE" ]; then
|
||||
echo "$@"
|
||||
>&2 echo "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
function log_info {
|
||||
echo "$@"
|
||||
logger --id=$$ --stderr --priority user.info --tag "${LOG_TAG}" -- "$@"
|
||||
}
|
||||
|
||||
function log_error {
|
||||
logger -i -s -t "${LOG_TAG}" -- "ERROR: $*"
|
||||
logger --id=$$ --stderr --priority user.err --tag "${LOG_TAG}" -- "ERROR: $*"
|
||||
}
|
||||
|
||||
function log_warn {
|
||||
logger -i -s -t "${LOG_TAG}" -- "WARN: $*"
|
||||
logger --id=$$ --stderr --priority user.warning --tag "${LOG_TAG}" -- "WARN: $*"
|
||||
}
|
||||
|
||||
function fatal_error {
|
||||
logger -i -s -t "${LOG_TAG}" -- "FATAL: $*"
|
||||
logger --id=$$ --stderr --priority user.err --tag "${LOG_TAG}" -- "FATAL: $*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
function check_rc_exit {
|
||||
local rc=$1
|
||||
shift
|
||||
local rc=$1; shift
|
||||
if [ "$rc" -ne 0 ]; then
|
||||
logger -i -s -t "${LOG_TAG}" -- "FATAL: $* [exit: $rc]"
|
||||
logger --id=$$ --stderr --priority user.err --tag "${LOG_TAG}" -- "FATAL: $* [exit: $rc]"
|
||||
exit "$rc"
|
||||
fi
|
||||
}
|
||||
@ -119,12 +119,6 @@ function get_path_size {
|
||||
du -hs "$path" | awk '{print $1}'
|
||||
}
|
||||
|
||||
function log_path_size {
|
||||
local path=$1
|
||||
local msg=$2
|
||||
log_info "$msg: $(get_path_size "$path")"
|
||||
}
|
||||
|
||||
function usage {
|
||||
cat <<ENDUSAGE
|
||||
Description: Sets up a mini bootimage.iso that includes the minimum required to
|
||||
@ -462,7 +456,6 @@ function generate_boot_cfg {
|
||||
local BOOT_IP_ARG="${BOOT_IP},,${BOOT_GATEWAY},${BOOT_NETMASK},${BOOT_HOSTNAME},${BOOT_INTERFACE},off"
|
||||
|
||||
local PARAM_LIST=
|
||||
log_info "Generating miniboot.iso from params: ${PARAMS[*]}"
|
||||
# Set/update boot parameters
|
||||
if [ ${#PARAMS[@]} -gt 0 ]; then
|
||||
for p in "${PARAMS[@]}"; do
|
||||
@ -474,7 +467,7 @@ function generate_boot_cfg {
|
||||
else
|
||||
# Pull the boot device out of PARAMS and convert to instdev
|
||||
if [ "$param" = "boot_device" ]; then
|
||||
log_info "Setting instdev=$value from boot_device param"
|
||||
log_verbose "Setting instdev=$value from boot_device param"
|
||||
instdev=$value
|
||||
fi
|
||||
PARAM_LIST="${PARAM_LIST} ${param}=${value}"
|
||||
@ -629,14 +622,52 @@ function handle_delete {
|
||||
}
|
||||
|
||||
function create_miniboot_iso {
|
||||
log_info "Creating miniboot ISO"
|
||||
# Copy files for mini ISO build
|
||||
local iso_version
|
||||
iso_version=$(awk -F '=' '/VERSION/ { print $2; }' "${MNTDIR}/upgrades/version")
|
||||
log_info "Creating miniboot ISO for ${NODE_ID}, ISO version: ${iso_version}"
|
||||
|
||||
# Copy files for miniboot ISO build from the mounted INPUT_ISO
|
||||
rsync ${VERBOSE_RSYNC} -a \
|
||||
--exclude ostree_repo \
|
||||
--exclude pxeboot \
|
||||
"${MNTDIR}/" "${BUILDDIR}"
|
||||
check_rc_exit $? "Failed to rsync ISO from $MNTDIR to $BUILDDIR"
|
||||
|
||||
# Compare ISO version with our running version
|
||||
# shellcheck disable=SC1091
|
||||
source /etc/build.info
|
||||
if [ "${SW_VERSION}" != "${iso_version}" ]; then
|
||||
# Different software version from imported ISO
|
||||
log_info "Imported ISO is different version [SW_VERSION=${SW_VERSION}, ISO: ${iso_version}]."
|
||||
|
||||
# Use initrd-mini from the imported ISO by pulling it from the ISO ostree repo
|
||||
if [ -z "${INITRD_FILE}" ]; then
|
||||
log_info "Pulling initrd from ${MNTDIR}/ostree_repo"
|
||||
local initrd_mini_dir="/var/miniboot/${iso_version}"
|
||||
local initrd_mini_file="${initrd_mini_dir}/initrd-mini"
|
||||
|
||||
# Extract initrd-mini{,.sig} from ostree_repo as well
|
||||
if [ ! -d "${initrd_mini_dir}" ]; then
|
||||
mkdir "${initrd_mini_dir}" || log_error "mkdir ${initrd_mini_dir} failed"
|
||||
fi
|
||||
if [ ! -f "${initrd_mini_file}" ]; then
|
||||
ostree --repo="${MNTDIR}/ostree_repo" cat starlingx \
|
||||
"/var/miniboot/initrd-mini" > "${initrd_mini_file}"
|
||||
rc=$?
|
||||
if [ "$rc" -ne 0 ]; then
|
||||
log_fatal "failed to pull initrd-mini from ostree [rc=${rc}]"
|
||||
fi
|
||||
ostree --repo="${MNTDIR}/ostree_repo" cat starlingx \
|
||||
"/var/miniboot/initrd-mini.sig" > "${initrd_mini_file}.sig"
|
||||
rc=$?
|
||||
if [ "$rc" -ne 0 ]; then
|
||||
log_fatal "failed to pull initrd-mini.sig from ostree [rc=${rc}]"
|
||||
fi
|
||||
fi
|
||||
MINIBOOT_INITRD_FILE=${initrd_mini_file}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${REPACK}" = yes ]; then
|
||||
# Use default initrd-mini location if none specified
|
||||
# This picks up the initrd-mini file if it is available
|
||||
@ -660,31 +691,39 @@ function create_miniboot_iso {
|
||||
else
|
||||
log_warn "Could not find initrd file at ${INITRD_FILE} ...skipping initrd repack"
|
||||
fi
|
||||
log_info "Trimming miniboot ISO content"
|
||||
log_path_size "${BUILDDIR}" "Size of extracted miniboot before trim"
|
||||
log_verbose "Trimming miniboot ISO content"
|
||||
log_verbose "Size of extracted miniboot before trim: $(get_path_size "${BUILDDIR}")"
|
||||
# Remove unused kernel images:
|
||||
rm "${BUILDDIR}"/{bzImage,bzImage-rt}
|
||||
check_rc_exit $? "failed to trim miniboot iso files"
|
||||
rm "${BUILDDIR}"/{bzImage.sig,bzImage-rt.sig} || log_warn "failed to remove bzImage{-rt}.sig files"
|
||||
log_path_size "$BUILDDIR" "Size of extracted miniboot after trim"
|
||||
log_verbose "Size of extracted miniboot after trim: $(get_path_size "${BUILDDIR}")"
|
||||
fi
|
||||
|
||||
# For testing/debugging kickstart scripts. Support an override directory,
|
||||
# where any .cfg files are now copied into the /kickstart directory in the ISO
|
||||
# Any files in this override directory can replace the files from the ISO copied
|
||||
# from the rsync above.
|
||||
if [ -n "${KICKSTART_OVERRIDE_DIR}" ] \
|
||||
&& [ -d "${KICKSTART_OVERRIDE_DIR}" ] \
|
||||
&& [ "$(echo "${KICKSTART_OVERRIDE_DIR}/"*.cfg)" != "${KICKSTART_OVERRIDE_DIR}/*.cfg" ]; then
|
||||
log_info "Copying .cfg files from KICKSTART_OVERRIDE_DIR=${KICKSTART_OVERRIDE_DIR} to ${BUILDDIR}/kickstart"
|
||||
cp "${KICKSTART_OVERRIDE_DIR}/"*.cfg "${BUILDDIR}/kickstart"
|
||||
# First, test the location at /var/miniboot/kickstart-override/<version>. This location takes precedence.
|
||||
if [ -d "${KICKSTART_OVERRIDE_DIR}/${iso_version}" ] \
|
||||
&& [ "$(echo "${KICKSTART_OVERRIDE_DIR}/${iso_version}/"*.cfg)" != "${KICKSTART_OVERRIDE_DIR}/${iso_version}/*.cfg" ]; then
|
||||
log_info "Copying kickstart override files from ${KICKSTART_OVERRIDE_DIR}/${iso_version} to ${BUILDDIR}/kickstart"
|
||||
cp "${KICKSTART_OVERRIDE_DIR}/${iso_version}/"*.cfg "${BUILDDIR}/kickstart"
|
||||
elif [ "${SW_VERSION}" = "${iso_version}" ]; then
|
||||
# Support the original /var/miniboot/kickstart-override directory, but
|
||||
# only if the installed version is the same as the ISO version.
|
||||
if [ -d "${KICKSTART_OVERRIDE_DIR}" ] \
|
||||
&& [ "$(echo "${KICKSTART_OVERRIDE_DIR}/"*.cfg)" != "${KICKSTART_OVERRIDE_DIR}/*.cfg" ]; then
|
||||
log_info "Copying kickstart override files from ${KICKSTART_OVERRIDE_DIR} to ${BUILDDIR}/kickstart"
|
||||
cp "${KICKSTART_OVERRIDE_DIR}/"*.cfg "${BUILDDIR}/kickstart"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Setup syslinux and grub cfg files
|
||||
if [ -z "${EFI_MOUNT}" ]; then
|
||||
mount_efiboot_img "${BUILDDIR}"
|
||||
check_rc_exit $? "failed to mount EFI"
|
||||
log_info "Using EFI_MOUNT=${EFI_MOUNT}"
|
||||
log_verbose "Using EFI_MOUNT=${EFI_MOUNT}"
|
||||
fi
|
||||
generate_boot_cfg "${BUILDDIR}"
|
||||
unmount_efiboot_img
|
||||
@ -709,7 +748,7 @@ function create_miniboot_iso {
|
||||
check_rc_exit $? "isohybrid failed"
|
||||
# implantisomd5 "${OUTPUT_ISO}"
|
||||
# check_rc_exit $? "implantisomd5 failed"
|
||||
log_path_size "$OUTPUT_ISO" "Size of bootimage.iso"
|
||||
log_info "Size of ${OUTPUT_ISO}: $(get_path_size "${OUTPUT_ISO}")"
|
||||
}
|
||||
|
||||
#
|
||||
@ -721,6 +760,7 @@ function main {
|
||||
"$SCRIPTDIR/gen-bootloader-iso-centos.sh" "$@"
|
||||
exit $?
|
||||
fi
|
||||
log_info "Executing: $0 $*"
|
||||
parse_arguments "$@"
|
||||
initialize_and_lock
|
||||
mount_iso "${INPUT_ISO}" "${SCRATCH_DIR}"
|
||||
|
Loading…
x
Reference in New Issue
Block a user