summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile20
-rwxr-xr-xscripts/build-GCE-image153
-rwxr-xr-xscripts/build-azure-image6
-rw-r--r--tools/cloud-init/GCE/90_dpkg.cfg2
-rw-r--r--tools/cloud-init/GCE/config.boot.default (renamed from tools/cloud-init/config.boot.default)2
-rwxr-xr-xtools/cloud-init/azure/99-walinuxagent.chroot (renamed from tools/cloud-init/99-walinuxagent.chroot)0
-rw-r--r--tools/cloud-init/azure/config.boot.default30
-rw-r--r--tools/cloud-init/azure/vyos-azure.list.chroot (renamed from tools/cloud-init/vyos-azure.list.chroot)0
-rw-r--r--tools/cloud-init/cloud-init.list.chroot1
9 files changed, 207 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index f0af3ab3..f4a9ef29 100644
--- a/Makefile
+++ b/Makefile
@@ -82,12 +82,24 @@ clearfog: clean prepare
azure: clean prepare
@set -e
@echo "It's not like I'm building this specially for you or anything!"
- cp tools/cloud-init/99-walinuxagent.chroot build/config/hooks/
- cp tools/cloud-init/vyos-azure.list.chroot build/config/package-lists/
- cp -f tools/cloud-init/config.boot.default build/config/includes.chroot/opt/vyatta/etc/
+ cp tools/cloud-init/azure/99-walinuxagent.chroot build/config/hooks/
+ cp tools/cloud-init/azure/vyos-azure.list.chroot build/config/package-lists/
+ cp -f tools/cloud-init/azure/config.boot.default build/config/includes.chroot/opt/vyatta/etc/
cd $(build_dir)
@../scripts/build-azure-image
+.PHONY: GCE
+.ONESHELL:
+GCE: clean prepare
+ @set -e
+ @echo "It's not like I'm building this specially for you or anything!"
+ mkdir -p build/config/includes.chroot/etc/cloud/cloud.cfg.d
+ cp tools/cloud-init/GCE/90_dpkg.cfg build/config/includes.chroot/etc/cloud/cloud.cfg.d/
+ cp tools/cloud-init/cloud-init.list.chroot build/config/package-lists/
+ cp -f tools/cloud-init/GCE/config.boot.default build/config/includes.chroot/opt/vyatta/etc/
+ cd $(build_dir)
+ @../scripts/build-GCE-image
+
.PHONY: clean
.ONESHELL:
clean:
@@ -101,6 +113,8 @@ clean:
rm -f *.img
rm -f *.xz
rm -f *.vhd
+ rm -f *.raw
+ rm -f *.tar.gz
.PHONY: purge
purge:
diff --git a/scripts/build-GCE-image b/scripts/build-GCE-image
new file mode 100755
index 00000000..7684bd43
--- /dev/null
+++ b/scripts/build-GCE-image
@@ -0,0 +1,153 @@
+#!/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
+OUTPUTGZ=VyOS-"$dateymd".tar.gz
+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 $version (Serial console)" {
+ linux /boot/"$version"/vmlinuz boot=live vyos-union=/boot/"$version" console=tty0 console=ttyS0,38400n8d earlyprintk=ttyS0,38400 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,38400n8d earlyprintk=ttyS0,38400 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
+
+tar -Sczf ${OUTPUTGZ} ${OUTPUT}
diff --git a/scripts/build-azure-image b/scripts/build-azure-image
index d158fe89..d47b4351 100755
--- a/scripts/build-azure-image
+++ b/scripts/build-azure-image
@@ -12,7 +12,7 @@
# 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
+# File: build-azure-image
# Purpose:
# Build VyOS image for Azure.
@@ -127,12 +127,12 @@ 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
+ linux /boot/"$version"/vmlinuz boot=live quiet vyos-union=/boot/"$version" console=tty0 console=ttyS0,115200n8 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
+ linux /boot/"$version"/vmlinuz boot=live quiet vyos-union=/boot/"$version" console=tty0 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 consoleblank=0 systemd.show_status=true init=/opt/vyatta/sbin/standalone_root_pw_reset
initrd /boot/"$version"/initrd.img
}
EOF
diff --git a/tools/cloud-init/GCE/90_dpkg.cfg b/tools/cloud-init/GCE/90_dpkg.cfg
new file mode 100644
index 00000000..ac4ffeae
--- /dev/null
+++ b/tools/cloud-init/GCE/90_dpkg.cfg
@@ -0,0 +1,2 @@
+# to update this file, run dpkg-reconfigure cloud-init
+datasource_list: [ GCE ]
diff --git a/tools/cloud-init/config.boot.default b/tools/cloud-init/GCE/config.boot.default
index 18f6ef09..a0cc398f 100644
--- a/tools/cloud-init/config.boot.default
+++ b/tools/cloud-init/GCE/config.boot.default
@@ -16,7 +16,7 @@ system {
}
console {
device ttyS0 {
- speed 9600
+ speed 38400
}
}
config-management {
diff --git a/tools/cloud-init/99-walinuxagent.chroot b/tools/cloud-init/azure/99-walinuxagent.chroot
index 1de525cf..1de525cf 100755
--- a/tools/cloud-init/99-walinuxagent.chroot
+++ b/tools/cloud-init/azure/99-walinuxagent.chroot
diff --git a/tools/cloud-init/azure/config.boot.default b/tools/cloud-init/azure/config.boot.default
new file mode 100644
index 00000000..296c690a
--- /dev/null
+++ b/tools/cloud-init/azure/config.boot.default
@@ -0,0 +1,30 @@
+system {
+ syslog {
+ global {
+ facility all {
+ level info
+ }
+ facility protocols {
+ level debug
+ }
+ }
+ }
+ ntp {
+ server "0.pool.ntp.org"
+ server "1.pool.ntp.org"
+ server "2.pool.ntp.org"
+ }
+ console {
+ device ttyS0 {
+ speed 115200
+ }
+ }
+ config-management {
+ commit-revisions 100
+ }
+}
+
+interfaces {
+ loopback lo {
+ }
+}
diff --git a/tools/cloud-init/vyos-azure.list.chroot b/tools/cloud-init/azure/vyos-azure.list.chroot
index 91320a59..91320a59 100644
--- a/tools/cloud-init/vyos-azure.list.chroot
+++ b/tools/cloud-init/azure/vyos-azure.list.chroot
diff --git a/tools/cloud-init/cloud-init.list.chroot b/tools/cloud-init/cloud-init.list.chroot
new file mode 100644
index 00000000..db064e62
--- /dev/null
+++ b/tools/cloud-init/cloud-init.list.chroot
@@ -0,0 +1 @@
+cloud-init