mirror of
https://github.com/rancher/os.git
synced 2025-04-28 03:20:50 +00:00
86 lines
1.8 KiB
Bash
86 lines
1.8 KiB
Bash
#!/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}/
|