mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
Add initial azure image building
This commit is contained in:
parent
edd1b9e458
commit
b093d77ad0
151
scripts/build-azure-image
Executable file
151
scripts/build-azure-image
Executable file
@ -0,0 +1,151 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2018 VyOS maintainers and contributors
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 or later as published by the Free Software Foundation.
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
# File: build-clearfog-image
|
||||
# Purpose:
|
||||
# Build VyOS image for Azure.
|
||||
|
||||
lb bootstrap
|
||||
|
||||
lb chroot
|
||||
lb installer
|
||||
lb binary_chroot
|
||||
lb chroot_devpts install
|
||||
lb chroot_proc install
|
||||
lb chroot_selinuxfs install
|
||||
lb chroot_sysfs install
|
||||
lb chroot_hosts install
|
||||
lb chroot_resolv install
|
||||
lb chroot_hostname install
|
||||
lb chroot_sysv-rc install
|
||||
lb chroot_upstart install
|
||||
lb chroot_apt install-binary
|
||||
lb chroot_archives chroot install
|
||||
lb binary_rootfs
|
||||
lb binary_manifest
|
||||
lb binary_package-lists
|
||||
lb binary_linux-image
|
||||
lb binary_memtest
|
||||
lb binary_grub
|
||||
lb binary_grub2
|
||||
lb binary_syslinux
|
||||
lb binary_disk
|
||||
lb binary_loadlin
|
||||
lb binary_win32-loader
|
||||
lb binary_includes
|
||||
lb binary_hooks
|
||||
lb binary_checksums
|
||||
|
||||
# get vyos build version
|
||||
version=$(cat version)
|
||||
dateymd=$(date +%Y%m%d)
|
||||
|
||||
######################################
|
||||
### Prepare the HDD (format, ext.) ###
|
||||
######################################
|
||||
PARTED=/sbin/parted
|
||||
OUTPUT=VyOS-"$dateymd".vhd
|
||||
IMAGE_SIZE=512
|
||||
qemu-img create ${OUTPUT} ${IMAGE_SIZE}M
|
||||
|
||||
${PARTED} -s ${OUTPUT} mktable msdos
|
||||
${PARTED} -s -a optimal ${OUTPUT} mkpart primary ext4 1Mi 100%
|
||||
${PARTED} -s ${OUTPUT} set 1 boot on
|
||||
RESULT_KPARTX=`kpartx -asv ${OUTPUT} 2>&1`
|
||||
|
||||
if echo "${RESULT_KPARTX}" | grep "^add map" ; then
|
||||
LOOP_DEVICE=$(echo ${RESULT_KPARTX} | cut -d" " -f3)
|
||||
LOOPRAW_DEVICE=${LOOP_DEVICE%p*}
|
||||
echo "kpartx mounted using: ${LOOP_DEVICE} via ${LOOPRAW_DEVICE}"
|
||||
else
|
||||
echo "It seems kpartx didn't mount the image correctly: exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cleanup(){
|
||||
error=$?
|
||||
[ ! -d "${MOUNT_DIR}" ] && return
|
||||
if [ "$error" -gt 0 ]; then
|
||||
echo
|
||||
echo "Error $error"
|
||||
else
|
||||
echo "Finished."
|
||||
fi
|
||||
|
||||
set +e
|
||||
|
||||
sync
|
||||
umount -l ${MOUNT_DIR}
|
||||
rmdir ${MOUNT_DIR}
|
||||
|
||||
umount devpts-live
|
||||
umount proc-live
|
||||
umount sysfs-live
|
||||
|
||||
dmsetup remove --deferred ${LOOP_DEVICE}
|
||||
losetup -d /dev/${LOOPRAW_DEVICE}
|
||||
exit $error
|
||||
}
|
||||
trap "cleanup" EXIT TERM INT
|
||||
|
||||
mkfs.ext4 /dev/mapper/${LOOP_DEVICE} -L persistence
|
||||
UUID=$(blkid -o value -s UUID /dev/mapper/${LOOP_DEVICE})
|
||||
|
||||
# No fsck because of X days without checks
|
||||
tune2fs -i 0 /dev/mapper/${LOOP_DEVICE}
|
||||
|
||||
MOUNT_DIR=`mktemp -d -t build-debimg.XXXXXX`
|
||||
mount /dev/mapper/${LOOP_DEVICE} ${MOUNT_DIR}
|
||||
|
||||
########################
|
||||
### Setting-up files ###
|
||||
########################
|
||||
mkdir -p ${MOUNT_DIR}/boot/grub
|
||||
mkdir -p ${MOUNT_DIR}/boot/"$version"/rw
|
||||
|
||||
echo "/ union" > ${MOUNT_DIR}/persistence.conf
|
||||
cp binary/live/filesystem.squashfs ${MOUNT_DIR}/boot/"$version"/"$version.squashfs"
|
||||
cp binary/live/initrd.img ${MOUNT_DIR}/boot/"$version"/initrd.img
|
||||
cp binary/live/vmlinuz ${MOUNT_DIR}/boot/"$version"/vmlinuz
|
||||
|
||||
########################
|
||||
### Create grub menu ###
|
||||
########################
|
||||
cat > ${MOUNT_DIR}/boot/grub/grub.cfg << EOF
|
||||
set timeout=5
|
||||
set default=0
|
||||
|
||||
menuentry "VyOS $version (Serial console)" {
|
||||
linux /boot/"$version"/vmlinuz boot=live quiet vyos-union=/boot/"$version" console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 systemd.show_status=true
|
||||
initrd /boot/"$version"/initrd.img
|
||||
}
|
||||
|
||||
menuentry "Lost password change $version (Serial console)" {
|
||||
linux /boot/"$version"/vmlinuz boot=live quiet vyos-union=/boot/"$version" console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 systemd.show_status=true init=/opt/vyatta/sbin/standalone_root_pw_reset
|
||||
initrd /boot/"$version"/initrd.img
|
||||
}
|
||||
EOF
|
||||
|
||||
|
||||
#############################
|
||||
### Setting-up bootloader ###
|
||||
#############################
|
||||
grub-install --boot-directory ${MOUNT_DIR}/boot --force --no-floppy --skip-fs-probe /dev/${LOOPRAW_DEVICE}
|
||||
|
||||
###################
|
||||
### HOOK SCRIPT ###
|
||||
###################
|
||||
fstrim ${MOUNT_DIR}
|
||||
|
||||
../scripts/vhd.py ${OUTPUT}
|
||||
Loading…
x
Reference in New Issue
Block a user