From 9d378548cc86028c55baf17260d32d0055603b78 Mon Sep 17 00:00:00 2001 From: Carsten Koester Date: Wed, 25 May 2016 05:58:29 -0400 Subject: CSIT-111: Add Packer based framework to auto-generate disk images Change-Id: Ia18ea34a6288aec0f12f176f4cc264d0f215d1fd Signed-off-by: Carsten Koester --- .../tools/disk-image-builder/ubuntu/.gitignore | 1 + .../tools/disk-image-builder/ubuntu/CHANGELOG | 3 + .../disk-image-builder/ubuntu/build-listmaker.sh | 65 +++ resources/tools/disk-image-builder/ubuntu/build.sh | 276 +++++++++++ resources/tools/disk-image-builder/ubuntu/clean.sh | 18 + .../tools/disk-image-builder/ubuntu/deepclean.sh | 19 + .../disk-image-builder/ubuntu/html/preseed.cfg | 503 +++++++++++++++++++++ .../ubuntu/listmaker/ubuntu-14.04.4.json | 57 +++ .../ubuntu/listmaker/virl-listmaker.yaml | 12 + .../ubuntu-14.04.4_2016-05-25_1.0/apt-packages.txt | 195 ++++++++ .../pip-requirements.txt | 14 + .../disk-image-builder/ubuntu/nested/NO-NESTED | 8 + .../disk-image-builder/ubuntu/run-listmaker.sh | 212 +++++++++ .../ubuntu/scripts-local/upload-image-to-virl.sh | 71 +++ .../ubuntu/scripts-remote/cleanup.sh | 37 ++ .../ubuntu/scripts-remote/post-install.sh | 86 ++++ .../ubuntu/scripts-remote/serial-console.sh | 57 +++ .../scripts-remote/vagrant-guestadditions.sh | 22 + .../ubuntu/scripts-remote/vagrant-user.sh | 40 ++ .../disk-image-builder/ubuntu/ubuntu-14.04.4.json | 120 +++++ .../ubuntu/ubuntu-14.04.4.json.WITH-ATLAS | 22 + 21 files changed, 1838 insertions(+) create mode 100644 resources/tools/disk-image-builder/ubuntu/.gitignore create mode 100644 resources/tools/disk-image-builder/ubuntu/CHANGELOG create mode 100755 resources/tools/disk-image-builder/ubuntu/build-listmaker.sh create mode 100755 resources/tools/disk-image-builder/ubuntu/build.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/clean.sh create mode 100755 resources/tools/disk-image-builder/ubuntu/deepclean.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/html/preseed.cfg create mode 100644 resources/tools/disk-image-builder/ubuntu/listmaker/ubuntu-14.04.4.json create mode 100644 resources/tools/disk-image-builder/ubuntu/listmaker/virl-listmaker.yaml create mode 100644 resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/apt-packages.txt create mode 100644 resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-05-25_1.0/pip-requirements.txt create mode 100644 resources/tools/disk-image-builder/ubuntu/nested/NO-NESTED create mode 100755 resources/tools/disk-image-builder/ubuntu/run-listmaker.sh create mode 100755 resources/tools/disk-image-builder/ubuntu/scripts-local/upload-image-to-virl.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/scripts-remote/cleanup.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/scripts-remote/post-install.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/scripts-remote/serial-console.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-guestadditions.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/scripts-remote/vagrant-user.sh create mode 100644 resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json create mode 100644 resources/tools/disk-image-builder/ubuntu/ubuntu-14.04.4.json.WITH-ATLAS (limited to 'resources/tools/disk-image-builder/ubuntu') 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 ' + echo + echo ': Base distro, eg. ubuntu-14.04.4' + echo ': Release timestamp, eg. 2016-05-21' + echo ': 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: +# \ +# + +#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": + [ + "", + "/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 -- " + ] + } + ], + "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 @@ + + + + flat + + + + UNUSED + false + + + 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 " + 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": + [ + "", + "/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 -- " + ] + }, + { + "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": + [ + "", + "/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 -- " + ] + } + ], + "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" + } + }, -- cgit 1.2.3-korg