From e7ca25f8f1076230bc30138fc0c17fa625eeb6de Mon Sep 17 00:00:00 2001 From: Aaron Bull Schaefer Date: Thu, 22 Aug 2013 12:48:08 -0700 Subject: [PATCH] Initial commit --- .gitignore | 1 + arch-template.json | 20 +++++++++++++++ install.sh | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 .gitignore create mode 100644 arch-template.json create mode 100644 install.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e893b4d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +packer_cache diff --git a/arch-template.json b/arch-template.json new file mode 100644 index 0000000..00d2971 --- /dev/null +++ b/arch-template.json @@ -0,0 +1,20 @@ +{ + "builders": [ + { + "type": "vmware", + "iso_url": "http://mirrors.kernel.org/archlinux/iso/2013.08.01/archlinux-2013.08.01-dual.iso", + "iso_checksum": "65aaf2184f19d2bfcd9845688884c03d0f2efc52", + "iso_checksum_type": "sha1", + "boot_wait": "5s", + "boot_command": [ + "", + "/usr/bin/curl -O https://raw.github.com/elasticdog/packer-arch/master/install.sh", + "/usr/bin/bash ./install.sh" + ], + "ssh_username": "vagrant", + "ssh_password": "vagrant", + "ssh_wait_timeout": "10m", + "shutdown_command": "systemctl poweroff" + } + ] +} diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..841b745 --- /dev/null +++ b/install.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +DISK='/dev/sda' +FQDN='vagrant-arch.vagrantup.com' +KEYMAP='us' +LANGUAGE='en_US.UTF-8' +PASSWORD=$(/usr/bin/openssl passwd -crypt "vagrant"}) +TIMEZONE='UTC' + +ROOT_PARTITION="${DISK}1" + +# add_config appends lines to a file which will be run in the final chroot system +add_config() { + echo "${1}" >> /mnt/usr/local/bin/arch-config.sh +} + +echo "==> clearing partition table on ${DISK}" +/usr/bin/sgdisk --zap ${DISK} + +echo "==> destroying magic strings and signatures on ${DISK}" +/usr/bin/dd if=/dev/zero of=${DISK} bs=512 count=2048 >/dev/null 2>&1 +/usr/bin/wipefs --all ${DISK} + +echo "==> creating /root partition on ${DISK}" +/usr/bin/sgdisk --new=1:0:0 ${DISK} + +echo "==> setting ${DISK} bootable" +/usr/bin/sgdisk ${DISK} --attributes=1:set:2 + +echo '==> creating /root filesystem (ext4)' +/usr/bin/mkfs.ext4 -F -m 0 -q -L root ${ROOT_PARTITION} + +echo "==> mounting ${ROOT_PARTITION} to /mnt" +/usr/bin/mount -o noatime,errors=remount-ro ${ROOT_PARTITION} /mnt + +echo '==> bootstrapping the base installation' +/usr/bin/pacstrap /mnt base base-devel +/usr/bin/arch-chroot /mnt pacman -S --noconfirm syslinux gptfdisk +/usr/bin/arch-chroot /mnt syslinux-install_update -i -a -m +/usr/bin/sed -i 's/sda3/sda1/' /mnt/boot/syslinux/syslinux.cfg + +echo '==> generating the filesystem table' +/usr/bin/genfstab -p /mnt >> /mnt/etc/fstab + +echo '==> generating the system configuration script' + +add_config "echo \"${FQDN}\" > /etc/hostname" +add_config "/usr/bin/ln -s /usr/share/zoneinfo/${TIMEZONE} /etc/localtime" +add_config "echo "KEYMAP=${KEYMAP}" > /etc/vconsole.conf" +add_config "/usr/bin/sed -i \"s/#${LANGUAGE}/${LANGUAGE}/\" /etc/locale.gen" +add_config '/usr/bin/locale-gen' +add_config '/usr/bin/mkinitcpio -p linux' +add_config '/usr/bin/hwclock --systohc --utc' +add_config "/usr/bin/usermod --password ${PASSWORD} root" +add_config "/usr/bin/useradd --password ${PASSWORD} --comment \"Vagrant User\" --create-home --gid users vagrant" +add_config "echo 'vagrant ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/10_vagrant" +add_config '/usr/bin/systemctl start sshdgenkeys.service' +add_config '/usr/bin/systemctl enable sshd.service' +add_config '/usr/bin/systemctl enable dhcpcd@eth0' +add_config '/usr/bin/pacman -Scc --noconfirm' + +echo '==> entering chroot and configuring system' +/usr/bin/arch-chroot /mnt /usr/local/bin/arch-config.sh +/usr/bin/arch-chroot /mnt rm /usr/local/bin/arch-config.sh