feat(iso): add iso image format to image_to_vm

This commit is contained in:
Alex Polvi 2014-03-28 19:20:21 -07:00
parent e2aaed1619
commit 0d3cd4b417
2 changed files with 51 additions and 0 deletions

View File

@ -7,6 +7,7 @@ VM_IMAGE=
VM_KERNEL=
VM_INITRD=
VM_MEMORY=
VM_CDROM=
VM_NCPUS="`grep -c ^processor /proc/cpuinfo`"
SSH_PORT=2222
SSH_KEYS=""
@ -102,6 +103,10 @@ if [ -n "${VM_UUID}" ]; then
set -- -uuid "$VM_UUID" "$@"
fi
if [ -n "${VM_CDROM}" ]; then
set -- -cdrom "$VM_CDROM" "$@"
fi
# Default to KVM, fall back on full emulation
# ${METADATA} will be mounted in CoreOS as /media/metadata
qemu-system-x86_64 \

View File

@ -8,6 +8,7 @@
VALID_IMG_TYPES=(
ami
pxe
iso
openstack
qemu
qemu_no_kexec
@ -117,6 +118,11 @@ IMG_pxe_DISK_FORMAT=cpio
IMG_pxe_PARTITIONED_IMG=0
IMG_pxe_CONF_FORMAT=pxe
## pxe, which is an cpio image
IMG_iso_DISK_FORMAT=iso
IMG_iso_PARTITIONED_IMG=0
IMG_iso_CONF_FORMAT=iso
## gce, image tarball
IMG_gce_DISK_LAYOUT=vm
IMG_gce_CONF_FORMAT=gce
@ -355,6 +361,39 @@ EOF
VM_GENERATED_FILES+=( "${dst_dir}/${vmlinuz_name}" )
}
_write_iso_disk() {
local iso_target="${VM_TMP_DIR}/rootiso"
local dst_dir=$(_dst_dir)
local vmlinuz_name="$(_dst_name ".vmlinuz")"
_write_cpio_disk $@
VM_GENERATED_FILES=
mkdir ${iso_target}
pushd "${iso_target}" >/dev/null
mkdir isolinux syslinux coreos
mv $2 coreos/cpio.gz
mv "${dst_dir}/${vmlinuz_name}" coreos/vmlinuz
#for file in chain.c32 libcom32.c32 libutil.c32 memdisk; do
#for file in isolinux.bin ldlinux.c32; do
cp -R /usr/share/syslinux/* isolinux/
cat<<EOF > isolinux/isolinux.cfg
INCLUDE /syslinux/syslinux.cfg
EOF
cat<<EOF > syslinux/syslinux.cfg
default coreos
prompt 0
timeout 15
label coreos
menu default
kernel /coreos/vmlinuz
append initrd=/coreos/cpio.gz coreos.autologin
EOF
mkisofs -v -l -r -J -o $2 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
isohybrid $2
popd >/dev/null
}
# If a config format is defined write it!
write_vm_conf() {
local conf_format=$(_get_vm_opt CONF_FORMAT)
@ -420,6 +459,13 @@ When using -nographic or -serial you must also enable the serial console:
EOF
}
_write_iso_conf() {
local script="$(_dst_dir)/$(_dst_name ".sh")"
local dst_name=$(basename "$VM_DST_IMG")
_write_qemu_common "${script}"
sed -e "s%^VM_CDROM=.*%VM_CDROM='${dst_name}'%" -i "${script}"
}
# Generate the vmware config file
# A good reference doc: http://www.sanbarrow.com/vmx.html
_write_vmx_conf() {