mirror of
https://github.com/rancher/os.git
synced 2025-07-05 19:16:13 +00:00
72 lines
1.6 KiB
Bash
72 lines
1.6 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# How to use:
|
||
|
# make shell-bind
|
||
|
# cd scripts/tools/
|
||
|
# wget https://link/rancheros-xxx.iso
|
||
|
# wget http://link/custom.crt
|
||
|
# ./flush_crt_iso.sh --iso rancheros-vmware-autoformat.iso --cert custom.crt
|
||
|
# exit
|
||
|
# ls ./build/
|
||
|
#
|
||
|
|
||
|
set -ex
|
||
|
|
||
|
BASE_DIR=/tmp
|
||
|
ORIGIN_DIR=/tmp/origin
|
||
|
NEW_DIR=/tmp/new
|
||
|
WORK_DIR=/tmp/work
|
||
|
|
||
|
mkdir -p ${ORIGIN_DIR} ${NEW_DIR} ${WORK_DIR} ${DAPPER_SOURCE}/build
|
||
|
|
||
|
while [ "$#" -gt 0 ]; do
|
||
|
case $1 in
|
||
|
--iso)
|
||
|
shift 1
|
||
|
ISO_FILE=$(readlink -f $1)
|
||
|
;;
|
||
|
--cert)
|
||
|
shift 1
|
||
|
CERT_FILE=$(readlink -f $1)
|
||
|
;;
|
||
|
*)
|
||
|
break
|
||
|
;;
|
||
|
esac
|
||
|
shift 1
|
||
|
done
|
||
|
|
||
|
# copy the iso content
|
||
|
mount -t iso9660 -o loop ${ISO_FILE} ${ORIGIN_DIR}
|
||
|
cp -rf ${ORIGIN_DIR}/* ${NEW_DIR}
|
||
|
|
||
|
# copy the initrd file
|
||
|
INITRD_NAME=$(basename ${ORIGIN_DIR}/boot/initrd-*)
|
||
|
cp ${ORIGIN_DIR}/boot/initrd-* ${WORK_DIR}/
|
||
|
|
||
|
# 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 > ${NEW_DIR}/boot/${INITRD_NAME}
|
||
|
popd
|
||
|
|
||
|
pushd ${NEW_DIR}
|
||
|
xorriso \
|
||
|
-as mkisofs \
|
||
|
-l -J -R -V "${DISTRIB_ID}" \
|
||
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
||
|
-b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
|
||
|
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
|
||
|
-o $(basename ${ISO_FILE}) .
|
||
|
popd
|
||
|
|
||
|
# copy out
|
||
|
umount ${ORIGIN_DIR}
|
||
|
cp ${NEW_DIR}/$(basename ${ISO_FILE}) ${DAPPER_SOURCE}/build/
|