Add support for cross-arch ISOs
Initial support for arm64 installer support, as well as supporting building the amd64 files on arm64 (i.e. an RPi3/4)
This commit is contained in:
parent
17f6cb51d1
commit
79de677a96
41
buildiso.sh
41
buildiso.sh
|
@ -18,9 +18,6 @@ sudo -n true &>/dev/null || fail "The user running this script must have sudo pr
|
||||||
idir=$( dirname $0 )
|
idir=$( dirname $0 )
|
||||||
pushd ${idir} &>/dev/null
|
pushd ${idir} &>/dev/null
|
||||||
|
|
||||||
isofilename="pvc-installer_$(date +%Y-%m-%d).iso"
|
|
||||||
deployusername="deploy"
|
|
||||||
|
|
||||||
show_help() {
|
show_help() {
|
||||||
echo -e "PVC install ISO generator"
|
echo -e "PVC install ISO generator"
|
||||||
echo
|
echo
|
||||||
|
@ -31,6 +28,7 @@ show_help() {
|
||||||
echo -e " -h: Display this help message."
|
echo -e " -h: Display this help message."
|
||||||
echo -e " -o: Create the ISO as <output_filename> instead of the default."
|
echo -e " -o: Create the ISO as <output_filename> instead of the default."
|
||||||
echo -e " -u: Change 'deploy' user to a new username."
|
echo -e " -u: Change 'deploy' user to a new username."
|
||||||
|
echo -e " -c: Change CPU architecture to a new architecture [x86_64/aarch64]."
|
||||||
echo -e " -a: Preserve live-build artifacts."
|
echo -e " -a: Preserve live-build artifacts."
|
||||||
echo -e " -k: Preserve live-build config."
|
echo -e " -k: Preserve live-build config."
|
||||||
}
|
}
|
||||||
|
@ -49,6 +47,28 @@ while [ $# -gt 0 ]; do
|
||||||
deployusername="${2}"
|
deployusername="${2}"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
-c)
|
||||||
|
current_arch=$( uname -m )
|
||||||
|
if [[ ${current_arch} != ${2} ]]; then
|
||||||
|
case ${2} in
|
||||||
|
x86_64)
|
||||||
|
arch="amd64"
|
||||||
|
arch_config_append="--architecture amd64 --bootloader grub-efi --bootstrap-qemu-arch amd64 --bootstrap-qemu-static /usr/bin/qemu-x86_64-static"
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
arch="arm64"
|
||||||
|
arch_config_append="--architecture arm64 --bootloader grub-efi --bootstrap-qemu-arch arm64 --bootstrap-qemu-static /usr/bin/qemu-aarch64-static"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid arch: ${2}"
|
||||||
|
echo
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
-a)
|
-a)
|
||||||
preserve_artifacts='y'
|
preserve_artifacts='y'
|
||||||
shift
|
shift
|
||||||
|
@ -66,6 +86,16 @@ while [ $# -gt 0 ]; do
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ -z ${arch} ]]; then
|
||||||
|
arch="amd64"
|
||||||
|
fi
|
||||||
|
if [[ -z ${isofilename} ]]; then
|
||||||
|
isofilename="pvc-installer_$(date +%Y-%m-%d)_${arch}.iso"
|
||||||
|
fi
|
||||||
|
if [[ -z ${deployusername} ]]; then
|
||||||
|
deployusername="deploy"
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p artifacts/lb
|
mkdir -p artifacts/lb
|
||||||
pushd artifacts/lb &>/dev/null
|
pushd artifacts/lb &>/dev/null
|
||||||
|
|
||||||
|
@ -75,12 +105,13 @@ echo
|
||||||
|
|
||||||
echo "Initializing config..."
|
echo "Initializing config..."
|
||||||
# Initialize the live-build config
|
# Initialize the live-build config
|
||||||
lb config --distribution buster --architectures amd64 --archive-areas "main contrib non-free" --apt-recommends false || fail "Failed to initialize live-build config"
|
lb config --distribution bullseye --archive-areas "main contrib non-free" --apt-recommends false ${arch_config_append} || fail "Failed to initialize live-build config"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# Configure the package lists
|
# Configure the package lists
|
||||||
echo -n "Copying package lists... "
|
echo -n "Copying package lists... "
|
||||||
cp ../../templates/installer.list.chroot config/package-lists/installer.list.chroot || fail "Failed to copy critical template file"
|
cp ../../templates/installer.list.chroot config/package-lists/installer.list.chroot || fail "Failed to copy critical template file"
|
||||||
|
cp ../../templates/installer_${arch}.list.chroot config/package-lists/installer_${arch}.list.chroot || fail "Failed to copy critical template file"
|
||||||
cp ../../templates/firmware.list.chroot config/package-lists/firmware.list.chroot || fail "Failed to copy critical template file"
|
cp ../../templates/firmware.list.chroot config/package-lists/firmware.list.chroot || fail "Failed to copy critical template file"
|
||||||
echo "done."
|
echo "done."
|
||||||
|
|
||||||
|
@ -151,7 +182,7 @@ echo
|
||||||
|
|
||||||
# Move the ISO image out
|
# Move the ISO image out
|
||||||
echo -n "Copying generated ISO to repository root... "
|
echo -n "Copying generated ISO to repository root... "
|
||||||
cp live-image-amd64.hybrid.iso ../../${isofilename}
|
cp live-image-${arch}.hybrid.iso ../../${isofilename}
|
||||||
echo "done."
|
echo "done."
|
||||||
|
|
||||||
# Clean up the artifacts
|
# Clean up the artifacts
|
||||||
|
|
|
@ -86,6 +86,7 @@ build_iso() {
|
||||||
./buildiso.sh \
|
./buildiso.sh \
|
||||||
-o pvc-installer_pxe-tmp.iso \
|
-o pvc-installer_pxe-tmp.iso \
|
||||||
-u ${deployusername} \
|
-u ${deployusername} \
|
||||||
|
-c x86_64 \
|
||||||
${preserve_artifacts} \
|
${preserve_artifacts} \
|
||||||
${preserve_livebuild} || fail "Failed to build ISO."
|
${preserve_livebuild} || fail "Failed to build ISO."
|
||||||
echo
|
echo
|
||||||
|
|
|
@ -76,7 +76,15 @@ default_debrelease="buster"
|
||||||
default_debmirror="http://debian.mirror.rafal.ca/debian"
|
default_debmirror="http://debian.mirror.rafal.ca/debian"
|
||||||
|
|
||||||
# Base packages (installed by debootstrap)
|
# Base packages (installed by debootstrap)
|
||||||
basepkglist="lvm2,parted,gdisk,grub-pc,grub-efi-amd64,linux-image-amd64,sudo,vim,gpg,gpg-agent,openssh-server,vlan,ifenslave,python3,ca-certificates,curl"
|
basepkglist="lvm2,parted,gdisk,sudo,vim,gpg,gpg-agent,openssh-server,vlan,ifenslave,python3,ca-certificates,curl"
|
||||||
|
case $( uname -m ) in
|
||||||
|
x86_64)
|
||||||
|
basepkglist="${basepkglist},grub-pc,grub-efi-amd64,linux-image-amd64"
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
basepkglist="${basepkglist},grub-efi-arm64,linux-image-arm64"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
# Supplemental packages (installed in chroot after debootstrap)
|
# Supplemental packages (installed in chroot after debootstrap)
|
||||||
suppkglist="firmware-linux,firmware-linux-nonfree,firmware-bnx2,firmware-bnx2x,ntp,ipmitool,acpid,acpi-support-base,lsscsi"
|
suppkglist="firmware-linux,firmware-linux-nonfree,firmware-bnx2,firmware-bnx2x,ntp,ipmitool,acpid,acpi-support-base,lsscsi"
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
live-task-standard live-tools live-boot live-boot-initramfs-tools linux-image-amd64 psmisc mdadm lvm2 parted gdisk dosfstools debootstrap grub-pc-bin grub-efi-amd64 sipcalc vim ca-certificates vlan tftp-hpa curl ipmitool lsscsi
|
live-task-standard live-tools live-boot live-boot-initramfs-tools psmisc mdadm lvm2 parted gdisk dosfstools debootstrap sipcalc vim ca-certificates vlan tftp-hpa curl ipmitool lsscsi
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
linux-image-amd64 grub-pc-bin grub-efi-amd64
|
|
@ -0,0 +1 @@
|
||||||
|
linux-image-arm64 grub-efi-arm64
|
Loading…
Reference in New Issue