1
0
mirror of https://github.com/rancher/os.git synced 2025-08-01 23:17:50 +00:00

Merge pull request #1448 from konsumer/master

GPT partition option
This commit is contained in:
Sven Dowideit 2016-12-15 10:50:49 +10:00 committed by GitHub
commit 05b8587849
3 changed files with 53 additions and 17 deletions

20
cmd/control/install.go Normal file → Executable file
View File

@ -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

View File

@ -5,7 +5,9 @@ SCRIPTS_DIR=$(dirname ${0})
VERSION=${VERSION:?"VERSION not set"}
while getopts "i:f:c:d:t:r:o:p:ka:" OPTION
MBR_FILE=mbr.bin
while getopts "i:f:c:d:t:r:o:p:ka:g" OPTION
do
case ${OPTION} in
i) DIST="$OPTARG" ;;
@ -18,11 +20,16 @@ do
k) KEXEC=y ;;
a) APPEND="$OPTARG" ;;
t) ENV="$OPTARG" ;;
g) MBR_FILE=gptmbr.bin ;;
*) exit 1 ;;
esac
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
@ -85,15 +92,15 @@ create_boot_dirs()
}
install_syslinux() {
dd bs=440 count=1 if=/usr/lib/syslinux/mbr/mbr.bin of=${DEVICE}
cp /usr/lib/syslinux/modules/bios/* ${BASE_DIR}/${BOOT}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/
extlinux --install ${BASE_DIR}/${BOOT}syslinux
}
install_syslinux_raid() {
dd bs=440 count=1 if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda
dd bs=440 count=1 if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb
cp /usr/lib/syslinux/modules/bios/* ${BASE_DIR}/${BOOT}syslinux
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/
extlinux --install --raid ${BASE_DIR}/${BOOT}syslinux
}
@ -204,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}
@ -275,3 +292,4 @@ fi
if [ "$KEXEC" = "y" ]; then
kexec -l ${DIST}/vmlinuz --initrd=${DIST}/initrd --append="${KERNEL_ARGS} ${APPEND}" -f
fi

View File

@ -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,11 +37,13 @@ fi
dd if=/dev/zero of=${DEVICE} bs=512 count=2048
partprobe ${DEVICE}
fdisk ${DEVICE} <<EOF
n
p
1
# https://www.gnu.org/software/parted/manual/html_node/set.html
# https://wiki.archlinux.org/index.php/syslinux
BOOTFLAG="boot"
if [ "${DISKTYPE}" == "gpt" ]; then
BOOTFLAG="legacy_boot"
fi
parted -s -a optimal ${DEVICE} mklabel ${DISKTYPE} -- \
mkpart primary ext4 1 -1 \
set 1 ${BOOTFLAG} on
w
EOF