summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/build-vyos-image3
-rwxr-xr-xscripts/check-qemu-install55
-rwxr-xr-xscripts/iso-to-oci63
-rw-r--r--scripts/vyos_build_defaults.py1
4 files changed, 88 insertions, 34 deletions
diff --git a/scripts/build-vyos-image b/scripts/build-vyos-image
index afeed480..94ce417d 100755
--- a/scripts/build-vyos-image
+++ b/scripts/build-vyos-image
@@ -332,10 +332,13 @@ if __name__ == "__main__":
"""
chroot_includes_dir = os.path.join(defaults.BUILD_DIR, defaults.CHROOT_INCLUDES_DIR)
+ binary_includes_dir = os.path.join(defaults.BUILD_DIR, defaults.BINARY_INCLUDES_DIR)
vyos_data_dir = os.path.join(chroot_includes_dir, "usr/share/vyos")
os.makedirs(vyos_data_dir, exist_ok=True)
with open(os.path.join(vyos_data_dir, 'version.json'), 'w') as f:
json.dump(version_data, f)
+ with open(os.path.join(binary_includes_dir, 'version.json'), 'w') as f:
+ json.dump(version_data, f)
# For backwards compatibility with 'add system image' script from older versions
# we need a file in the old format so that script can find out the version of the image
diff --git a/scripts/check-qemu-install b/scripts/check-qemu-install
index 72ef4696..e8a7cc6f 100755
--- a/scripts/check-qemu-install
+++ b/scripts/check-qemu-install
@@ -272,7 +272,7 @@ gen_disk(args.disk)
if args.qemu_cmd:
tmp = get_qemu_cmd('TESTVM', kvm, args.uefi, args.disk, diskname_raid, args.iso)
- print(tmp)
+ os.system(tmp)
exit(0)
test_timeout = 3 *3600 # 3 hours (in seconds)
@@ -306,42 +306,29 @@ try:
#################################################
log.info('Starting installer')
c.sendline('install image')
- c.expect('\nWould you like to continue?.*:')
- c.sendline('yes')
-
- if args.raid:
- c.expect('\nWould you like to configure RAID-1 mirroring on them?.*:')
- c.sendline('yes')
- # Erase all data on disks
- c.expect('\nAre you sure you want to do this?.*:')
- c.sendline('yes')
- else:
- log.info('Partitioning disk')
- c.expect('\nPartition.*:')
- c.sendline('')
- c.expect('\nInstall the image on.*:')
- c.sendline('')
- c.expect(r'\nContinue\?.*:')
- c.sendline('Yes')
- c.expect('\nHow big of a root partition should I create?.*:')
- c.sendline('')
-
- log.info('Disk(s) partitioned, installing...')
- c.expect('\nWhat would you like to name this image?.*:', timeout=600)
+ c.expect('\nWould you like to continue?.*')
+ c.sendline('y')
+ c.expect('\nWhat would you like to name this image?.*')
c.sendline('')
- log.info('Copying files')
- c.expect('\nWhich one should I copy to.*:', timeout=600)
+ c.expect(f'\nPlease enter a password for the "{default_user}" user.*')
c.sendline('')
- log.info('Files Copied!')
- c.expect('\nEnter password for user.*:')
- c.sendline(default_user)
- c.expect('\nRetype password for user.*:')
- c.sendline(default_password)
+ c.expect('\nWhat console should be used by default?.*')
+ c.sendline('S')
- if not args.raid:
- c.expect('\nWhich drive should GRUB modify the boot partition on.*:')
+ if args.raid:
+ c.expect('\nWould you like to configure RAID-1 mirroring??.*')
+ c.sendline('y')
+ c.expect('\nWould you like to configure RAID-1 mirroring on them?.*')
+ c.sendline('y')
+ c.expect('\nInstallation will delete all data on both drives. Continue?.*')
+ c.sendline('y')
+ else:
+ c.expect('\nWhich one should be used for installation?.*')
c.sendline('')
- c.expect(op_mode_prompt)
+ c.expect('\nInstallation will delete all data on the drive. Continue?.*')
+ c.sendline('y')
+ c.expect('\nWould you like to use all the free space on the drive?.*')
+ c.sendline('y')
log.info('system installed, shutting down')
@@ -458,7 +445,7 @@ try:
c.expect(op_mode_prompt)
log.info('Add member to RAID1 (md0)')
- c.sendline('add raid md0 by-id member drive-hd1-part1')
+ c.sendline('add raid md0 by-id member drive-hd1-part3')
c.expect(op_mode_prompt)
log.info('Now we need to wait for re-sync to complete')
diff --git a/scripts/iso-to-oci b/scripts/iso-to-oci
new file mode 100755
index 00000000..c9396290
--- /dev/null
+++ b/scripts/iso-to-oci
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+function cleanup() {
+ if [[ -d $ROOTFS ]]; then
+ rm -rf $ROOTFS
+ fi
+ if [[ -d $UNSQUASHFS ]]; then
+ rm -rf $UNSQUASHFS
+ fi
+}
+
+if [[ $(/usr/bin/id -u) -ne 0 ]]; then
+ echo "Not running as root"
+ exit
+fi
+
+if [ "$#" -ne 1 ]; then
+ echo "Illegal number of parameters"
+fi
+
+ISO=$1
+ROOTFS=rootfs
+UNSQUASHFS=unsquashfs
+
+# ensure clean working directory
+cleanup
+
+mkdir $ROOTFS $UNSQUASHFS
+echo "I: mount ISO $ISO"
+mount -t iso9660 -o loop $ISO $ROOTFS/ >/dev/null 2>&1
+
+# create directory, unpack squashfs filesystem, get ISO version
+# and unmount ISO
+echo "I: extracting squashfs content"
+unsquashfs -follow -dest $UNSQUASHFS/ $ROOTFS/live/filesystem.squashfs >/dev/null 2>&1
+VERSION=$(jq --raw-output .version $ROOTFS/version.json)
+umount $ROOTFS/
+
+# fix locales for correct system configuration loading
+sed -i 's/^LANG=.*$/LANG=C.UTF-8/' $UNSQUASHFS/etc/default/locale
+
+# optional step: Decrease docker image size by deleting not necessary files for container
+rm -rf $UNSQUASHFS/boot/*.img
+rm -rf $UNSQUASHFS/boot/*vyos*
+rm -rf $UNSQUASHFS/boot/vmlinuz
+rm -rf $UNSQUASHFS/lib/firmware/
+rm -rf $UNSQUASHFS/usr/lib/x86_64-linux-gnu/libwireshark.so*
+rm -rf $UNSQUASHFS/lib/modules/*amd64-vyos
+rm -rf $UNSQUASHFS/root/.gnupg
+
+# create a symbolic link to the configuration
+ln -s /opt/vyatta/etc/config $UNSQUASHFS/config
+
+# create docker image
+echo "I: generate OCI container image vyos-$VERSION.tar"
+tar -C unsquashfs -c . -f vyos-$VERSION.tar
+
+echo "I: to import the previously generated OCI image to your local images run:"
+echo ""
+echo " docker import vyos-$VERSION.tar vyos:$VERSION --change 'CMD ["/sbin/init"]'"
+echo ""
+
+cleanup
diff --git a/scripts/vyos_build_defaults.py b/scripts/vyos_build_defaults.py
index 975fcb71..1e153f4b 100644
--- a/scripts/vyos_build_defaults.py
+++ b/scripts/vyos_build_defaults.py
@@ -37,6 +37,7 @@ PBUILDER_DIR = 'pbuilder'
LB_CONFIG_DIR = 'config'
CHROOT_INCLUDES_DIR = 'config/includes.chroot'
+BINARY_INCLUDES_DIR = 'config/includes.binary'
ARCHIVES_DIR = 'config/archives/'
VYOS_REPO_FILE = 'config/archives/vyos.list.chroot'