mirror of
https://github.com/rancher/os.git
synced 2025-09-01 06:40:31 +00:00
plain syslinux with mbr works
Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
This commit is contained in:
20
cmd/control/install.go
Normal file → Executable file
20
cmd/control/install.go
Normal file → Executable file
@@ -29,7 +29,10 @@ var installCommand = cli.Command{
|
|||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "install-type, t",
|
Name: "install-type, t",
|
||||||
Usage: `generic: (Default) Creates 1 ext4 partition and installs RancherOS
|
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{
|
cli.StringFlag{
|
||||||
Name: "cloud-config, c",
|
Name: "cloud-config, c",
|
||||||
@@ -105,10 +108,19 @@ func runInstall(image, installType, cloudConfig, device, append string, force, r
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
diskType := "msdos"
|
||||||
|
if installType == "gptsyslinux" {
|
||||||
|
diskType = "gpt"
|
||||||
|
}
|
||||||
|
|
||||||
if installType == "generic" {
|
if installType == "generic" ||
|
||||||
cmd := exec.Command("system-docker", "run", "--net=host", "--privileged", "--volumes-from=all-volumes",
|
installType == "syslinux" ||
|
||||||
"--entrypoint=/scripts/set-disk-partitions", image, device)
|
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
|
cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@@ -26,6 +26,10 @@ do
|
|||||||
done
|
done
|
||||||
[[ "$ARCH" == "arm" && "$ENV" != "rancher-upgrade" ]] && ENV=arm
|
[[ "$ARCH" == "arm" && "$ENV" != "rancher-upgrade" ]] && ENV=arm
|
||||||
|
|
||||||
|
if [[ "$ENV" == "gptsyslinux" ]]; then
|
||||||
|
MBR_FILE="gptmbr.bin"
|
||||||
|
fi
|
||||||
|
|
||||||
DIST=${DIST:-/dist}
|
DIST=${DIST:-/dist}
|
||||||
CLOUD_CONFIG=${CLOUD_CONFIG:-"${SCRIPTS_DIR}/conf/empty.yml"}
|
CLOUD_CONFIG=${CLOUD_CONFIG:-"${SCRIPTS_DIR}/conf/empty.yml"}
|
||||||
CONSOLE=tty0
|
CONSOLE=tty0
|
||||||
@@ -89,14 +93,14 @@ create_boot_dirs()
|
|||||||
|
|
||||||
install_syslinux() {
|
install_syslinux() {
|
||||||
dd bs=440 count=1 if=/usr/lib/syslinux/mbr/${MBR_FILE} of=${DEVICE}
|
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
|
extlinux --install ${BASE_DIR}/${BOOT}syslinux
|
||||||
}
|
}
|
||||||
|
|
||||||
install_syslinux_raid() {
|
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/sda
|
||||||
dd bs=440 count=1 if=/usr/lib/syslinux/mbr/${MBR_FILE} of=/dev/sdb
|
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
|
extlinux --install --raid ${BASE_DIR}/${BOOT}syslinux
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,6 +211,16 @@ if [ -n ${ENV} ]; then
|
|||||||
install_grub
|
install_grub
|
||||||
"${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES}
|
"${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")
|
"arm")
|
||||||
format_and_mount
|
format_and_mount
|
||||||
"${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES}
|
"${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES}
|
||||||
|
@@ -4,6 +4,10 @@ set -e
|
|||||||
set -x
|
set -x
|
||||||
|
|
||||||
DEVICE=${1}
|
DEVICE=${1}
|
||||||
|
DISKTYPE=${2}
|
||||||
|
if [[ -z $DISKTYPE ]]; then
|
||||||
|
DISKTYPE="msdos"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z $DEVICE ]]; then
|
if [[ -z $DEVICE ]]; then
|
||||||
echo "Need to Pass a device name as arg1." 1>&2
|
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
|
dd if=/dev/zero of=${DEVICE} bs=512 count=2048
|
||||||
partprobe ${DEVICE}
|
partprobe ${DEVICE}
|
||||||
|
|
||||||
parted -s -a optimal ${DEVICE} mklabel msdos -- \
|
parted -s -a optimal ${DEVICE} mklabel ${DISKTYPE} -- \
|
||||||
mkpart primary ext4 1 -1 \
|
mkpart primary ext4 1 -1 \
|
||||||
set 1 boot on
|
set 1 boot on
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user