1
0
mirror of https://github.com/rancher/os.git synced 2025-04-27 11:10:56 +00:00

Create flush_crt_nbd.sh

Same as flush_crt_iso.sh but for qcow2/3 image files
This commit is contained in:
Jérôme Revillard 2020-01-20 12:08:01 +01:00 committed by niusmallnan
parent 7c84c5f7e4
commit 397977b0af

View File

@ -0,0 +1,85 @@
#!/bin/bash
# How to use:
# make shell-bind
# cd scripts/tools/
# wget https://link/rancheros-xxx.img
# wget http://link/custom.crt
#
# ./flush_crt_nbd.sh --img rancheros-openstack.img --cert custom.crt
# # or
# ./flush_crt_nbd.sh --initrd initrd-xxxx --cert custom.crt
#
# exit
# ls ./build/
#
set -ex
BASE_DIR=/tmp
ORIGIN_DIR=/tmp/origin
WORK_DIR=/tmp/work
mkdir -p ${ORIGIN_DIR} ${WORK_DIR} ${DAPPER_SOURCE}/build
while [ "$#" -gt 0 ]; do
case $1 in
--initrd)
shift 1
INITRD_FILE=$(readlink -f $1)
;;
--img)
shift 1
IMG_FILE=$(readlink -f $1)
;;
--cert)
shift 1
CERT_FILE=$(readlink -f $1)
;;
*)
break
;;
esac
shift 1
done
function rebuild_initrd() {
local initrd_name=$1
local output_dir=$2
# update and rebuild the initrd
pushd ${WORK_DIR}
mv initrd-* ${initrd_name}.gz
gzip -d ${initrd_name}.gz
cpio -i -F ${initrd_name}
rm -f ${initrd_name}
cat ${CERT_FILE} >> ${WORK_DIR}/usr/etc/ssl/certs/ca-certificates.crt
find | cpio -H newc -o | gzip -9 > ${output_dir}/${initrd_name}
popd
}
if [ ! -z ${INITRD_FILE} ]; then
cp ${INITRD_FILE} ${WORK_DIR}/
rebuild_initrd $(basename ${INITRD_FILE}) ${DAPPER_SOURCE}/build/
exit 0
fi
# copy the iso content
cp -a ${IMG_FILE} ${IMG_FILE}_new
qemu-nbd -c /dev/nbd0 --partition=1 ${IMG_FILE}_new
mount /dev/nbd0 ${ORIGIN_DIR}
# copy the initrd file
INITRD_NAME=$(basename ${ORIGIN_DIR}/boot/initrd-*)
cp ${ORIGIN_DIR}/boot/initrd-* ${WORK_DIR}/
rebuild_initrd ${INITRD_NAME} ${ORIGIN_DIR}/boot
# copy out
umount ${ORIGIN_DIR}
qemu-nbd -d /dev/nbd0
mv ${IMG_FILE}_new ${DAPPER_SOURCE}/build/$(basename ${IMG_FILE})
# cleanup
rm -rf ${WORK_DIR}/