mirror of
				https://github.com/vyos/vyos-build.git
				synced 2025-10-01 20:28:40 +02:00 
			
		
		
		
	Add script for qcow2 image
This commit is contained in:
		
							parent
							
								
									8514669255
								
							
						
					
					
						commit
						d9a012a057
					
				
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							@ -100,6 +100,14 @@ GCE: clean prepare
 | 
			
		||||
	cd $(build_dir)
 | 
			
		||||
	@../scripts/build-GCE-image
 | 
			
		||||
 | 
			
		||||
.PHONY: qcow2
 | 
			
		||||
.ONESHELL:
 | 
			
		||||
qcow2: clean prepare
 | 
			
		||||
	@set -e
 | 
			
		||||
	@echo "It's not like I'm building this specially for you or anything!"
 | 
			
		||||
	cd $(build_dir)
 | 
			
		||||
	@../scripts/build-qcow2-image
 | 
			
		||||
 | 
			
		||||
.PHONY: AWS
 | 
			
		||||
.ONESHELL:
 | 
			
		||||
AWS: clean prepare
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										164
									
								
								scripts/build-qcow2-image
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										164
									
								
								scripts/build-qcow2-image
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,164 @@
 | 
			
		||||
#!/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-GCE-image
 | 
			
		||||
# Purpose:
 | 
			
		||||
# Build VyOS image for Google cloud.
 | 
			
		||||
 | 
			
		||||
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=disk.raw
 | 
			
		||||
OUTPUTQCOW2=VyOS-"$dateymd".qcow2
 | 
			
		||||
IMAGE_SIZE=2
 | 
			
		||||
qemu-img create -f raw ${OUTPUT} ${IMAGE_SIZE}G
 | 
			
		||||
 | 
			
		||||
${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  (KVM console)" {
 | 
			
		||||
        linux /boot/"$version"/vmlinuz boot=live quiet vyos-union=/boot/"$version" console=ttyS0,9600 console=tty0 systemd.show_status=true
 | 
			
		||||
        initrd /boot/"$version"/initrd.img
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menuentry "Lost password change  (KVM console)" {
 | 
			
		||||
        linux /boot/"$version"/vmlinuz boot=live vyos-union=/boot/"$version" console=ttyS0,9600 console=tty0 systemd.show_status=true init=/opt/vyatta/sbin/standalone_root_pw_reset
 | 
			
		||||
        initrd /boot/"$version"/initrd.img
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menuentry "VyOS $version (Serial console)" {
 | 
			
		||||
        linux /boot/"$version"/vmlinuz boot=live vyos-union=/boot/"$version" console=tty0 console=ttyS0,9600n8d consoleblank=0 systemd.show_status=true
 | 
			
		||||
        initrd /boot/"$version"/initrd.img
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
menuentry "Lost password change $version (Serial console)" {
 | 
			
		||||
        linux /boot/"$version"/vmlinuz boot=live vyos-union=/boot/"$version" console=tty0 console=ttyS0,9600n8d 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}
 | 
			
		||||
sync
 | 
			
		||||
 | 
			
		||||
qemu-img convert -f raw -O qcow2 ${OUTPUT} ${OUTPUTQCOW2}
 | 
			
		||||
rm ${OUTPUT}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user