From 7dc719148e9ca8585d4840084923e19a812d6df4 Mon Sep 17 00:00:00 2001 From: Sven Dowideit Date: Wed, 14 Dec 2016 21:01:58 +1000 Subject: [PATCH] plain syslinux with mbr works Signed-off-by: Sven Dowideit --- cmd/control/install.go | 20 ++++++++++++++++---- scripts/installer/lay-down-os | 18 ++++++++++++++++-- scripts/installer/set-disk-partitions | 6 +++++- 3 files changed, 37 insertions(+), 7 deletions(-) mode change 100644 => 100755 cmd/control/install.go diff --git a/cmd/control/install.go b/cmd/control/install.go old mode 100644 new mode 100755 index 669c7be3..2d70d7f6 --- a/cmd/control/install.go +++ b/cmd/control/install.go @@ -29,7 +29,10 @@ var installCommand = cli.Command{ cli.StringFlag{ Name: "install-type, t", Usage: `generic: (Default) Creates 1 ext4 partition and installs RancherOS - amazon-ebs: Installs RancherOS and sets up PV-GRUB`, + amazon-ebs: Installs RancherOS and sets up PV-GRUB + syslinux: partition and format disk (mbr), then install RnancherOS and setup Syslinux + gptsyslinux: partition and format disk (gpt), then install RnancherOS and setup Syslinux + `, }, cli.StringFlag{ Name: "cloud-config, c", @@ -105,10 +108,19 @@ func runInstall(image, installType, cloudConfig, device, append string, force, r os.Exit(1) } } + diskType := "msdos" + if installType == "gptsyslinux" { + diskType = "gpt" + } - if installType == "generic" { - cmd := exec.Command("system-docker", "run", "--net=host", "--privileged", "--volumes-from=all-volumes", - "--entrypoint=/scripts/set-disk-partitions", image, device) + if installType == "generic" || + installType == "syslinux" || + installType == "gptsyslinux" { + + cmd := exec.Command("system-docker", "run", + "--net=host", "--privileged", "--volumes-from=all-volumes", + "--entrypoint=/scripts/set-disk-partitions", + image, device, diskType) cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr if err := cmd.Run(); err != nil { return err diff --git a/scripts/installer/lay-down-os b/scripts/installer/lay-down-os index cc6462e8..b3cfc69a 100755 --- a/scripts/installer/lay-down-os +++ b/scripts/installer/lay-down-os @@ -26,6 +26,10 @@ do done [[ "$ARCH" == "arm" && "$ENV" != "rancher-upgrade" ]] && ENV=arm +if [[ "$ENV" == "gptsyslinux" ]]; then + MBR_FILE="gptmbr.bin" +fi + DIST=${DIST:-/dist} CLOUD_CONFIG=${CLOUD_CONFIG:-"${SCRIPTS_DIR}/conf/empty.yml"} CONSOLE=tty0 @@ -89,14 +93,14 @@ create_boot_dirs() install_syslinux() { dd bs=440 count=1 if=/usr/lib/syslinux/mbr/${MBR_FILE} of=${DEVICE} - cp /usr/lib/syslinux/modules/bios/* ${BASE_DIR}/${BOOT}syslinux + cp /usr/lib/syslinux/modules/bios/* ${BASE_DIR}/${BOOT}syslinux/ extlinux --install ${BASE_DIR}/${BOOT}syslinux } install_syslinux_raid() { dd bs=440 count=1 if=/usr/lib/syslinux/mbr/${MBR_FILE} of=/dev/sda dd bs=440 count=1 if=/usr/lib/syslinux/mbr/${MBR_FILE} of=/dev/sdb - cp /usr/lib/syslinux/modules/bios/* ${BASE_DIR}/${BOOT}syslinux + cp /usr/lib/syslinux/modules/bios/* ${BASE_DIR}/${BOOT}syslinux/ extlinux --install --raid ${BASE_DIR}/${BOOT}syslinux } @@ -207,6 +211,16 @@ if [ -n ${ENV} ]; then install_grub "${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES} ;; + "syslinux") + format_and_mount + install_syslinux + "${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES} + ;; + "gptsyslinux") + format_and_mount + install_syslinux + "${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES} + ;; "arm") format_and_mount "${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES} diff --git a/scripts/installer/set-disk-partitions b/scripts/installer/set-disk-partitions index 824ff078..4c0cf8d5 100755 --- a/scripts/installer/set-disk-partitions +++ b/scripts/installer/set-disk-partitions @@ -4,6 +4,10 @@ set -e set -x DEVICE=${1} +DISKTYPE=${2} +if [[ -z $DISKTYPE ]]; then + DISKTYPE="msdos" +fi if [[ -z $DEVICE ]]; then echo "Need to Pass a device name as arg1." 1>&2 @@ -33,7 +37,7 @@ fi dd if=/dev/zero of=${DEVICE} bs=512 count=2048 partprobe ${DEVICE} -parted -s -a optimal ${DEVICE} mklabel msdos -- \ +parted -s -a optimal ${DEVICE} mklabel ${DISKTYPE} -- \ mkpart primary ext4 1 -1 \ set 1 boot on