mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-05-13 16:11:37 +02:00
- commit https://git.ipfire.org/?p=ipfire-2.x.git;a=commit;h=fbd0608c2cb5372fff7857065ec7e605b1bf9cf7 aligned the ISO file name to the image file name. This change also needed to be added to backupiso as the filename is used to download the iso from the IPFire server when creating an ISO backup. Fixes: Bug#12932 Suggested-by: Matthias Fischer <matthias.fischer@ipfire.org> Tested-by: Adolf Belka <adolf.belka@ipfire.org> Signed-off-by: Adolf Belka <adolf.belka@ipfire.org> Reviewed-by: Bernhard Bitsch <bbitsch@ipfire.org>
126 lines
3.7 KiB
Bash
126 lines
3.7 KiB
Bash
#!/bin/sh
|
|
###############################################################################
|
|
# #
|
|
# IPFire.org - A linux based firewall #
|
|
# Copyright (C) 2007-2022 IPFire Team <info@ipfire.org> #
|
|
# #
|
|
# This program is free software: you can redistribute it and/or modify #
|
|
# it under the terms of the GNU General Public License as published by #
|
|
# the Free Software Foundation, either version 3 of the License, or #
|
|
# (at your option) any later version. #
|
|
# #
|
|
# This program is distributed in the hope that it will be useful, #
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
# GNU General Public License for more details. #
|
|
# #
|
|
# You should have received a copy of the GNU General Public License #
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
|
# #
|
|
###############################################################################
|
|
|
|
# FIXME: edit this lines before release
|
|
IPFVER=2.27
|
|
COREVER=$(cat /opt/pakfire/db/core/mine)
|
|
|
|
arch=$(uname -m)
|
|
|
|
case "${arch}" in
|
|
aarch64|x86_64)
|
|
;;
|
|
*)
|
|
echo "Arch is not supported" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
URL="https://downloads.ipfire.org/releases/ipfire-2.x/$IPFVER-core$COREVER/"
|
|
ISO="ipfire-$IPFVER-core$COREVER-$arch.iso"
|
|
|
|
makeiso() {
|
|
local dir="${1}"
|
|
local output="${2}"
|
|
|
|
local args=
|
|
|
|
# Add EFI options when EFI image is present
|
|
if [ -e "${dir}/boot/isolinux/efiboot.img" ]; then
|
|
args="${args} -eltorito-alt-boot -e boot/isolinux/efiboot.img -no-emul-boot"
|
|
fi
|
|
|
|
# Compose ISO
|
|
mkisofs -J -r -V "IPFire ${IPFVER} ${arch}" \
|
|
-b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
-c boot/isolinux/boot.catalog \
|
|
${args} ${dir} > ${output}
|
|
|
|
# Add DOS paritition table
|
|
if [ -e "${dir}/boot/isolinux/efiboot.img" ]; then
|
|
isohybrid --uefi ${output}
|
|
else
|
|
isohybrid ${output}
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
if [ -z $1 ]; then
|
|
echo usage: $0 backup-file
|
|
exit
|
|
fi
|
|
|
|
TS=$1
|
|
|
|
mkdir -p /var/tmp/backupiso
|
|
cd /var/tmp/backupiso
|
|
|
|
if [ ! -f ${ISO} ]
|
|
then
|
|
echo "Fetching ${URL}${ISO}"
|
|
wget --quiet -c ${URL}${ISO}
|
|
fi
|
|
|
|
echo "Fetching ${URL}${ISO}.b2"
|
|
wget --quiet -O ${ISO}.b2 ${URL}${ISO}.b2
|
|
|
|
echo "Checking BLAKE2 checksum of ${ISO}"
|
|
b2sum --status -c ${ISO}.b2
|
|
if [ $? -eq 0 ] || [ $? -eq 24 ]
|
|
then
|
|
echo "BLAKE2 checksum is OK"
|
|
else
|
|
echo "BLAKE2 checksum mismatch"
|
|
echo "Fetching again ${URL}${ISO}"
|
|
wget --quiet -O ${ISO} ${URL}${ISO}
|
|
echo "Checking BLAKE2 checksum of ${ISO} again"
|
|
b2sum --status -c ${ISO}.b2
|
|
if [ $? -eq 0 ] || [ $? -eq 24 ]
|
|
then
|
|
echo "BLAKE2 checksum is OK"
|
|
else
|
|
echo "BLAKE2 checksum mismatch"
|
|
echo "aborting backup because BLAKE2 checksum mismatch"
|
|
exit 1
|
|
fi
|
|
fi
|
|
rm ${ISO}.b2
|
|
|
|
echo "Remastering iso"
|
|
mkdir -p backupiso.tmp.${TS}
|
|
mount -o loop ${ISO} backupiso.tmp.${TS}
|
|
cp -pr backupiso.tmp.${TS} backupiso.${TS}
|
|
umount backupiso.tmp.${TS}
|
|
rm -r backupiso.tmp.${TS}
|
|
|
|
# Copy backup file to disk
|
|
cp "/var/ipfire/backup/${TS}.ipf" "backupiso.${TS}/backup.ipf"
|
|
|
|
# Add a version tag
|
|
touch "backupiso.${TS}/backup-${TS}.media"
|
|
|
|
echo "Running mkisofs"
|
|
makeiso backupiso.${TS} $(basename ${ISO} .iso)-${TS}.iso
|
|
|
|
echo "Cleaning up"
|
|
rm -rf backupiso.${TS}
|