aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/disk-image-builder/ubuntu
diff options
context:
space:
mode:
authorCarsten Koester <ckoester@cisco.com>2016-05-25 05:58:29 -0400
committerDave Wallace <dwallacelf@gmail.com>2016-06-02 00:18:28 +0000
commit9d378548cc86028c55baf17260d32d0055603b78 (patch)
tree1cc67da7195459abcaca5f12f0f4b74bc399b60e /resources/tools/disk-image-builder/ubuntu
parent036f36181c177e4c77f22cdbdcb87fb2f94df3bf (diff)
CSIT-111: Add Packer based framework to auto-generate disk images
Change-Id: Ia18ea34a6288aec0f12f176f4cc264d0f215d1fd Signed-off-by: Carsten Koester <ckoester@cisco.com>
Diffstat (limited to 'resources/tools/disk-image-builder/ubuntu')
-rw-r--r--resources/tools/disk-image-builder/ubuntu/.gitignore1
-rw-r--r--resources/tools/disk-image-builder/ubuntu/CHANGELOG3
-rwxr-xr-xresources/tools/disk-image-builder/ubuntu/build-listmaker.sh65
-rwxr-xr-xresources/tools/disk-image-builder/ubuntu/build.sh276
-rw-r--r--resources/tools/disk-image-builder/ubuntu/clean.sh18
-rwxr-xr-xresources/tools/disk-image-builder/ubuntu/deepclean.sh19
-rw-r--r--resources/tools/disk-image-builder/ubuntu/html/preseed.cfg503
-rw-r--r--resources/tools/disk-image-builder/ubuntu/listmaker/ubuntu-14.04.4.json57
-rw-r--r--resources/tools/disk-image-builder/ubuntu/listmaker/virl-listmaker.yaml12
-rw-r--r--resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/apt-packages.txt195
-rw-r--r--resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/pip-requirements.txt14
-rw-r--r--resources/tools/disk-image-builder/ubuntu/nested/NO-NESTED8
-rwxr-xr-xresources/tools/disk-image-builder/ubuntu/run-listmaker.sh212
-rwxr-xr-xresources/tools/disk-image-builder/ubuntu/scripts-local/upload-image-to-virl.sh71
-rw-r--r--resources/tools/disk-image-builder/ubuntu/scripts-remote/cleanup.sh37
-rw-r--r--resources/tools/disk-image-builder/ubuntu/scripts-remote/post-install.sh86
-rw-r--r--resources/tools/disk-image-builder/ubuntu/scripts-remote/serial-console.sh57
-rw-r--r--resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-guestadditions.sh22
-rw-r--r--resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-user.sh40
-rw-r--r--resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json120
-rw-r--r--resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json.WITH-ATLAS22
21 files changed, 1838 insertions, 0 deletions
diff --git a/resources/tools/disk-image-builder/ubuntu/.gitignore b/resources/tools/disk-image-builder/ubuntu/.gitignore
new file mode 100644
index 0000000000..a007feab07
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/.gitignore
@@ -0,0 +1 @@
+build/*
diff --git a/resources/tools/disk-image-builder/ubuntu/CHANGELOG b/resources/tools/disk-image-builder/ubuntu/CHANGELOG
new file mode 100644
index 0000000000..8eb1c51abb
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/CHANGELOG
@@ -0,0 +1,3 @@
+## [1.0] - 2016-05-20
+
+Initial release
diff --git a/resources/tools/disk-image-builder/ubuntu/build-listmaker.sh b/resources/tools/disk-image-builder/ubuntu/build-listmaker.sh
new file mode 100755
index 0000000000..59b44e5a19
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/build-listmaker.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+# This builds the "listmaker" image. This is essentially a one-time
+# action and most likely applicable to CSIT test lab only.
+
+cd $(dirname $0)
+BUILD_DIR="$(pwd)/build"
+PACKER_DIR="${BUILD_DIR}/packer"
+OUT_DIR="${BUILD_DIR}/output/listmaker"
+
+RELEASE_NAME="csit-ubuntu-14.04.4-listmaker"
+PACKER_TEMPLATE="listmaker/ubuntu-14.04.4.json"
+
+VIRL_IMAGE_SUBTYPE=server
+VIRL_IMAGE_NAME="${RELEASE_NAME}"
+VIRL_IMAGE_FILE="${OUT_DIR}/packer-${RELEASE_NAME}"
+
+# export PACKER_LOG="1"
+
+# This script requires that the following two environment variables be defined-
+#
+# $VIRL_USER
+# $VIRL_PASSWORD
+
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ echo '$VIRL_USER and $VIRL_PASSWORD environment variables must be defined'
+ exit 1
+fi
+
+###
+### Download and extract packer, if not already installed
+###
+os=$(uname -s)
+if [ "$os" = "Darwin" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_darwin_amd64.zip"
+elif [ "$os" = "Linux" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_linux_amd64.zip"
+fi
+
+mkdir -p $BUILD_DIR
+wget -P ${PACKER_DIR} -N ${packer_url}
+
+unzip -n ${PACKER_DIR}/packer*zip -d ${PACKER_DIR}
+
+###
+### Build the actual image as per packer script. Packer post-processor will
+### upload it to VIRL.
+###
+${BUILD_DIR}/packer/packer build -var "release=${RELEASE_NAME}" \
+ -var "outputdir=${OUT_DIR}" -force -machine-readable ${PACKER_TEMPLATE}
diff --git a/resources/tools/disk-image-builder/ubuntu/build.sh b/resources/tools/disk-image-builder/ubuntu/build.sh
new file mode 100755
index 0000000000..c94f445801
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/build.sh
@@ -0,0 +1,276 @@
+#!/bin/bash -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Purpose of this script is to build a VirtualBox or QCOW2 disk image
+# for use with CSIT testing.
+#
+# As input parameters, the script takes:
+#
+# - A base Linux distribution (currently, only "ubuntu-14.04.4" is
+# supported),
+# - A release timestamp in the format "YYYY-MM-DD" eg. "2016-05-21".
+# This timestamp MUST reference to a list of packages (APT, PIP)
+# that was previously generated by the "listmaker" VM and script.
+# - A path to the nested VM image.
+#
+# The bullk of the work is done by packer,
+# while this script does some of the pre- and post-processing.
+# Steps executed are:
+#
+# 1.) Determine if building a QCOW or VirtualBox image. Currently,
+# we build a QCOW image if VIRL_* environment variables are
+# present (and we therefore assume we are building for VIRL),
+# or VirtualBox otherwise.
+#
+# 2.) Download packer, if not already installed.
+#
+# 3.) Download APT and PIP packages as required for the image.
+# We're downloading them here, rather than letting the VM
+# download them off the public internet, for two reasons:
+# a.) This allows us to keep and cache packets between runs
+# and download them only once,
+# b.) This means only the build host needs a working proxy
+# configuration and we do not need to worry about setting
+# a proxy inside the VM.
+#
+# 4.) Link the nested VM image into the main VM's temp directory
+#
+# 5.) Create Version and Changelog files
+#
+# 6.) Run Packer. Packer, in turn, will:
+# 6.1.) Download the Operating System ISO image,
+# 6.2.) Start a VM using the selected hypervisor (VirtualBox or Qemu),
+# 6.3.) Boot the VM using the ISO image and send initial keystrokes
+# to initiate installation using a Preseed or Kickstart file,
+# 6.4.) Drive the installation using until the point the VM is reachable
+# over SSH,
+# 6.5.) Copy the temporary directory populated in steps 3-5 above to the VM,
+# 6.6.) Run a script on the VM that performs post-installation:
+# 6.6.1.) Install selected .deb packages
+# 6.6.2.) Install PIP packages as per requirements.txt file
+# 6.6.3.) Install nested VM image and VERSION/CHANGELOG files
+# 6.7.) Run a script on VM that creates a Vagrant user (VirtualBox only)
+# 6.8.) Run a script on VM that performs clean-up:
+# 6.8.1.) Remove any temporary files created,
+# 6.8.2.) Remove SSH host-keys
+# 6.8.3.) Remove root user password
+# 6.8.4.) Shut down the VM
+# 6.9.) [TODO]: Upload the image to VIRL (QCOW only), -or-
+# Convert the image into a Vagrant box (VirtualBox only), and
+# [TODO/FIX]: Upload the Vagrant box to Atlas (VirtualBox only)
+#
+# 7.) Clean up
+
+###
+### 0. Set constants and verify parameters.
+###
+cd $(dirname $0)
+BUILD_DIR="$(pwd)/build"
+PACKER_DIR="${BUILD_DIR}/packer"
+
+APT_CACHE_DIR="${BUILD_DIR}/cache/apt"
+PIP_CACHE_DIR="${BUILD_DIR}/cache/pip"
+
+PACKER_TEMPLATE="ubuntu-14.04.4.json"
+LISTS_DIR="$(dirname $0)/lists"
+
+function syntax {
+ echo 'Syntax: $0 <Operating System> <Release> <Nested VM image>'
+ echo
+ echo '<Operating System>: Base distro, eg. ubuntu-14.04.4'
+ echo '<Release>: Release timestamp, eg. 2016-05-21'
+ echo '<Nested VM image>: Path to nested VM image'
+
+ exit 1
+}
+
+## Parse command line options
+
+OS=$1
+RELDATE=$2
+NESTED_IMG=$3
+
+if [ "$3" = "" ]
+then
+ syntax
+fi
+
+## Identify version by looking at topmost version statement in CHANGELOG
+
+VERSION=$(cat $(dirname $0)/CHANGELOG | grep '^## ' | head -1 | \
+ sed -e 's/.*\[\(.*\)\].*/\1/')
+if [ "${VERSION}" = "" ]
+then
+ echo "Unable to determine build version from CHANGELOG file. Make sure"
+ echo "that there is an entry for the most recent version in CHANGELOG,"
+ echo "and that the entry is formated like"
+ echo
+ echo "## [1.0] - 2016-05-20"
+ exit 1
+fi
+RELEASE="csit-${OS}_${RELDATE}_${VERSION}"
+
+OUTPUT_DIR="${BUILD_DIR}/output/${RELEASE}"
+LIST="${LISTS_DIR}/${OS}_${RELDATE}_${VERSION}"
+
+if [ ! -d "${LIST}" ]
+then
+ echo "${LIST} not found"
+ syntax
+ exit 1
+fi
+if [ ! -f $NESTED_IMG ]
+then
+ echo "Nested image $NESTED_IMG not found"
+ syntax
+ exit 1
+fi
+
+ATLAS_RELDATE=${RELDATE//-}
+ATLAS_VERSION="${ATLAS_RELDATE}.${VERSION}"
+
+# Find an MD5 checksum utility
+
+MD5UTIL=$(which md5sum) || MD5UTIL=$(which md5)
+if [ $? -ne 0 ]
+then
+ echo "No MD5 utility found."
+ echo "Please make sure you either have \"md5sum\" or \"md5\" installed."
+ exit 1
+fi
+
+###
+### 1. Determine build target.
+###
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ OUTPUT_PROVIDER="virtualbox"
+else
+ OUTPUT_PROVIDER="qemu"
+fi
+
+echo "Building version $VERSION for ${OUTPUT_PROVIDER}"
+echo "Release ${RELEASE}"
+echo "Using Nested VM image: ${NESTED_IMG}"
+echo
+
+
+###
+### 2. Download and extract packer, if not already installed
+###
+packer_os=$(uname -s)
+if [ "$packer_os" = "Darwin" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_darwin_amd64.zip"
+elif [ "$packer_os" = "Linux" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_linux_amd64.zip"
+fi
+
+mkdir -p $BUILD_DIR
+wget -P ${PACKER_DIR} -N ${packer_url}
+
+unzip -n ${PACKER_DIR}/packer*zip -d ${PACKER_DIR}
+
+###
+### 3. Download APT and PIP packages, and cache them
+### Verify checksum of downloaded APT packages.
+### Link required packages into a temp directory for the VM image.
+###
+
+## APT
+
+rm -fr ${OUTPUT_DIR}
+mkdir -p ${OUTPUT_DIR}/temp/deb
+mkdir -p ${APT_CACHE_DIR}
+
+APT_FILE="${LIST}/apt-packages.txt"
+while read url name size checksum
+do
+ # Download if not already present
+ if [ ! -f ${APT_CACHE_DIR}/$name ]
+ then
+ wget -P ${APT_CACHE_DIR} -O ${APT_CACHE_DIR}/$name ${url//\'}
+ fi
+
+ # Verify checksum (always -- regardless of whether the package was
+ # just downloaded, or already tehere
+ actual_md5sum=$(${MD5UTIL} < ${APT_CACHE_DIR}/$name)
+ if [ ! "${actual_md5sum:0:32}" = "${checksum:7}" ]
+ then
+ echo File $name checksum failure."
+ echo "Got ${actual_md5sum:0:31} expected ${checksum:7}.
+ rm -f ${APT_CACHE_DIR}/$name
+ exit 1
+ fi
+
+ # Link package into VM temp directory
+ ln ${APT_CACHE_DIR}/$name ${OUTPUT_DIR}/temp/deb/${name}
+done < $APT_FILE
+
+## PIP
+
+mkdir -p ${PIP_CACHE_DIR}
+
+# Let PIP do the work of downloading and verifying packages
+pip install --download ${PIP_CACHE_DIR} -r ${LIST}/pip-requirements.txt
+
+# Link packages and requirements file into VM's temp directory
+mkdir -p ${OUTPUT_DIR}/temp/pip
+ln ${PIP_CACHE_DIR}/* ${OUTPUT_DIR}/temp/pip/
+ln ${LIST}/pip-requirements.txt ${OUTPUT_DIR}/temp/requirements.txt
+
+###
+### 4. Link the nested VM image
+###
+rm -fr ${OUTPUT_DIR}/temp/nested-vm
+mkdir ${OUTPUT_DIR}/temp/nested-vm
+ln $NESTED_IMG ${OUTPUT_DIR}/temp/nested-vm/
+
+###
+### 5. Create Version and Changelog files
+###
+
+echo ${RELEASE} > ${OUTPUT_DIR}/temp/VERSION
+ln CHANGELOG ${OUTPUT_DIR}/temp/CHANGELOG
+
+###
+### 6. Run packer
+###
+export PACKER_LOG=1
+export PACKER_LOG_PATH=${OUTPUT_DIR}/packer.log
+${PACKER_DIR}/packer build -var "release=${RELEASE}" \
+ -only ${RELEASE}-${OUTPUT_PROVIDER} \
+ -var "output_dir=${OUTPUT_DIR}/packer" \
+ -var "temp_dir=${OUTPUT_DIR}/temp" \
+ -var "atlas_version=${ATLAS_VERSION}" \
+ -force \
+ -machine-readable ${PACKER_TEMPLATE}
+
+# TODO: Need to figure out "packer push" later. Currently keeps failing.
+# ${PACKER_DIR}/packer push -name ckoester/test123 -var "release=${RELEASE}" \
+# -var "output_dir=${OUTPUT_DIR}/packer" \
+# -var "temp_dir=${OUTPUT_DIR}/temp" \
+# ${PACKER_TEMPLATE}
+
+###
+### 7. Clean up
+###
+rm -fr ${OUTPUT_DIR}/temp
+
+echo "Done."
+echo "Artifacts:"
+echo
+ls -lR ${OUTPUT_DIR}
diff --git a/resources/tools/disk-image-builder/ubuntu/clean.sh b/resources/tools/disk-image-builder/ubuntu/clean.sh
new file mode 100644
index 0000000000..e1dbae46df
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/clean.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Script to clean up all build artifact, but keep cached files
+
+rm -fr $(dirname $0)/build/output/*
diff --git a/resources/tools/disk-image-builder/ubuntu/deepclean.sh b/resources/tools/disk-image-builder/ubuntu/deepclean.sh
new file mode 100755
index 0000000000..50eccc35c3
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/deepclean.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Script to clean up build artifacts and cached files.
+
+rm -fr $(dirname $0)/build/*
+rm -fr $(dirname $0)/lists/*
diff --git a/resources/tools/disk-image-builder/ubuntu/html/preseed.cfg b/resources/tools/disk-image-builder/ubuntu/html/preseed.cfg
new file mode 100644
index 0000000000..280757a647
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/html/preseed.cfg
@@ -0,0 +1,503 @@
+#### Contents of the preconfiguration file (for trusty)
+### Localization
+# Preseeding only locale sets language, country and locale.
+d-i debian-installer/locale string en_US
+
+# The values can also be preseeded individually for greater flexibility.
+#d-i debian-installer/language string en
+#d-i debian-installer/country string NL
+#d-i debian-installer/locale string en_GB.UTF-8
+# Optionally specify additional locales to be generated.
+#d-i localechooser/supported-locales multiselect en_US.UTF-8, nl_NL.UTF-8
+
+# Keyboard selection.
+# Disable automatic (interactive) keymap detection.
+d-i console-setup/ask_detect boolean false
+d-i keyboard-configuration/xkb-keymap select us
+# To select a variant of the selected layout:
+#d-i keyboard-configuration/xkb-keymap select us(dvorak)
+# d-i keyboard-configuration/toggle select No toggling
+
+### Network configuration
+# Disable network configuration entirely. This is useful for cdrom
+# installations on non-networked devices where the network questions,
+# warning and long timeouts are a nuisance.
+#d-i netcfg/enable boolean false
+
+# netcfg will choose an interface that has link if possible. This makes it
+# skip displaying a list if there is more than one interface.
+d-i netcfg/choose_interface select auto
+
+# To pick a particular interface instead:
+#d-i netcfg/choose_interface select eth1
+
+# To set a different link detection timeout (default is 3 seconds).
+# Values are interpreted as seconds.
+#d-i netcfg/link_wait_timeout string 10
+
+# If you have a slow dhcp server and the installer times out waiting for
+# it, this might be useful.
+#d-i netcfg/dhcp_timeout string 60
+#d-i netcfg/dhcpv6_timeout string 60
+
+# If you prefer to configure the network manually, uncomment this line and
+# the static network configuration below.
+#d-i netcfg/disable_autoconfig boolean true
+
+# If you want the preconfiguration file to work on systems both with and
+# without a dhcp server, uncomment these lines and the static network
+# configuration below.
+#d-i netcfg/dhcp_failed note
+#d-i netcfg/dhcp_options select Configure network manually
+
+# Static network configuration.
+#
+# IPv4 example
+#d-i netcfg/get_ipaddress string 192.168.1.42
+#d-i netcfg/get_netmask string 255.255.255.0
+#d-i netcfg/get_gateway string 192.168.1.1
+#d-i netcfg/get_nameservers string 192.168.1.1
+#d-i netcfg/confirm_static boolean true
+#
+# IPv6 example
+#d-i netcfg/get_ipaddress string fc00::2
+#d-i netcfg/get_netmask string ffff:ffff:ffff:ffff::
+#d-i netcfg/get_gateway string fc00::1
+#d-i netcfg/get_nameservers string fc00::1
+#d-i netcfg/confirm_static boolean true
+
+# Any hostname and domain names assigned from dhcp take precedence over
+# values set here. However, setting the values still prevents the questions
+# from being shown, even if values come from dhcp.
+d-i netcfg/get_hostname string unassigned-hostname
+d-i netcfg/get_domain string unassigned-domain
+
+# If you want to force a hostname, regardless of what either the DHCP
+# server returns or what the reverse DNS entry for the IP is, uncomment
+# and adjust the following line.
+#d-i netcfg/hostname string somehost
+
+# Disable that annoying WEP key dialog.
+d-i netcfg/wireless_wep string
+# The wacky dhcp hostname that some ISPs use as a password of sorts.
+#d-i netcfg/dhcp_hostname string radish
+
+# If non-free firmware is needed for the network or other hardware, you can
+# configure the installer to always try to load it, without prompting. Or
+# change to false to disable asking.
+#d-i hw-detect/load_firmware boolean true
+
+### Network console
+# Use the following settings if you wish to make use of the network-console
+# component for remote installation over SSH. This only makes sense if you
+# intend to perform the remainder of the installation manually.
+#d-i anna/choose_modules string network-console
+#d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key
+#d-i network-console/password password r00tme
+#d-i network-console/password-again password r00tme
+# Use this instead if you prefer to use key-based authentication
+#d-i network-console/authorized_keys_url http://host/authorized_keys
+
+### Mirror settings
+# If you select ftp, the mirror/country string does not need to be set.
+#d-i mirror/protocol string ftp
+#d-i mirror/country string manual
+#d-i mirror/http/hostname string archive.ubuntu.com
+#d-i mirror/http/directory string /ubuntu
+#d-i mirror/http/proxy string
+
+# Alternatively: by default, the installer uses CC.archive.ubuntu.com where
+# CC is the ISO-3166-2 code for the selected country. You can preseed this
+# so that it does so without asking.
+#d-i mirror/http/mirror select CC.archive.ubuntu.com
+
+# Suite to install.
+#d-i mirror/suite string trusty
+# Suite to use for loading installer components (optional).
+#d-i mirror/udeb/suite string trusty
+# Components to use for loading installer components (optional).
+#d-i mirror/udeb/components multiselect main, restricted
+
+### Account setup
+# Skip creation of a root account (normal user account will be able to
+# use sudo). The default is false; preseed this to true if you want to set
+# a root password.
+d-i passwd/root-login boolean true
+# Alternatively, to skip creation of a normal user account.
+d-i passwd/make-user boolean false
+
+# Root password, either in clear text
+d-i passwd/root-password password csit
+d-i passwd/root-password-again password csit
+# or encrypted using a crypt(3) hash.
+#d-i passwd/root-password-crypted password [crypt(3) hash]
+
+# To create a normal user account.
+#d-i passwd/user-fullname string Ubuntu User
+#d-i passwd/username string ubuntu
+# Normal user's password, either in clear text
+#d-i passwd/user-password password insecure
+#d-i passwd/user-password-again password insecure
+# or encrypted using a crypt(3) hash.
+#d-i passwd/user-password-crypted password [crypt(3) hash]
+# Create the first user with the specified UID instead of the default.
+#d-i passwd/user-uid string 1010
+# The installer will warn about weak passwords. If you are sure you know
+# what you're doing and want to override it, uncomment this.
+#d-i user-setup/allow-password-weak boolean true
+#d-i passwd/user-fullname string Packer - Temp User
+#d-i passwd/username string packer
+#d-i passwd/user-password password packer
+#d-i passwd/user-password-again password packer
+d-i user-setup/allow-password-weak boolean true
+
+# The user account will be added to some standard initial groups. To
+# override that, use this.
+#d-i passwd/user-default-groups string audio cdrom video
+
+# Set to true if you want to encrypt the first user's home directory.
+d-i user-setup/encrypt-home boolean false
+
+### Clock and time zone setup
+# Controls whether or not the hardware clock is set to UTC.
+d-i clock-setup/utc boolean true
+
+# You may set this to any valid setting for $TZ; see the contents of
+# /usr/share/zoneinfo/ for valid values.
+d-i time/zone string US/Eastern
+
+# Controls whether to use NTP to set the clock during the install
+d-i clock-setup/ntp boolean false
+# NTP server to use. The default is almost always fine here.
+#d-i clock-setup/ntp-server string ntp.example.com
+
+### Partitioning
+## Partitioning example
+# If the system has free space you can choose to only partition that space.
+# This is only honoured if partman-auto/method (below) is not set.
+# Alternatives: custom, some_device, some_device_crypto, some_device_lvm.
+#d-i partman-auto/init_automatically_partition select biggest_free
+
+# Alternatively, you may specify a disk to partition. If the system has only
+# one disk the installer will default to using that, but otherwise the device
+# name must be given in traditional, non-devfs format (so e.g. /dev/sda
+# and not e.g. /dev/discs/disc0/disc).
+# For example, to use the first SCSI/SATA hard disk:
+#d-i partman-auto/disk string /dev/sda
+# In addition, you'll need to specify the method to use.
+# The presently available methods are:
+# - regular: use the usual partition types for your architecture
+# - lvm: use LVM to partition the disk
+# - crypto: use LVM within an encrypted partition
+#d-i partman-auto/method string lvm
+d-i partman-auto/method string regular
+
+# If one of the disks that are going to be automatically partitioned
+# contains an old LVM configuration, the user will normally receive a
+# warning. This can be preseeded away...
+#d-i partman-lvm/device_remove_lvm boolean true
+# The same applies to pre-existing software RAID array:
+#d-i partman-md/device_remove_md boolean true
+# And the same goes for the confirmation to write the lvm partitions.
+#d-i partman-lvm/confirm boolean true
+#d-i partman-lvm/confirm_nooverwrite boolean true
+
+# For LVM partitioning, you can select how much of the volume group to use
+# for logical volumes.
+#d-i partman-auto-lvm/guided_size string max
+#d-i partman-auto-lvm/guided_size string 10GB
+#d-i partman-auto-lvm/guided_size string 50%
+
+# You can choose one of the three predefined partitioning recipes:
+# - atomic: all files in one partition
+# - home: separate /home partition
+# - multi: separate /home, /var, and /tmp partitions
+#d-i partman-auto/choose_recipe select atomic
+
+# Or provide a recipe of your own...
+# If you have a way to get a recipe file into the d-i environment, you can
+# just point at it.
+#d-i partman-auto/expert_recipe_file string /hd-media/recipe
+
+d-i partman-basicfilesystems/no_swap boolean false
+d-i partman-auto/expert_recipe string myroot :: 1000 50 -1 ext4 \
+ $primary{ } $bootable{ } method{ format } \
+ format{ } use_filesystem{ } filesystem{ ext4 } \
+ mountpoint{ / } \
+ .
+d-i partman-auto/choose_recipe select myroot
+
+# If not, you can put an entire recipe into the preconfiguration file in one
+# (logical) line. This example creates a small /boot partition, suitable
+# swap, and uses the rest of the space for the root partition:
+#d-i partman-auto/expert_recipe string \
+# boot-root :: \
+# 40 50 100 ext3 \
+# $primary{ } $bootable{ } \
+# method{ format } format{ } \
+# use_filesystem{ } filesystem{ ext3 } \
+# mountpoint{ /boot } \
+# . \
+# 500 10000 1000000000 ext3 \
+# method{ format } format{ } \
+# use_filesystem{ } filesystem{ ext3 } \
+# mountpoint{ / } \
+# . \
+# 64 512 300% linux-swap \
+# method{ swap } format{ } \
+# .
+
+# If you just want to change the default filesystem from ext3 to something
+# else, you can do that without providing a full recipe.
+#d-i partman/default_filesystem string ext4
+
+# The full recipe format is documented in the file partman-auto-recipe.txt
+# included in the 'debian-installer' package or available from D-I source
+# repository. This also documents how to specify settings such as file
+# system labels, volume group names and which physical devices to include
+# in a volume group.
+
+# This makes partman automatically partition without confirmation, provided
+# that you told it what to do using one of the methods above.
+d-i partman-partitioning/confirm_write_new_label boolean true
+d-i partman/choose_partition select finish
+d-i partman/confirm boolean true
+d-i partman/confirm_nooverwrite boolean true
+
+## Partitioning using RAID
+# The method should be set to "raid".
+#d-i partman-auto/method string raid
+# Specify the disks to be partitioned. They will all get the same layout,
+# so this will only work if the disks are the same size.
+#d-i partman-auto/disk string /dev/sda /dev/sdb
+
+# Next you need to specify the physical partitions that will be used.
+#d-i partman-auto/expert_recipe string \
+# multiraid :: \
+# 1000 5000 4000 raid \
+# $primary{ } method{ raid } \
+# . \
+# 64 512 300% raid \
+# method{ raid } \
+# . \
+# 500 10000 1000000000 raid \
+# method{ raid } \
+# .
+
+# Last you need to specify how the previously defined partitions will be
+# used in the RAID setup. Remember to use the correct partition numbers
+# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported;
+# devices are separated using "#".
+# Parameters are:
+# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
+# <devices> <sparedevices>
+
+#d-i partman-auto-raid/recipe string \
+# 1 2 0 ext3 / \
+# /dev/sda1#/dev/sdb1 \
+# . \
+# 1 2 0 swap - \
+# /dev/sda5#/dev/sdb5 \
+# . \
+# 0 2 0 ext3 /home \
+# /dev/sda6#/dev/sdb6 \
+# .
+
+# For additional information see the file partman-auto-raid-recipe.txt
+# included in the 'debian-installer' package or available from D-I source
+# repository.
+
+# This makes partman automatically partition without confirmation.
+d-i partman-md/confirm boolean true
+d-i partman-partitioning/confirm_write_new_label boolean true
+d-i partman/choose_partition select finish
+d-i partman/confirm boolean true
+d-i partman/confirm_nooverwrite boolean true
+
+## Controlling how partitions are mounted
+# The default is to mount by UUID, but you can also choose "traditional" to
+# use traditional device names, or "label" to try filesystem labels before
+# falling back to UUIDs.
+#d-i partman/mount_style select uuid
+d-i partman/mount_style select traditional
+
+### Base system installation
+# Configure a path to the preconfigured base filesystem. This can be used to
+# specify a path for the installer to retrieve the filesystem image that will
+# be deployed to disk and used as a base system for the installation.
+#d-i live-installer/net-image string /install/filesystem.squashfs
+
+# Configure APT to not install recommended packages by default. Use of this
+# option can result in an incomplete system and should only be used by very
+# experienced users.
+#d-i base-installer/install-recommends boolean false
+
+# The kernel image (meta) package to be installed; "none" can be used if no
+# kernel is to be installed.
+#d-i base-installer/kernel/image string linux-generic
+
+### Apt setup
+# You can choose to install restricted and universe software, or to install
+# software from the backports repository.
+#d-i apt-setup/restricted boolean true
+#d-i apt-setup/universe boolean true
+#d-i apt-setup/backports boolean true
+# Uncomment this if you don't want to use a network mirror.
+d-i apt-setup/use_mirror boolean false
+d-i apt-setup/services-select-ubuntu multiselect ""
+
+# Select which update services to use; define the mirrors to be used.
+# Values shown below are the normal defaults.
+#d-i apt-setup/services-select multiselect security
+#d-i apt-setup/security_host string security.ubuntu.com
+#d-i apt-setup/security_path string /ubuntu
+
+# Additional repositories, local[0-9] available
+#d-i apt-setup/local0/repository string \
+# http://local.server/ubuntu trusty main
+#d-i apt-setup/local0/comment string local server
+# Enable deb-src lines
+#d-i apt-setup/local0/source boolean true
+# URL to the public key of the local repository; you must provide a key or
+# apt will complain about the unauthenticated repository and so the
+# sources.list line will be left commented out
+#d-i apt-setup/local0/key string http://local.server/key
+
+# By default the installer requires that repositories be authenticated
+# using a known gpg key. This setting can be used to disable that
+# authentication. Warning: Insecure, not recommended.
+#d-i debian-installer/allow_unauthenticated boolean true
+
+# Uncomment this to add multiarch configuration for i386
+#d-i apt-setup/multiarch string i386
+
+
+### Package selection
+#tasksel tasksel/first multiselect ubuntu-desktop
+#tasksel tasksel/first multiselect lamp-server, print-server
+#tasksel tasksel/first multiselect kubuntu-desktop
+tasksel tasksel/first multiselect server
+tasksel tasksel/first multiselect ssh-server
+
+# Individual additional packages to install
+#d-i pkgsel/include string openssh-server build-essential
+d-i pkgsel/include string openssh-server
+# Whether to upgrade packages after debootstrap.
+# Allowed values: none, safe-upgrade, full-upgrade
+d-i pkgsel/upgrade select none
+
+# Language pack selection
+#d-i pkgsel/language-packs multiselect de, en, zh
+
+# Policy for applying updates. May be "none" (no automatic updates),
+# "unattended-upgrades" (install security updates automatically), or
+# "landscape" (manage system with Landscape).
+d-i pkgsel/update-policy select none
+
+# Some versions of the installer can report back on what software you have
+# installed, and what software you use. The default is not to report back,
+# but sending reports helps the project determine what software is most
+# popular and include it on CDs.
+#popularity-contest popularity-contest/participate boolean false
+
+# By default, the system's locate database will be updated after the
+# installer has finished installing most packages. This may take a while, so
+# if you don't want it, you can set this to "false" to turn it off.
+d-i pkgsel/updatedb boolean false
+
+### Boot loader installation
+# Grub is the default boot loader (for x86). If you want lilo installed
+# instead, uncomment this:
+#d-i grub-installer/skip boolean true
+# To also skip installing lilo, and install no bootloader, uncomment this
+# too:
+#d-i lilo-installer/skip boolean true
+
+
+# This is fairly safe to set, it makes grub install automatically to the MBR
+# if no other operating system is detected on the machine.
+d-i grub-installer/only_debian boolean true
+
+# This one makes grub-installer install to the MBR if it also finds some other
+# OS, which is less safe as it might not be able to boot that other OS.
+d-i grub-installer/with_other_os boolean true
+
+# Due notably to potential USB sticks, the location of the MBR can not be
+# determined safely in general, so this needs to be specified:
+#d-i grub-installer/bootdev string /dev/sda
+# To install to the first device (assuming it is not a USB stick):
+#d-i grub-installer/bootdev string default
+
+# Alternatively, if you want to install to a location other than the mbr,
+# uncomment and edit these lines:
+#d-i grub-installer/only_debian boolean false
+#d-i grub-installer/with_other_os boolean false
+#d-i grub-installer/bootdev string (hd0,1)
+# To install grub to multiple disks:
+#d-i grub-installer/bootdev string (hd0,1) (hd1,1) (hd2,1)
+
+# Optional password for grub, either in clear text
+#d-i grub-installer/password password r00tme
+#d-i grub-installer/password-again password r00tme
+# or encrypted using an MD5 hash, see grub-md5-crypt(8).
+#d-i grub-installer/password-crypted password [MD5 hash]
+
+# Use the following option to add additional boot parameters for the
+# installed system (if supported by the bootloader installer).
+# Note: options passed to the installer will be added automatically.
+#d-i debian-installer/add-kernel-opts string nousb
+
+### Finishing up the installation
+# During installations from serial console, the regular virtual consoles
+# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next
+# line to prevent this.
+#d-i finish-install/keep-consoles boolean true
+
+# Avoid that last message about the install being complete.
+d-i finish-install/reboot_in_progress note
+
+# This will prevent the installer from ejecting the CD during the reboot,
+# which is useful in some situations.
+#d-i cdrom-detect/eject boolean false
+
+# This is how to make the installer shutdown when finished, but not
+# reboot into the installed system.
+#d-i debian-installer/exit/halt boolean true
+# This will power off the machine instead of just halting it.
+#d-i debian-installer/exit/poweroff boolean true
+
+### Preseeding other packages
+# Depending on what software you choose to install, or if things go wrong
+# during the installation process, it's possible that other questions may
+# be asked. You can preseed those too, of course. To get a list of every
+# possible question that could be asked during an install, do an
+# installation, and then run these commands:
+# debconf-get-selections --installer > file
+# debconf-get-selections >> file
+
+
+#### Advanced options
+### Running custom commands during the installation
+# d-i preseeding is inherently not secure. Nothing in the installer checks
+# for attempts at buffer overflows or other exploits of the values of a
+# preconfiguration file like this one. Only use preconfiguration files from
+# trusted locations! To drive that home, and because it's generally useful,
+# here's a way to run any shell command you'd like inside the installer,
+# automatically.
+
+# This first command is run as early as possible, just after
+# preseeding is read.
+#d-i preseed/early_command string anna-install some-udeb
+# This command is run immediately before the partitioner starts. It may be
+# useful to apply dynamic partitioner preseeding that depends on the state
+# of the disks (which may not be visible when preseed/early_command runs).
+#d-i partman/early_command \
+# string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
+# This command is run just before the install finishes, but when there is
+# still a usable /target directory. You can chroot to /target and use it
+# directly, or use the apt-install and in-target commands to easily install
+# packages and run commands in the target system.
+#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh
+
+d-i preseed/late_command string \
+ in-target sed -i /etc/ssh/sshd_config -e 's/[# ]*PermitRootLogin.*/PermitRootLogin yes/' ;
diff --git a/resources/tools/disk-image-builder/ubuntu/listmaker/ubuntu-14.04.4.json b/resources/tools/disk-image-builder/ubuntu/listmaker/ubuntu-14.04.4.json
new file mode 100644
index 0000000000..f4c1a70545
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/listmaker/ubuntu-14.04.4.json
@@ -0,0 +1,57 @@
+{
+ "_c": "Ubuntu 14.04.4 ISO URL at the time of creation of this file (05/2016)",
+ "_c": "was http://releases.ubuntu.com/14.04/ubuntu-14.04.4-server-amd64.iso .",
+ "_c": "",
+ "_c": "If and when 14.04.4 becomes superseded, this URL will likely change",
+ "_c": "to:",
+ "_c": "http://old-releases.ubuntu.com/releases/14.04.4/ubuntu-14.04.4-server-amd64.iso",
+ "variables": {
+ "release": null,
+ "outputdir": null,
+ "virl_user": "{{env `VIRL_USER`}}",
+ "virl_password": "{{env `VIRL_PASSWORD`}}"
+ },
+ "builders": [
+ {
+ "name": "{{user `release`}}",
+ "type": "qemu",
+ "iso_url": "http://releases.ubuntu.com/14.04/ubuntu-14.04.4-server-amd64.iso",
+ "iso_checksum": "2ac1f3e0de626e54d05065d6f549fa3a",
+ "iso_checksum_type": "md5",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "shutdown_command": "echo 'packer' | shutdown -P now",
+ "disk_size": "4096",
+ "http_directory": "html",
+ "iso_target_path" : "build/ubuntu-14.04.4-server-amd64.iso",
+ "output_directory": "{{user `outputdir`}}",
+ "headless": "true",
+ "boot_command":
+ [
+ "<esc><esc><enter><wait>",
+ "/install/vmlinuz noapic ",
+ "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ",
+ "debian-installer=en_US auto locale=en_US kbd-chooser/method=us ",
+ "hostname=csit ",
+ "fb=false debconf/frontend=noninteractive ",
+ "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA ",
+ "keyboard-configuration/variant=USA console-setup/ask_detect=false ",
+ "initrd=/install/initrd.gz -- <enter>"
+ ]
+ }
+ ],
+ "post-processors": [
+ {
+ "type": "shell-local",
+ "script": "scripts-local/upload-image-to-virl.sh",
+ "keep_input_artifact": true,
+ "environment_vars":
+ [
+ "VIRL_USER={{user `virl_user`}}",
+ "VIRL_PASSWORD={{user `virl_password`}}",
+ "VIRL_IMAGE_SUBTYPE=server",
+ "VIRL_IMAGE_NAME={{user `release`}}"
+ ]
+ }
+ ]
+}
diff --git a/resources/tools/disk-image-builder/ubuntu/listmaker/virl-listmaker.yaml b/resources/tools/disk-image-builder/ubuntu/listmaker/virl-listmaker.yaml
new file mode 100644
index 0000000000..63019011bd
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/listmaker/virl-listmaker.yaml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<topology xmlns="http://www.cisco.com/VIRL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="0.9" xsi:schemaLocation="http://www.cisco.com/VIRL https://raw.github.com/CiscoVIRL/schema/v0.9/virl.xsd">
+ <extensions>
+ <entry key="management_network" type="String">flat</entry>
+ </extensions>
+ <node name="listmaker" type="SIMPLE" subtype="server" location="570,238" vmImage="server-csit-ubuntu-14.04.4-listmaker">
+ <extensions>
+ <entry key="config" type="String">UNUSED</entry>
+ <entry key="Auto-generate config" type="Boolean">false</entry>
+ </extensions>
+ </node>
+</topology>
diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/apt-packages.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/apt-packages.txt
new file mode 100644
index 0000000000..1edf040c64
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/apt-packages.txt
@@ -0,0 +1,195 @@
+'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/libs/libseccomp/libseccomp2_2.1.1-1+syseleven1_amd64.deb' libseccomp2_2.1.1-1+syseleven1_amd64.deb 26344 MD5Sum:3ceb99432357bce67ba151a859aa60da
+'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-system-common_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-system-common_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 294740 MD5Sum:ebf2345f6496e4da73098d7f516bbf8b
+'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-system-x86_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-system-x86_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 2181682 MD5Sum:6b43a70d002ba1a46f9b8e12e591c849
+'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-utils_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-utils_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 518404 MD5Sum:20bc3e2ff37af86bd8e61c96e6569672
+'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/s/seabios/seabios_1.7.5-1+syseleven1_all.deb' seabios_1.7.5-1+syseleven1_all.deb 111880 MD5Sum:0cd53324914bb2e198cefef23c4771a0
+'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/s/spice/libspice-server1_0.12.5-1+syseleven1_amd64.deb' libspice-server1_0.12.5-1+syseleven1_amd64.deb 326044 MD5Sum:7574c7ba91816a2739e8489148c016bb
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-1_amd64.deb' acl_2.2.52-1_amd64.deb 43790 MD5Sum:ac8db6aa2095dfd83758db34cf31285a
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.0.27.2-3ubuntu7_amd64.deb' libasound2_1.0.27.2-3ubuntu7_amd64.deb 327374 MD5Sum:68d7619e0a70770c5feef628f8296409
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.0.27.2-3ubuntu7_all.deb' libasound2-data_1.0.27.2-3ubuntu7_all.deb 26264 MD5Sum:1b78d6d03ed4303e843ba2c5bae3bc53
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.0.1ubuntu2.14_amd64.deb' apt_1.0.1ubuntu2.14_amd64.deb 954540 MD5Sum:8615062e5fa0e1c9140bc99443f93e57
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-transport-https_1.0.1ubuntu2.14_amd64.deb' apt-transport-https_1.0.1ubuntu2.14_amd64.deb 25042 MD5Sum:de9d0feaaf95f9203a4e6050fcc838a1
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-utils_1.0.1ubuntu2.14_amd64.deb' apt-utils_1.0.1ubuntu2.14_amd64.deb 171560 MD5Sum:9a67fdeca283e5fe14374becd459eacc
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-inst1.5_1.0.1ubuntu2.14_amd64.deb' libapt-inst1.5_1.0.1ubuntu2.14_amd64.deb 58610 MD5Sum:65bd48b1df912735bd0f370ee7d85fac
+'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg4.12_1.0.1ubuntu2.14_amd64.deb' libapt-pkg4.12_1.0.1ubuntu2.14_amd64.deb 637710 MD5Sum:76ed008847b63af01ff64d217487f7de
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bash-completion/bash-completion_2.1-4ubuntu0.2_all.deb' bash-completion_1%3a2.1-4ubuntu0.2_all.deb 153330 MD5Sum:3283490e6717d124ea90a34ba2a2877c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/bind9-host_9.9.5.dfsg-3ubuntu0.8_amd64.deb' bind9-host_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 46348 MD5Sum:8b2eba4caeb6d1b92f846643190bd567
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/dnsutils_9.9.5.dfsg-3ubuntu0.8_amd64.deb' dnsutils_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 96896 MD5Sum:dc2d10121066a8e712d1f5b65e1ce123
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libbind9-90_9.9.5.dfsg-3ubuntu0.8_amd64.deb' libbind9-90_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 21986 MD5Sum:7a85ffc7bbc3d0ac6da50af50a2604d0
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns100_9.9.5.dfsg-3ubuntu0.8_amd64.deb' libdns100_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 644504 MD5Sum:4c70332edace7476da544f43fd86d978
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc95_9.9.5.dfsg-3ubuntu0.8_amd64.deb' libisc95_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 147480 MD5Sum:f73fb67219f986ae5a246c14f3afc517
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisccc90_9.9.5.dfsg-3ubuntu0.8_amd64.deb' libisccc90_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 15678 MD5Sum:d06d6eebd4d82d3c6115e6beb1b426f8
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisccfg90_9.9.5.dfsg-3ubuntu0.8_amd64.deb' libisccfg90_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 36162 MD5Sum:0c74c73549711aa0e376f626697d16a3
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/liblwres90_9.9.5.dfsg-3ubuntu0.8_amd64.deb' liblwres90_1%3a9.9.5.dfsg-3ubuntu0.8_amd64.deb 32760 MD5Sum:4f3188de2e89efbf62d8128c0319f089
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.24-5ubuntu14.1_amd64.deb' binutils_2.24-5ubuntu14.1_amd64.deb 2080900 MD5Sum:85dd95077b946a274f9814639eba4d06
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/biosdevname/biosdevname_0.4.1-0ubuntu6.3_amd64.deb' biosdevname_0.4.1-0ubuntu6.3_amd64.deb 20284 MD5Sum:bc837d60b1c558c6424309a446420b0d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_4.101-0ubuntu13.1_amd64.deb' libbluetooth3_4.101-0ubuntu13.1_amd64.deb 53478 MD5Sum:0577a4e8b377f3751b018494096df9e4
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.54/libboost-system1.54.0_1.54.0-4ubuntu3.1_amd64.deb' libboost-system1.54.0_1.54.0-4ubuntu3.1_amd64.deb 10128 MD5Sum:2a5872be9fcc3cc0a51d9ec0d42c41a7
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.54/libboost-thread1.54.0_1.54.0-4ubuntu3.1_amd64.deb' libboost-thread1.54.0_1.54.0-4ubuntu3.1_amd64.deb 26542 MD5Sum:2e7b4afdd0d85037864a2c3e3ef19999
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.0-2ubuntu2_amd64.deb' libbrlapi0.6_5.0-2ubuntu2_amd64.deb 20910 MD5Sum:d0072983318e559dc57fea88c494ed33
+'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_11.6ubuntu6_amd64.deb' build-essential_11.6ubuntu6_amd64.deb 4838 MD5Sum:6fa3d082885a7440d512236685cd24fd
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates/ca-certificates_20160104ubuntu0.14.04.1_all.deb' ca-certificates_20160104ubuntu0.14.04.1_all.deb 189806 MD5Sum:e594e76f225119f35f4bc3266d7ef758
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_0.80.11-0ubuntu1.14.04.1_amd64.deb' librados2_0.80.11-0ubuntu1.14.04.1_amd64.deb 1430556 MD5Sum:88d1b2079b7bd1a9a2d99e05fc88bf02
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_0.80.11-0ubuntu1.14.04.1_amd64.deb' librbd1_0.80.11-0ubuntu1.14.04.1_amd64.deb 322958 MD5Sum:684055975b3f6d7f9cbf42afc720989d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cheetah/python-cheetah_2.4.4-3.fakesyncbuild1_amd64.deb' python-cheetah_2.4.4-3.fakesyncbuild1_amd64.deb 143868 MD5Sum:800d75a71e9022b10c40f6019d7fa69d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloog/libcloog-isl4_0.18.2-1_amd64.deb' libcloog-isl4_0.18.2-1_amd64.deb 57502 MD5Sum:da71de63b0e24eb02afb817c0b285d6a
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.5-0ubuntu1.18_all.deb' cloud-init_0.7.5-0ubuntu1.18_all.deb 197824 MD5Sum:c6f1e7b92391c6acb9300f8fef580e04
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu9.2_all.deb' cloud-guest-utils_0.27-0ubuntu9.2_all.deb 13782 MD5Sum:dbdad01ef9b50575b3bbbdc8257c620a
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python-configobj_4.7.2+ds-5build1_all.deb' python-configobj_4.7.2+ds-5build1_all.deb 174154 MD5Sum:e22c1f8dfb0ca0d36441c3166639beaa
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.21-1ubuntu5.4_amd64.deb' coreutils_8.21-1ubuntu5.4_amd64.deb 1090622 MD5Sum:10a2318be86f38a6ed113e16aabaa76b
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpio/cpio_2.11+dfsg-1ubuntu1.2_amd64.deb' cpio_2.11+dfsg-1ubuntu1.2_amd64.deb 73806 MD5Sum:8c382d99c773b3af31664e587b84a6b9
+'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu4_amd64.deb' cpu-checker_0.7-0ubuntu4_amd64.deb 6834 MD5Sum:4369a69e41e5b78ab7a4623405455443
+'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-1_amd64.deb' libfdt1_1.4.0+dfsg-1_amd64.deb 15678 MD5Sum:5dd80e05348eec241f62ff8dd7d2e8f2
+'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-1.1ubuntu5.14.04.5_all.deb' dkms_2.2.0.3-1.1ubuntu5.14.04.5_all.deb 65394 MD5Sum:2d543ccc913282f2958fe61690a92931
+'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.6_amd64.deb' dpkg_1.17.5ubuntu5.6_amd64.deb 1956090 MD5Sum:4c89af9b3a8f6c35db830a22186cc39c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.17.5ubuntu5.6_all.deb' dpkg-dev_1.17.5ubuntu5.6_all.deb 726174 MD5Sum:76e57d5b9b4610c1b7b4e7669c2077ac
+'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.17.5ubuntu5.6_all.deb' libdpkg-perl_1.17.5ubuntu5.6_all.deb 178978 MD5Sum:667eca12ba2191e59a494dc6f52188e9
+'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6-dev_2.19-0ubuntu6.7_amd64.deb' libc6-dev_2.19-0ubuntu6.7_amd64.deb 1910076 MD5Sum:55d1bb2350277e65ce6d0d1532cd982d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-dev-bin_2.19-0ubuntu6.7_amd64.deb' libc-dev-bin_2.19-0ubuntu6.7_amd64.deb 68998 MD5Sum:e72990dc9716b956b9012d526b7e60ff
+'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1_2.1.0-4ubuntu1.2_amd64.deb' libexpat1_2.1.0-4ubuntu1.2_amd64.deb 71092 MD5Sum:a7ba68312efc279f2d5199afadc4adbe
+'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-4ubuntu1.2_amd64.deb' libexpat1-dev_2.1.0-4ubuntu1.2_amd64.deb 115458 MD5Sum:0a1295e87f3b7efb4c66f53de3336848
+'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20-3ubuntu2_amd64.deb' fakeroot_1.20-3ubuntu2_amd64.deb 55026 MD5Sum:fad29881d632a463f5235f399fa65a14
+'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20-3ubuntu2_amd64.deb' libfakeroot_1.20-3ubuntu2_amd64.deb 25392 MD5Sum:856c7401d7d5a63ea231f706c18d9261
+'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.0-2ubuntu0.14.04.1_amd64.deb' libflac8_1.3.0-2ubuntu0.14.04.1_amd64.deb 80170 MD5Sum:bbd48c917a12d425f0e14873575bc64c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/cpp-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' cpp-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 4595210 MD5Sum:c87a404428865790862aeb6195811066
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/g++-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' g++-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 18134574 MD5Sum:ffc4c3bc3fe036fd18e79399caea1586
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/gcc-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' gcc-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 5046702 MD5Sum:c53635e53f577687409b4c3c93f4da80
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/gcc-4.8-base_4.8.4-2ubuntu1~14.04.3_amd64.deb' gcc-4.8-base_4.8.4-2ubuntu1~14.04.3_amd64.deb 16192 MD5Sum:691b4cb367c62b79511541a3cee41fda
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libasan0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libasan0_4.8.4-2ubuntu1~14.04.3_amd64.deb 63060 MD5Sum:ff04bb046aeec86af2bb90c5d90a166c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libatomic1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libatomic1_4.8.4-2ubuntu1~14.04.3_amd64.deb 8636 MD5Sum:ec6ce0fb6e66e8b8c95534ab9e77a67e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libgcc-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb' libgcc-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb 1688000 MD5Sum:69ff74311eecda1487d0f96b14af0b7c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libgomp1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libgomp1_4.8.4-2ubuntu1~14.04.3_amd64.deb 23124 MD5Sum:8f95195693e2cbb56825fd9b2b9ffca0
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libitm1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libitm1_4.8.4-2ubuntu1~14.04.3_amd64.deb 28506 MD5Sum:52e717ed8662a3986997412f42abc297
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libquadmath0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libquadmath0_4.8.4-2ubuntu1~14.04.3_amd64.deb 126028 MD5Sum:f541cc61c3feaa74098bdb9970ed12b6
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb' libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb 1052564 MD5Sum:7657e54922455ae36c7b2f7228427aec
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb' libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb 258956 MD5Sum:3fe9099e0064fa8030f047ff38e075c2
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libtsan0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libtsan0_4.8.4-2ubuntu1~14.04.3_amd64.deb 94872 MD5Sum:c4232ca2be66b95d74e8823a9868a9b4
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_4.8.2-1ubuntu6_amd64.deb' cpp_4%3a4.8.2-1ubuntu6_amd64.deb 27452 MD5Sum:2ced23b24cf068b16b5a69222506fd79
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_4.8.2-1ubuntu6_amd64.deb' g++_4%3a4.8.2-1ubuntu6_amd64.deb 1490 MD5Sum:7332a4e9116b821e167a3d0236ca413a
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_4.8.2-1ubuntu6_amd64.deb' gcc_4%3a4.8.2-1ubuntu6_amd64.deb 5098 MD5Sum:83b25d71df6df1c47a4b983596896f0b
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_0.8.8-1ubuntu0.1_amd64.deb' gdisk_0.8.8-1ubuntu0.1_amd64.deb 185450 MD5Sum:6e9ed16eaca8d87dc22cf4918f95cb2c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_1.9.1-1ubuntu0.3_amd64.deb' git_1%3a1.9.1-1ubuntu0.3_amd64.deb 2585532 MD5Sum:7ae18fa4b16c33b3ed506e23e7f26779
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_1.9.1-1ubuntu0.3_all.deb' git-man_1%3a1.9.1-1ubuntu0.3_all.deb 699150 MD5Sum:b9614019a1917fad0ff0edc6ddd53b91
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gmp/libgmp10_5.1.3+dfsg-1ubuntu1_amd64.deb' libgmp10_2%3a5.1.3+dfsg-1ubuntu1_amd64.deb 218280 MD5Sum:5a25bb81aa2e0ca83e2d349d58b435d5
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnutls26/libgnutls26_2.12.23-12ubuntu2.5_amd64.deb' libgnutls26_2.12.23-12ubuntu2.5_amd64.deb 393294 MD5Sum:9e6ad9b80855df0f9b74ec18b9fe860d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnutls26/libgnutls-openssl27_2.12.23-12ubuntu2.5_amd64.deb' libgnutls-openssl27_2.12.23-12ubuntu2.5_amd64.deb 18364 MD5Sum:77d399ac308dd0e9a58acc30e8959e76
+'http://us.archive.ubuntu.com/ubuntu/pool/main/h/html5lib/python-html5lib_0.999-3~ubuntu1_all.deb' python-html5lib_0.999-3~ubuntu1_all.deb 83470 MD5Sum:93c4140d32e1addb8231a3e0be557c93
+'http://us.archive.ubuntu.com/ubuntu/pool/main/h/html5lib/python-html5lib-whl_0.999-3~ubuntu1_all.deb' python-html5lib-whl_0.999-3~ubuntu1_all.deb 109460 MD5Sum:bc6bd5baa70ace380513925f749857fa
+'http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu52_52.1-3ubuntu0.4_amd64.deb' libicu52_52.1-3ubuntu0.4_amd64.deb 6751826 MD5Sum:ed4da162328dc75beb75e38ca291c959
+'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.7.47.2ubuntu4.4_amd64.deb' ifupdown_0.7.47.2ubuntu4.4_amd64.deb 53092 MD5Sum:49c7118f0bd254b1196363ad727dcde7
+'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.103ubuntu4.3_all.deb' initramfs-tools_0.103ubuntu4.3_all.deb 44414 MD5Sum:9c7a8c4407077e6d1db03480897a0e92
+'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.103ubuntu4.3_amd64.deb' initramfs-tools-bin_0.103ubuntu4.3_amd64.deb 9172 MD5Sum:27c40fd32821bfb627e6301c44eebbfc
+'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20131111.c3d1e78-2ubuntu1.1_all.deb' ipxe-qemu_1.0.0+git-20131111.c3d1e78-2ubuntu1.1_all.deb 509898 MD5Sum:2ed810c34ce0682174eb97461673c00e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl10_0.12.2-1_amd64.deb' libisl10_0.12.2-1_amd64.deb 419218 MD5Sum:b9756a5cce1ecd2d56652779d9e3b757
+'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.6-1_amd64.deb' keyutils_1.5.6-1_amd64.deb 33588 MD5Sum:a49da8cb9cc16bdaf1ef8b205bf99d2e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.3-0ubuntu1.14.04.1_amd64.deb' klibc-utils_2.0.3-0ubuntu1.14.04.1_amd64.deb 106972 MD5Sum:4e1676466b8275575a78545c8702ec80
+'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.3-0ubuntu1.14.04.1_amd64.deb' libklibc_2.0.3-0ubuntu1.14.04.1_amd64.deb 40768 MD5Sum:733ef1d7bb06bc206417e6e32a95f3b7
+'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.109-4_amd64.deb' libaio1_0.3.109-4_amd64.deb 6364 MD5Sum:cd9da2f52a5d7713e5080c5ed6916a41
+'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.02-3_all.deb' libalgorithm-diff-perl_1.19.02-3_all.deb 49964 MD5Sum:7462f70e9e9b691ca4a4657371d6ba8e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb' libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb 12572 MD5Sum:a1bd654bf2b8f30d464a6f95225a0744
+'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-2_all.deb' libalgorithm-merge-perl_0.08-2_all.deb 12672 MD5Sum:bf1355aea7ab249fcd344cf0c692bc6c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-4ubuntu2_amd64.deb' libasyncns0_0.8-4ubuntu2_amd64.deb 11886 MD5Sum:bf233bc958e37dab60c0f1ab7f8c6bf0
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta18-1ubuntu5_amd64.deb' libcaca0_0.99.beta18-1ubuntu5_amd64.deb 202162 MD5Sum:2532fc55507b526751257c826e6b1b43
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_26-2_amd64.deb' eatmydata_26-2_amd64.deb 8034 MD5Sum:a12811bc18802ca88eaac1c361c49dd1
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.1_all.deb' liberror-perl_0.17-1.1_all.deb 21062 MD5Sum:4988e40e65eeba03317411bfdd52b76c
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb' libevent-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb 126144 MD5Sum:66bae54dc127761b5d044d20a49c84c4
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.14-2build1_amd64.deb' libfile-fcntllock-perl_0.14-2build1_amd64.deb 15932 MD5Sum:18813758778ece61bcdf84018218fc1d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgssglue/libgssglue1_0.4-2ubuntu1_amd64.deb' libgssglue1_0.4-2ubuntu1_amd64.deb 19710 MD5Sum:08250dff6de699fceff270123f609b49
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.3.0-0ubuntu2_amd64.deb' libjpeg-turbo8_1.3.0-0ubuntu2_amd64.deb 104020 MD5Sum:9b8b32831e8332714737af0342f57b28
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnl3/libnl-3-200_3.2.21-1ubuntu1.1_amd64.deb' libnl-3-200_3.2.21-1ubuntu1.1_amd64.deb 44692 MD5Sum:6c4243af0e65109d4b4206f472674c7d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnl3/libnl-genl-3-200_3.2.21-1ubuntu1.1_amd64.deb' libnl-genl-3-200_3.2.21-1ubuntu1.1_amd64.deb 10242 MD5Sum:76ef0be047534f619ed8f86b9fbf8a15
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.1-1ubuntu1_amd64.deb' libogg0_1.3.1-1ubuntu1_amd64.deb 17036 MD5Sum:a6411133fd6d72d08bbcb265a7f31103
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15-8ubuntu1.1_amd64.deb' libsdl1.2debian_1.2.15-8ubuntu1.1_amd64.deb 162322 MD5Sum:063b125221dda816ec3554eea53ce52e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-7ubuntu2.1_amd64.deb' libsndfile1_1.0.25-7ubuntu2.1_amd64.deb 136292 MD5Sum:a01199628faa5c1ec2b97c167c25c0e9
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtasn1-6/libtasn1-6_3.4-3ubuntu0.4_amd64.deb' libtasn1-6_3.4-3ubuntu0.4_amd64.deb 43616 MD5Sum:59657d27d1a7e32e9549b5a21514d877
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.2-5ubuntu2_amd64.deb' libtirpc1_0.2.2-5ubuntu2_amd64.deb 71258 MD5Sum:acc1c8e0345c8c3e53ba94a59a4729d8
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.2-1.3ubuntu1_amd64.deb' libvorbis0a_1.3.2-1.3ubuntu1_amd64.deb 87166 MD5Sum:e89e05f389fdaa1b834803a08c9213a4
+'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.2-1.3ubuntu1_amd64.deb' libvorbisenc2_1.3.2-1.3ubuntu1_amd64.deb 84546 MD5Sum:fbdffecfc0a3f0dc45ec2480f54ea251
+'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.4-3ubuntu3.1_amd64.deb' libyaml-0-2_0.1.4-3ubuntu3.1_amd64.deb 48066 MD5Sum:4dcc359331403252136be3490c923fc9
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.127.22_all.deb' linux-firmware_1.127.22_all.deb 33190334 MD5Sum:7d5cef69c2cbe90206be4789892b8b94
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_3.13.0-86.131_amd64.deb' linux-libc-dev_3.13.0-86.131_amd64.deb 779312 MD5Sum:e7979ded82504e2b6a63f9065569fe0a
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-headers-4.2.0-36_4.2.0-36.42~14.04.1_all.deb' linux-headers-4.2.0-36_4.2.0-36.42~14.04.1_all.deb 9587752 MD5Sum:b1bbc76655eb0e2ba2e3e529e9d9debe
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-headers-4.2.0-36-generic_4.2.0-36.42~14.04.1_amd64.deb' linux-headers-4.2.0-36-generic_4.2.0-36.42~14.04.1_amd64.deb 769578 MD5Sum:fc7cb0b62dac701a66c9b0194212ad34
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-image-4.2.0-36-generic_4.2.0-36.42~14.04.1_amd64.deb' linux-image-4.2.0-36-generic_4.2.0-36.42~14.04.1_amd64.deb 17219920 MD5Sum:940897fb5d8f56e1fc5708194d73f902
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-image-extra-4.2.0-36-generic_4.2.0-36.42~14.04.1_amd64.deb' linux-image-extra-4.2.0-36-generic_4.2.0-36.42~14.04.1_amd64.deb 38366786 MD5Sum:482c28c0eb23cc75b86dbaefbdb601fb
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-generic-lts-wily_4.2.0.36.29_amd64.deb' linux-generic-lts-wily_4.2.0.36.29_amd64.deb 1804 MD5Sum:b9f04cda4963bacc5af6b4852102479a
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-headers-generic-lts-wily_4.2.0.36.29_amd64.deb' linux-headers-generic-lts-wily_4.2.0.36.29_amd64.deb 2272 MD5Sum:2ee879d19061256588b4e1db7ea70ba3
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-image-generic-lts-wily_4.2.0.36.29_amd64.deb' linux-image-generic-lts-wily_4.2.0.36.29_amd64.deb 2302 MD5Sum:b781bdd84696e5c766d22719ed606cc3
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lsb/lsb-base_4.1+Debian11ubuntu6.1_all.deb' lsb-base_4.1+Debian11ubuntu6.1_all.deb 12970 MD5Sum:2834c99418122f0675752389058621e9
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lsb/lsb-release_4.1+Debian11ubuntu6.1_all.deb' lsb-release_4.1+Debian11ubuntu6.1_all.deb 11460 MD5Sum:61ddf909041ee1d3738248cd639e05da
+'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lzo2/liblzo2-2_2.06-1.2ubuntu1.1_amd64.deb' liblzo2-2_2.06-1.2ubuntu1.1_amd64.deb 46110 MD5Sum:b3e9733843fda9b2463a0745e7306092
+'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_3.81-8.2ubuntu3_amd64.deb' make_3.81-8.2ubuntu3_amd64.deb 119286 MD5Sum:6442fbef4450fc977fb1ab6297cf7797
+'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_3.54-1ubuntu1_all.deb' manpages-dev_3.54-1ubuntu1_all.deb 1819920 MD5Sum:8b108211126e2798112fbd55292e5690
+'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.1-1ubuntu1_amd64.deb' libmpc3_1.0.1-1ubuntu1_amd64.deb 38442 MD5Sum:c5749c5428040f492bc9d00b0101b8a8
+'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.2-1_amd64.deb' libmpfr4_3.1.2-1_amd64.deb 202636 MD5Sum:3ff03e231bf643436f087da42faaad6d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29
+'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-6ubuntu1.2_amd64.deb' nfs-common_1%3a1.2.8-6ubuntu1.2_amd64.deb 180760 MD5Sum:64d83aabb28de942a6e367181ed580ca
+'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.10.10-0ubuntu0.14.04.1_amd64.deb' libnspr4_2%3a4.10.10-0ubuntu0.14.04.1_amd64.deb 110502 MD5Sum:bfb262e77ef709dfaa5ae037630e49ff
+'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.21-0ubuntu0.14.04.2_amd64.deb' libnss3_2%3a3.21-0ubuntu0.14.04.2_amd64.deb 1102834 MD5Sum:267e9467a90bb2077eb9984bee3b1c5f
+'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.21-0ubuntu0.14.04.2_all.deb' libnss3-nssdb_2%3a3.21-0ubuntu0.14.04.2_all.deb 10550 MD5Sum:a72742a1b68774875bde367e984b6a68
+'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.9~rc5-1ubuntu3.14.04.2_amd64.deb' libnuma1_2.0.9~rc5-1ubuntu3.14.04.2_amd64.deb 20548 MD5Sum:ecc0effed2e7ac705b71f44f1d4b0cc4
+'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_6.6p1-2ubuntu2.7_amd64.deb' openssh-client_1%3a6.6p1-2ubuntu2.7_amd64.deb 563864 MD5Sum:8edbfbbd99530d23c8f81b2466f39def
+'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_6.6p1-2ubuntu2.7_amd64.deb' openssh-server_1%3a6.6p1-2ubuntu2.7_amd64.deb 321560 MD5Sum:d95a0215f27a8f3f91160972a3fe0573
+'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_6.6p1-2ubuntu2.7_amd64.deb' openssh-sftp-server_1%3a6.6p1-2ubuntu2.7_amd64.deb 34158 MD5Sum:94e9c6b3d7f6851c67890d56d26017dc
+'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.19_amd64.deb' libssl1.0.0_1.0.1f-1ubuntu2.19_amd64.deb 828322 MD5Sum:04f6ffaf9b5108c14a688b05ea996689
+'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1f-1ubuntu2.19_amd64.deb' openssl_1.0.1f-1ubuntu2.19_amd64.deb 489948 MD5Sum:c47ec9a48ab34e79ae3ce0782cdd7960
+'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1-0ubuntu1_amd64.deb' libopus0_1.1-0ubuntu1_amd64.deb 153146 MD5Sum:b611832d9ef83e451dff69c1c81d5d04
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam0g_1.1.8-1ubuntu2.2_amd64.deb' libpam0g_1.1.8-1ubuntu2.2_amd64.deb 56072 MD5Sum:1273498c4f24df5a6514a8c43700c9d2
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-modules_1.1.8-1ubuntu2.2_amd64.deb' libpam-modules_1.1.8-1ubuntu2.2_amd64.deb 234422 MD5Sum:e709e588f41be2f59149374a1eb6c9cb
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-modules-bin_1.1.8-1ubuntu2.2_amd64.deb' libpam-modules-bin_1.1.8-1ubuntu2.2_amd64.deb 31164 MD5Sum:c6817859ed2a2e5f023a9d538e37daf0
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-runtime_1.1.8-1ubuntu2.2_all.deb' libpam-runtime_1.1.8-1ubuntu2.2_all.deb 37766 MD5Sum:fa4d3d794c3259f1fc34a04d1e682bcf
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.1-4ubuntu2.3_amd64.deb' patch_2.7.1-4ubuntu2.3_amd64.deb 86356 MD5Sum:4f07a01b36e3a60a34c3bcef647894ae
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcre3/libpcre3_8.31-2ubuntu2.3_amd64.deb' libpcre3_1%3a8.31-2ubuntu2.3_amd64.deb 144410 MD5Sum:8ffa3b01676dab2247991c847e7039d6
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.18.2-2ubuntu1.1_amd64.deb' perl_5.18.2-2ubuntu1.1_amd64.deb 2647870 MD5Sum:c923b93fb9aa7f1ff97fcea2539bd8b9
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-base_5.18.2-2ubuntu1.1_amd64.deb' perl-base_5.18.2-2ubuntu1.1_amd64.deb 1146330 MD5Sum:d032a8ff7c2609d93af93e02aa7cf5ba
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules_5.18.2-2ubuntu1.1_all.deb' perl-modules_5.18.2-2ubuntu1.1_all.deb 2673194 MD5Sum:75bfbc6a0725be5533d5920d031bb121
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.30.2-2ubuntu1.1_amd64.deb' libpixman-1-0_0.30.2-2ubuntu1.1_amd64.deb 225476 MD5Sum:2d12f5e47dad9b5f61299706413976da
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python-prettytable_0.7.2-2ubuntu2_all.deb' python-prettytable_0.7.2-2ubuntu2_all.deb 19966 MD5Sum:1532d286ecad16204509eca1e97b8c37
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_4.0-0ubuntu11.1_amd64.deb' libpulse0_1%3a4.0-0ubuntu11.1_amd64.deb 225440 MD5Sum:84213503252a6aec962b12cd170af23f
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.19.3-0ubuntu3_amd64.deb' python3-pycurl_7.19.3-0ubuntu3_amd64.deb 47494 MD5Sum:4a8692a3639a46f0c512f5d77f42ff16
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python-serial_2.6-1build1_all.deb' python-serial_2.6-1build1_all.deb 60088 MD5Sum:815adaf14f9c402d2d0507b1d99e7d71
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.6-8ubuntu0.2_amd64.deb' libpython2.7_2.7.6-8ubuntu0.2_amd64.deb 1038642 MD5Sum:e52bac5d993bf5c8c60ef92b9e392603
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.6-8ubuntu0.2_amd64.deb' libpython2.7-dev_2.7.6-8ubuntu0.2_amd64.deb 22007718 MD5Sum:8d59685b68713072a86e278b6b5b22ab
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.6-8ubuntu0.2_amd64.deb' python2.7-dev_2.7.6-8ubuntu0.2_amd64.deb 269106 MD5Sum:b329c89de034410c49eb9525597c11c6
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.5-5ubuntu3_amd64.deb' libpython-dev_2.7.5-5ubuntu3_amd64.deb 7078 MD5Sum:3b37a8ee5197b689d2fe472e81583e41
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.5-5ubuntu3_amd64.deb' python-dev_2.7.5-5ubuntu3_amd64.deb 1166 MD5Sum:0fb9dbd4067f94dc4cd894cefc50fe47
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python-jsonpatch_1.3-4_all.deb' python-jsonpatch_1.3-4_all.deb 9088 MD5Sum:d1521e9621c4c751d164a6d979705a12
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python-json-pointer_1.0-2build1_all.deb' python-json-pointer_1.0-2build1_all.deb 5158 MD5Sum:b0762e2a2192458adcbf70e6be02172d
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauth/python-oauth_1.0.1-3build2_all.deb' python-oauth_1.0.1-3build2_all.deb 12830 MD5Sum:e2c16c59e6242e3abb211a3e64297615
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python3-pkg-resources_3.3-1ubuntu2_all.deb' python3-pkg-resources_3.3-1ubuntu2_all.deb 31704 MD5Sum:e44cbc2a92ab2c53d01c7d54a79020f0
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_3.3-1ubuntu2_all.deb' python-pkg-resources_3.3-1ubuntu2_all.deb 61910 MD5Sum:d12cb222f33ac215006d472c63d3aeb8
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_3.3-1ubuntu2_all.deb' python-setuptools_3.3-1ubuntu2_all.deb 230056 MD5Sum:095838ab2e8028796486463d62e5b88b
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools-whl_3.3-1ubuntu2_all.deb' python-setuptools-whl_3.3-1ubuntu2_all.deb 244386 MD5Sum:bed8daea8be2938af22a1bc7fdc0d9f1
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-urllib3/python-urllib3-whl_1.7.1-1ubuntu4_all.deb' python-urllib3-whl_1.7.1-1ubuntu4_all.deb 64008 MD5Sum:5614ad88debd4c93441cc119f5a478a1
+'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python-yaml_3.10-4ubuntu0.1_amd64.deb' python-yaml_3.10-4ubuntu0.1_amd64.deb 101898 MD5Sum:3bbc120de69a86a8f0b996d722437fd4
+'http://us.archive.ubuntu.com/ubuntu/pool/main/r/requests/python-requests-whl_2.2.1-1ubuntu0.3_all.deb' python-requests-whl_2.2.1-1ubuntu0.3_all.deb 227230 MD5Sum:d4a08ea174bf075523d7c045a5ef4544
+'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.1-2ubuntu2.2_amd64.deb' rpcbind_0.2.1-2ubuntu2.2_amd64.deb 37056 MD5Sum:279a20e0acfea4036bce808ee12db789
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.14-1ubuntu1_amd64.deb' sharutils_1%3a4.14-1ubuntu1_amd64.deb 144824 MD5Sum:021cd2f95dd7fa1b4218d1caf50c882e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/six/python-six-whl_1.5.2-1ubuntu1_all.deb' python-six-whl_1.5.2-1ubuntu1_all.deb 10502 MD5Sum:d8224e11a6bf8bc46d5649b4675fe057
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/snappy/libsnappy1_1.1.0-1ubuntu1_amd64.deb' libsnappy1_1.1.0-1ubuntu1_amd64.deb 11152 MD5Sum:6e75ed3aa224013957954c6671bead67
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.92.37.7_all.deb' python3-software-properties_0.92.37.7_all.deb 19120 MD5Sum:00da7ba0cac32440cdd8c2137ca9771e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.92.37.7_all.deb' software-properties-common_0.92.37.7_all.deb 9356 MD5Sum:195890432324c90ea6a0e1c332f953d6
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libpam-systemd_204-5ubuntu20.19_amd64.deb' libpam-systemd_204-5ubuntu20.19_amd64.deb 25544 MD5Sum:3a8ab37af48ffcc23f9bef72e80f59c8
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-daemon0_204-5ubuntu20.19_amd64.deb' libsystemd-daemon0_204-5ubuntu20.19_amd64.deb 10194 MD5Sum:b3c2675173f71a987bc78120447beef2
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-login0_204-5ubuntu20.19_amd64.deb' libsystemd-login0_204-5ubuntu20.19_amd64.deb 27206 MD5Sum:f40f53f393bd464b4cb30e51b4db6707
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_204-5ubuntu20.19_amd64.deb' libudev1_204-5ubuntu20.19_amd64.deb 33776 MD5Sum:efaa66441569692a31cf0cdc3b2b1dd8
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-services_204-5ubuntu20.19_amd64.deb' systemd-services_204-5ubuntu20.19_amd64.deb 197024 MD5Sum:c005d7f4fcfc1299bbab853c4897c7a7
+'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_204-5ubuntu20.19_amd64.deb' udev_204-5ubuntu20.19_amd64.deb 734516 MD5Sum:f90937775fbbbe862974abe0332b6cb5
+'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2016d-0ubuntu0.14.04_all.deb' tzdata_2016d-0ubuntu0.14.04_all.deb 167282 MD5Sum:1ebee2354ecb262b219f658fc186a6bc
+'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.82.1ubuntu2.4_all.deb' unattended-upgrades_0.82.1ubuntu2.4_all.deb 25856 MD5Sum:c635e645c9d91eb2d4d182d97098150a
+'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.6-2ubuntu1.1_amd64.deb' libusbredirparser1_0.6-2ubuntu1.1_amd64.deb 13286 MD5Sum:60574ac64168133bd8a974d58b7e9c5e
+'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbutils/usbutils_007-2ubuntu1.1_amd64.deb' usbutils_1%3a007-2ubuntu1.1_amd64.deb 205284 MD5Sum:8dd05d22ed0ab249bfed02b3266e9bb5
+'http://us.archive.ubuntu.com/ubuntu/pool/main/w/wheel/python-wheel_0.24.0-1~ubuntu1_all.deb' python-wheel_0.24.0-1~ubuntu1_all.deb 44680 MD5Sum:a1f3817d6dc2aa707d1ac2a075fabf37
+'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.4_4.4.2-0ubuntu0.14.04.5_amd64.deb' libxen-4.4_4.4.2-0ubuntu0.14.04.5_amd64.deb 272722 MD5Sum:26f9614ca2e3342a0781bc1335e2d3a3
+'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.4.2-0ubuntu0.14.04.5_amd64.deb' libxenstore3.0_4.4.2-0ubuntu0.14.04.5_amd64.deb 18872 MD5Sum:e151064ffc03704ec516a5f8ecfeec9f
+'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.0.4-4_amd64.deb' libyajl2_2.0.4-4_amd64.deb 20834 MD5Sum:d7241d878ea65cbed080196411ec92c2
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/c/chardet-whl/python-chardet-whl_2.2.1-2~ubuntu1_all.deb' python-chardet-whl_2.2.1-2~ubuntu1_all.deb 170254 MD5Sum:d882e156f6af98454a96cae30ae58784
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/d/distlib/python-distlib_0.1.8-1ubuntu1_all.deb' python-distlib_0.1.8-1ubuntu1_all.deb 112604 MD5Sum:b3288d6d230096c11d69ebe18c44ed83
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/d/distlib/python-distlib-whl_0.1.8-1ubuntu1_all.deb' python-distlib-whl_0.1.8-1ubuntu1_all.deb 140312 MD5Sum:93792a4c21365ded4316fdb5bc895dd5
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-colorama/python-colorama_0.2.5-0.1ubuntu2_all.deb' python-colorama_0.2.5-0.1ubuntu2_all.deb 18374 MD5Sum:b06bc963962c3f3c97f5d1da53a56f3f
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-colorama/python-colorama-whl_0.2.5-0.1ubuntu2_all.deb' python-colorama-whl_0.2.5-0.1ubuntu2_all.deb 18212 MD5Sum:2c4ecb5b3fc49ae20510d3aac886b66a
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_1.5.4-1ubuntu3_all.deb' python-pip_1.5.4-1ubuntu3_all.deb 97250 MD5Sum:5e8aaaea2393012f52590302fe7f2c7a
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_1.5.4-1ubuntu3_all.deb' python-pip-whl_1.5.4-1ubuntu3_all.deb 111214 MD5Sum:cfa1165c167c67db395fd77b7e477b6d
+'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_1.11.4-1ubuntu1_all.deb' python-virtualenv_1.11.4-1ubuntu1_all.deb 1485420 MD5Sum:6df1003bf2392cd14f1a2710ba8cf5d5
diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/pip-requirements.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/pip-requirements.txt
new file mode 100644
index 0000000000..98d9851d75
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/pip-requirements.txt
@@ -0,0 +1,14 @@
+docopt==0.6.2
+ecdsa==0.13
+enum34==1.1.2
+interruptingcow==0.6
+ipaddress==1.0.16
+paramiko==1.16.0
+pycrypto==2.6.1
+pykwalify==1.5.0
+python-dateutil==2.4.2
+PyYAML==3.11
+requests==2.9.1
+robotframework==2.9.2
+scapy==2.3.1
+scp==0.10.2
diff --git a/resources/tools/disk-image-builder/ubuntu/nested/NO-NESTED b/resources/tools/disk-image-builder/ubuntu/nested/NO-NESTED
new file mode 100644
index 0000000000..eb2d4b03c1
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/nested/NO-NESTED
@@ -0,0 +1,8 @@
+NESTED_VERSION=NO_NESTED
+
+This is a placeholder file to be placed on the ubuntu if nested VM
+testing is not desired, or if the main VM is going to overwrite the
+nested VM image by means of startup scripts.
+
+Unless separate steps are taken to provide a valid image within the
+VM, NESTED VM TESTCASES WILL FAIL.
diff --git a/resources/tools/disk-image-builder/ubuntu/run-listmaker.sh b/resources/tools/disk-image-builder/ubuntu/run-listmaker.sh
new file mode 100755
index 0000000000..1f476566af
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/run-listmaker.sh
@@ -0,0 +1,212 @@
+#!/bin/bash
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is to spin up a simulation in VIRL, and fetch the URLs for all packages
+# that the user would obtain if they did an "apt-get update", "apt-get upgrade" today.
+#
+# This entire step is neither secure nor portable. The assumption --for now-- is that
+# this will only ever be run in LF CSIT VIRL lab. Should the requirement arise to
+# run this elsewhere, then additional work may be required to make this more
+# portable.
+
+# This script requires that the following two environment variables be defined-
+#
+# $VIRL_USER
+# $VIRL_PASSWORD
+
+VERSION=$(cat $(dirname $0)/CHANGELOG | grep '^## ' | head -1 | sed -e 's/.*\[\(.*\)\].*/\1/')
+if [ "${VERSION}" = "" ]
+then
+ echo "Unable to determine build version from CHANGELOG file. Make sure"
+ echo "that there is an entry for the most recent version in CHANGELOG,"
+ echo "and that the entry is formated like"
+ echo
+ echo "## [1.0] - 2016-05-20"
+ exit 1
+fi
+DATE=$(date +%Y-%m-%d)
+OS="ubuntu-14.04.4"
+RELEASE="${OS}_${DATE}_${VERSION}"
+OUTPUT_DIR="lists/${RELEASE}"
+
+echo "Building release ${RELEASE}."
+echo "Storinging data in ${OUTPUT_DIR}/."
+
+
+# APT packages wanted
+
+APT_WANTLIST_INFRA="nfs-common cloud-init"
+APT_WANTLIST_CSIT="python-dev python-virtualenv git"
+APT_WANTLIST_VPP="dkms"
+APT_WANTLIST_TREX="zlib1g-dev unzip"
+APT_WANTLIST_NESTED="qemu-system-x86"
+
+# For now, let us NOT incude WANTLIST_NESTED in the below. We're installing qemu
+# separately from a separate source.
+APT_WANTLIST="$APT_WANTLIST_INFRA $APT_WANTLIST_CSIT $APT_WANTLIST_VPP $WANTLIST_TREX"
+
+APT_OUTPUTFILE="${OUTPUT_DIR}/apt-packages.txt"
+
+# Python requirements file. Can point to a manually crafted file
+# here, or to the actual CSIT requirements file, or to a symlink.
+
+PIP_REQUIREMENTS="../../../../requirements.txt"
+if [ ! -f ${PIP_REQUIREMENTS} ]
+then
+ echo "PIP requirements file ${PIP_REQUIREMENTS} not found."
+ exit 1
+fi
+
+PIP_OUTPUTFILE="${OUTPUT_DIR}/pip-requirements.txt"
+
+# These will be used for SSH to the listmaker VM, and must match with what
+# was defined in the listmaker VM's kickstart file.
+SSH_USER="root"
+SSH_PASS="csit"
+
+VIRL_TOPOLOGY_FILE="listmaker/virl-listmaker.yaml"
+
+###
+### Spin up simulation
+###
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ echo '$VIRL_USER and $VIRL_PASSWORD environment variables must be defined'
+ exit 1
+fi
+
+output=$(virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} \
+ simengine-launch -f ${VIRL_TOPOLOGY_FILE} 2>&1)
+id=$(echo "${output}" | grep "Simulation ID is " | cut -f 4 -d ' ')
+
+if [ "$id" = "" ]
+then
+ echo "Did not get a simulation ID. Aborting."
+ echo "Output was:"
+ echo "${output}"
+ exit 1
+fi
+
+echo My ID is ${id}
+function stop_sim {
+ virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} simengine-stop --session ${id}
+}
+trap stop_sim EXIT
+
+ip="None"
+while [ "${ip}" = "None" ] || [ "${ip}" = "" ]
+do
+ sleep 5
+ output=$(virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} simengine-interfaces --session ${id} --nodes listmaker --interfaces management 2>&1)
+ ip=$(echo "${output}" | grep "u'ip-address" | cut -f 4 -d "'" | cut -f 1 -d '/')
+done
+echo "IP is $ip"
+
+sleep 10
+
+if ping -w 60 -c 2 $ip > /dev/null
+then
+ echo Host $ip alive
+else
+ echo Host $ip failed to respond to ping
+ exit 1
+fi
+
+# Wait for SSH to be up
+while ! nc -z $ip 22
+do
+ sleep 3
+done
+
+mkdir -p $OUTPUT_DIR
+
+###
+### SSH to the VM and perform package installation. Before each step,
+### dry-run and grab the URLs of the packages that would be installed.
+###
+
+function do_ssh {
+ # Helper function: SSH and avoid password prompt
+ sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=false -o UserKnownHostsFile=/dev/null \
+ -o LogLevel=error ${SSH_USER}@${ip} "$@"
+}
+
+do_ssh "cat - > /etc/apt/sources.list" <<_EOF
+deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu/ trusty main restricted
+deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
+deb http://us.archive.ubuntu.com/ubuntu/ trusty universe
+deb-src http://us.archive.ubuntu.com/ubuntu/ trusty universe
+deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates universe
+deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates universe
+deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse
+deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse
+deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
+deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
+deb http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
+deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
+deb http://security.ubuntu.com/ubuntu trusty-security main restricted
+deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted
+deb http://security.ubuntu.com/ubuntu trusty-security universe
+deb-src http://security.ubuntu.com/ubuntu trusty-security universe
+deb http://security.ubuntu.com/ubuntu trusty-security multiverse
+deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse
+_EOF
+
+
+### FIXME: Need error handling around all this
+do_ssh apt-get update
+
+APT_TEMPFILE=$(mktemp)
+do_ssh apt-get --print-uris -y dist-upgrade >> $APT_TEMPFILE
+do_ssh DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade
+do_ssh apt-get --print-uris -y install $APT_WANTLIST >> $APT_TEMPFILE
+do_ssh DEBIAN_FRONTEND=noninteractive apt-get -y install $APT_WANTLIST
+
+### Install qemu ($APT_WANTLIST_NESTED) separately from PPA
+do_ssh "cat - >> /etc/apt/sources.list" <<_EOF
+# For a custom qemu build
+deb http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu trusty main
+deb-src http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu trusty main
+_EOF
+do_ssh apt-get --allow-unauthenticated update
+do_ssh apt-get --print-uris --allow-unauthenticated -y install $APT_WANTLIST_NESTED >> $APT_TEMPFILE
+do_ssh DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated -y install $APT_WANTLIST_NESTED
+
+cat $APT_TEMPFILE | grep MD5Sum | sort > $APT_OUTPUTFILE
+rm -f $APT_TEMPFILE
+
+### Get Python data. We do this by installing as per our
+### requirements.txt file while fetching a list of all
+### installed modules before and after, and then comparing.
+
+PIP_TEMPFILE_BEFORE=$(mktemp)
+PIP_TEMPFILE_AFTER=$(mktemp)
+do_ssh "cat - > /tmp/requirements.txt" < ${PIP_REQUIREMENTS}
+do_ssh pip list | sort > $PIP_TEMPFILE_BEFORE
+do_ssh pip install -r /tmp/requirements.txt
+do_ssh pip list | sort > $PIP_TEMPFILE_AFTER
+
+comm -1 -3 ${PIP_TEMPFILE_BEFORE} ${PIP_TEMPFILE_AFTER} | \
+ sed -e 's/\(.*\) (\(.*\))/\1==\2/' > $PIP_OUTPUTFILE
+rm -f $PIP_TEMPFILE_BEFORE
+rm -f $PIP_TEMPFILE_AFTER
+
+###
+### Stop VIRL session
+###
+virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} simengine-stop --session ${id}
+trap "" EXIT
diff --git a/resources/tools/disk-image-builder/ubuntu/scripts-local/upload-image-to-virl.sh b/resources/tools/disk-image-builder/ubuntu/scripts-local/upload-image-to-virl.sh
new file mode 100755
index 0000000000..41682a2bc0
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/scripts-local/upload-image-to-virl.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+if [ "$1" = "" ]
+then
+ echo "Syntax: $0 <path to image file>"
+ echo
+ echo "Environment variables that are required:"
+ echo " VIRL_USER, VIRL_PASSWORD - VIRL username and password"
+ echo " VIRL_IMAGE_SUBTYPE - Image subtype to use (most likely 'server')"
+ echo " VIRL_IMAGE_NAME - The intended name for the image in VIRL"
+ exit 1
+fi
+
+VIRL_IMAGE_FILE=$1
+
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ echo "VIRL user or password not defined, not uploading image to VIRL."
+ echo "Define VIRL_USER and VIRL_PASSWORD environment variables if image upload"
+ echo "to VIRL is intended."
+ exit 0
+fi
+
+if [ "$VIRL_IMAGE_SUBTYPE" = "" ] || [ "$VIRL_IMAGE_NAME" = "" ]
+then
+ echo "VIRL_IMAGE_SUBTYPE, VIRL_IMAGE_NAME must both be defined"
+ echo "variables must all be set."
+ exit 1
+fi
+
+if [ ! -f $VIRL_IMAGE_FILE ]
+then
+ echo "VIRL image file $VIRL_IMAGE_FILE not found"
+ exit 1
+fi
+
+echo Uploading file $VIRL_IMAGE_FILE to VIRL
+echo as $VIRL_IMAGE_NAME
+
+export VIRL_IMAGE_NAME
+
+existing_image_id=$(virl_uwm_client --quiet -u ${VIRL_USER} -p ${VIRL_PASSWORD} \
+ image-info | \
+ grep -E "^ u'name'|^ u'id'" | \
+ grep -B 1 "u'${VIRL_IMAGE_SUBTYPE}-${VIRL_IMAGE_NAME}'" | \
+ grep -E "^ u'id'" | \
+ cut -f 4 -d "'")
+
+if [ "${existing_image_id}" = "" ]
+then
+ echo Image does not exist yet
+else
+ echo Image exists with ID $existing_image_id
+ virl_uwm_client --quiet -u ${VIRL_USER} -p ${VIRL_PASSWORD} image-delete \
+ --id ${existing_image_id}
+fi
+
+virl_uwm_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} image-create --subtype ${VIRL_IMAGE_SUBTYPE} --version ${VIRL_IMAGE_NAME} --image-on-server ${VIRL_IMAGE_FILE}
diff --git a/resources/tools/disk-image-builder/ubuntu/scripts-remote/cleanup.sh b/resources/tools/disk-image-builder/ubuntu/scripts-remote/cleanup.sh
new file mode 100644
index 0000000000..850c6958fb
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/scripts-remote/cleanup.sh
@@ -0,0 +1,37 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "********** CLEANING UP **********"
+
+# Clean up host keys only if we're using cloud-init
+# (which will generate new keys upon next boot). This
+# currently applies to Qemu build only.
+
+if dpkg -s cloud-init > /dev/null 2>&1
+then
+ rm -f /etc/ssh/ssh_host_*
+fi
+
+# Remove root's password, old resolv.conf and DHCP lease
+passwd -d root
+passwd -l root
+rm -f /etc/resolv.conf
+pkill dhclient
+rm -f /var/lib/dhcp/*leases
+
+echo "********** SCHEDULING SHUTDOWN IN 1 MINUTE **********"
+sync
+shutdown -h +1
+exit
diff --git a/resources/tools/disk-image-builder/ubuntu/scripts-remote/post-install.sh b/resources/tools/disk-image-builder/ubuntu/scripts-remote/post-install.sh
new file mode 100644
index 0000000000..da05b4350c
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/scripts-remote/post-install.sh
@@ -0,0 +1,86 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+TEMP_PATH="/root/temp"
+
+###
+### APT
+###
+echo "********** INSTALLING APT PACKAGES **********"
+echo -n > /etc/apt/sources.list
+
+export DEBIAN_FRONTEND=noninteractive
+
+# We're doing this the hard way as we're dealing with a bunch of
+# .deb packages rather than any sources organized through APT.
+
+# Attempt up to five cycles of unpack/configure. There may be dependency
+# problems during the first one(s).
+
+attempt=1
+MAX_ATTEMPTS=5
+try_again=1
+
+while [ $attempt -le $MAX_ATTEMPTS ] && [ $try_again -eq 1 ]
+do
+ try_again=0
+ echo "Attempting .deb package installation, attempt #${attempt}/${MAX_ATTEMPTS}"
+ dpkg --unpack --recursive --skip-same-version ${TEMP_PATH}/deb || try_again=1
+ dpkg --configure --pending || try_again=1
+ if [ $try_again -eq 1 ]
+ then
+ echo Encountered errors.
+ fi
+ attempt=$(( $attempt + 1 ))
+done
+
+if [ $try_again -eq 1 ]
+then
+ echo "Still encountered errors after ${MAX_ATTEMPTS} attempts. Aborting".
+ exit 1
+fi
+
+##
+## PIP
+##
+echo "********** INSTALLING PIP PACKAGES **********"
+pip install --no-index --find-links ${TEMP_PATH}/pip/ -r ${TEMP_PATH}/requirements.txt
+
+
+echo "********** CREATING HISTORIC LINK FOR QEMU, COPY NESTED VM IMAGE **********"
+mkdir -p /opt/qemu/bin
+ln -s /usr/bin/qemu-system-x86_64 /opt/qemu/bin/qemu-system-x86_64
+
+mkdir -p /var/lib/vm
+
+echo "Embedding nested VM image on this image"
+mkdir /var/lib/vm/images
+cp ${TEMP_PATH}/nested-vm/* /var/lib/vm/images/
+# There should only be one file at this time
+ln -s /var/lib/vm/images/* /var/lib/vm/vhost-nested.img
+
+ls -lR /var/lib/vm
+
+# Mount hugepages directory for nested VM
+mkdir -p /mnt/huge
+echo 'hugetlbfs /mnt/huge hugetlbfs mode=1770,gid=111 0 0' >> /etc/fstab
+
+echo "********** MOVING CHANGELOG AND VERSION FILES **********"
+
+mv ${TEMP_PATH}/VERSION /
+mv ${TEMP_PATH}/CHANGELOG /
+
+echo "********** CLEANING UP **********"
+rm -fr ${TEMP_PATH}
diff --git a/resources/tools/disk-image-builder/ubuntu/scripts-remote/serial-console.sh b/resources/tools/disk-image-builder/ubuntu/scripts-remote/serial-console.sh
new file mode 100644
index 0000000000..52879048ac
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/scripts-remote/serial-console.sh
@@ -0,0 +1,57 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+##
+## Serial console
+##
+echo "********** CONFIGURING SERIAL CONSOLE AND DISABLING IPV6 **********"
+cat - > /etc/init/ttyS0.conf <<"_EOF"
+# ttyS0 - getty
+#
+# This service maintains a getty on ttyS0 from the point the system is
+# started until it is shut down again.
+
+start on stopped rc RUNLEVEL=[12345]
+stop on runlevel [!12345]
+
+respawn
+exec /sbin/getty -L 115200 ttyS0 vt102
+_EOF
+
+cat - > /etc/default/grub <<"_EOF"
+# If you change this file, run 'update-grub' afterwards to update
+# /boot/grub/grub.cfg.
+# For full documentation of the options in this file, see:
+# info -f grub -n 'Simple configuration'
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=1
+GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
+GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8 ipv6.disable=1"
+
+GRUB_TERMINAL=serial
+GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY="true"
+
+# Uncomment to get a beep at grub start
+#GRUB_INIT_TUNE="480 440 1"
+_EOF
+
+update-grub
diff --git a/resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-guestadditions.sh b/resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-guestadditions.sh
new file mode 100644
index 0000000000..ec1c064437
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-guestadditions.sh
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "********** Installing VirtualBox Guest Additions (sigh) **********"
+mkdir /mnt/VBoxGuestAdditions
+mount VBoxGuestAdditions.iso /mnt/VBoxGuestAdditions/
+/mnt/VBoxGuestAdditions/VBoxLinuxAdditions.run
+umount /mnt/VBoxGuestAdditions
+rmdir /mnt/VBoxGuestAdditions/
+rm -f VBoxGuestAdditions.iso
diff --git a/resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-user.sh b/resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-user.sh
new file mode 100644
index 0000000000..31ef17f147
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-user.sh
@@ -0,0 +1,40 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "********** Adding Vagrant user ***********"
+# Remove cloud-init as this will slow down the Vagrant boot
+export DEBIAN_FRONTEND=noninteractive
+apt-get purge -y cloud-init
+
+# Add Vagrant user
+useradd -c "Vagrant User" -m -s /bin/bash vagrant
+
+mkdir /home/vagrant/.ssh
+cat - > /home/vagrant/.ssh/authorized_keys <<_EOF
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
+_EOF
+
+chown -R vagrant.vagrant /home/vagrant/.ssh
+chmod 700 /home/vagrant/.ssh
+
+mkdir -p /etc/sudoers.d
+cat - > /etc/sudoers.d/vagrant <<_EOF
+vagrant ALL=(root) NOPASSWD:ALL
+_EOF
+chmod 440 /etc/sudoers.d/vagrant
+
+echo "********** Rebooting with new kernel **********"
+reboot
+sleep 60
diff --git a/resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json b/resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json
new file mode 100644
index 0000000000..28f26f3ea1
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json
@@ -0,0 +1,120 @@
+{
+ "_c": "Ubuntu 14.04.4 ISO URL at the time of creation of this file (05/2016)",
+ "_c": "was http://releases.ubuntu.com/14.04/ubuntu-14.04.4-server-amd64.iso .",
+ "_c": "",
+ "_c": "If and when 14.04.4 becomes superseded, this URL will likely change",
+ "_c": "to:",
+ "_c": "http://old-releases.ubuntu.com/releases/14.04.4/ubuntu-14.04.4-server-amd64.iso",
+ "variables": {
+ "release": null,
+ "output_dir": null,
+ "temp_dir": null,
+ "atlas_token": "{{env `ATLAS_TOKEN`}}",
+ "virl_user": "{{env `VIRL_USER`}}",
+ "virl_password": "{{env `VIRL_PASSWORD`}}"
+ },
+ "builders": [
+ {
+ "name": "{{user `release`}}-virtualbox",
+ "type": "virtualbox-iso",
+ "guest_os_type": "Ubuntu_64",
+ "iso_url": "http://releases.ubuntu.com/14.04/ubuntu-14.04.4-server-amd64.iso",
+ "iso_checksum": "2ac1f3e0de626e54d05065d6f549fa3a",
+ "iso_checksum_type": "md5",
+ "output_directory": "{{user `output_dir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "disk_size": "4096",
+ "http_directory": "html",
+ "iso_target_path" : "build/ubuntu-14.04.4-server-amd64.iso",
+ "boot_command":
+ [
+ "<esc><esc><enter><wait>",
+ "/install/vmlinuz noapic ",
+ "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ",
+ "debian-installer=en_US auto locale=en_US kbd-chooser/method=us ",
+ "hostname=csit ",
+ "fb=false debconf/frontend=noninteractive ",
+ "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA ",
+ "keyboard-configuration/variant=USA console-setup/ask_detect=false ",
+ "initrd=/install/initrd.gz -- <enter>"
+ ]
+ },
+ {
+ "name": "{{user `release`}}-qemu",
+ "type": "qemu",
+ "iso_url": "http://releases.ubuntu.com/14.04/ubuntu-14.04.4-server-amd64.iso",
+ "iso_checksum": "2ac1f3e0de626e54d05065d6f549fa3a",
+ "iso_checksum_type": "md5",
+ "output_directory": "{{user `output_dir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "disk_size": "4096",
+ "http_directory": "html",
+ "iso_target_path" : "build/ubuntu-14.04.4-server-amd64.iso",
+ "headless": "true",
+ "boot_command":
+ [
+ "<esc><esc><enter><wait>",
+ "/install/vmlinuz noapic ",
+ "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ",
+ "debian-installer=en_US auto locale=en_US kbd-chooser/method=us ",
+ "hostname=csit ",
+ "fb=false debconf/frontend=noninteractive ",
+ "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA ",
+ "keyboard-configuration/variant=USA console-setup/ask_detect=false ",
+ "initrd=/install/initrd.gz -- <enter>"
+ ]
+ }
+ ],
+ "provisioners": [
+ {
+ "type": "file",
+ "source": "{{ user `temp_dir`}}",
+ "destination": "/root"
+ },
+ {
+ "type": "shell",
+ "script": "scripts-remote/post-install.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-qemu"],
+ "script": "scripts-remote/serial-console.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-virtualbox"],
+ "script": "scripts-remote/vagrant-user.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-virtualbox"],
+ "script": "scripts-remote/vagrant-guestadditions.sh"
+ },
+ {
+ "type": "shell",
+ "script": "scripts-remote/cleanup.sh"
+ }
+ ],
+ "post-processors": [
+ {
+ "type": "vagrant",
+ "only": ["{{user `release`}}-virtualbox"],
+ "keep_input_artifact": true
+ },
+ {
+ "type": "shell-local",
+ "only": ["{{user `release`}}-qemu"],
+ "script": "scripts-local/upload-image-to-virl.sh",
+ "keep_input_artifact": true,
+ "environment_vars":
+ [
+ "VIRL_USER={{user `virl_user`}}",
+ "VIRL_PASSWORD={{user `virl_password`}}",
+ "VIRL_IMAGE_SUBTYPE=server",
+ "VIRL_IMAGE_NAME={{user `release`}}"
+ ]
+ }
+ ]
+}
diff --git a/resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json.WITH-ATLAS b/resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json.WITH-ATLAS
new file mode 100644
index 0000000000..f13d0bc419
--- /dev/null
+++ b/resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json.WITH-ATLAS
@@ -0,0 +1,22 @@
+####
+#### Config for Atlas post-processor. Currently not used, as this is
+#### erroneously uploading a box without metadata. Need to figure out why.
+####
+#### Issues:
+#### - Image is uploaded as private box. That stinks, because without an
+#### Atlas Enterprise account, one cannot even access that box and make it
+#### public.
+#### - Box uploaded has no metadata, causing it to fail in vagrant.
+####
+
+ {
+ "type": "atlas",
+ "keep_input_artifact": true,
+ "only": ["{{user `release`}}-virtualbox"],
+ "token": "{{user `atlas_token`}}",
+ "artifact": "fdio-csit/{{user `release`}}",
+ "artifact_type": "vagrant.box",
+ "metadata": {
+ "provider": "virtualbox"
+ }
+ },