Skip to content

Commit

Permalink
ktest: Add native support for syslinux boot loader
Browse files Browse the repository at this point in the history
I installed Fedora 17 which no longer supports grub v1. I worked
with grub2 for a while, but there's so many issues with it and automated
rebooting, that I decided to switch to syslinux. Instead of using
the REBOOT_SCRIPT and add customized changes to get syslinux booted,
I thought it better to make ktest aware of syslinux and add options
to simplify the use of syslinux on a target test box.

Acked-by: H. Peter Anvin <[email protected]>
Cc: John 'Warthog9' Hawley <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
  • Loading branch information
Steven Rostedt authored and rostedt committed Dec 11, 2012
1 parent a496872 commit 7786954
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
28 changes: 27 additions & 1 deletion tools/testing/ktest/ktest.pl
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@
"STOP_TEST_AFTER" => 600,
"MAX_MONITOR_WAIT" => 1800,
"GRUB_REBOOT" => "grub2-reboot",
"SYSLINUX" => "extlinux",
"SYSLINUX_PATH" => "/boot/extlinux",

# required, and we will ask users if they don't have them but we keep the default
# value something that is common.
Expand Down Expand Up @@ -109,6 +111,9 @@
my $grub_file;
my $grub_number;
my $grub_reboot;
my $syslinux;
my $syslinux_path;
my $syslinux_label;
my $target;
my $make;
my $pre_install;
Expand Down Expand Up @@ -237,6 +242,9 @@
"GRUB_MENU" => \$grub_menu,
"GRUB_FILE" => \$grub_file,
"GRUB_REBOOT" => \$grub_reboot,
"SYSLINUX" => \$syslinux,
"SYSLINUX_PATH" => \$syslinux_path,
"SYSLINUX_LABEL" => \$syslinux_label,
"PRE_INSTALL" => \$pre_install,
"POST_INSTALL" => \$post_install,
"NO_INSTALL" => \$no_install,
Expand Down Expand Up @@ -373,7 +381,7 @@
;
$config_help{"REBOOT_TYPE"} = << "EOF"
Way to reboot the box to the test kernel.
Only valid options so far are "grub", "grub2", and "script".
Only valid options so far are "grub", "grub2", "syslinux", and "script".
If you specify grub, it will assume grub version 1
and will search in /boot/grub/menu.lst for the title \$GRUB_MENU
Expand All @@ -386,6 +394,11 @@
If you specify grub2, then you also need to specify both \$GRUB_MENU
and \$GRUB_FILE.
If you specify syslinux, then you may use SYSLINUX to define the syslinux
command (defaults to extlinux), and SYSLINUX_PATH to specify the path to
the syslinux install (defaults to /boot/extlinux). But you have to specify
SYSLINUX_LABEL to define the label to boot to for the test kernel.
EOF
;
$config_help{"GRUB_MENU"} = << "EOF"
Expand Down Expand Up @@ -414,6 +427,11 @@
here. Use something like /boot/grub2/grub.cfg to search.
EOF
;
$config_help{"SYSLINUX_LABEL"} = << "EOF"
If syslinux is used, the label that boots the target kernel must
be specified with SYSLINUX_LABEL.
EOF
;
$config_help{"REBOOT_SCRIPT"} = << "EOF"
A script to reboot the target into the test kernel
(Only mandatory if REBOOT_TYPE = script)
Expand Down Expand Up @@ -545,6 +563,10 @@ sub get_ktest_configs {
get_ktest_config("GRUB_MENU");
get_ktest_config("GRUB_FILE");
}

if ($rtype eq "syslinux") {
get_ktest_config("SYSLINUX_LABEL");
}
}

sub process_variables {
Expand Down Expand Up @@ -1589,6 +1611,8 @@ sub reboot_to {
run_ssh "'(echo \"savedefault --default=$grub_number --once\" | grub --batch)'";
} elsif ($reboot_type eq "grub2") {
run_ssh "$grub_reboot $grub_number";
} elsif ($reboot_type eq "syslinux") {
run_ssh "$syslinux --once \\\"$syslinux_label\\\" $syslinux_path";
} elsif (defined $reboot_script) {
run_command "$reboot_script";
}
Expand Down Expand Up @@ -3768,6 +3792,8 @@ sub set_test_option {
} elsif ($reboot_type eq "grub2") {
dodie "GRUB_MENU not defined" if (!defined($grub_menu));
dodie "GRUB_FILE not defined" if (!defined($grub_file));
} elsif ($reboot_type eq "syslinux") {
dodie "SYSLINUX_LABEL not defined" if (!defined($syslinux_label));
}
}

Expand Down
22 changes: 21 additions & 1 deletion tools/testing/ktest/sample.conf
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,22 @@
#
#GRUB_MENU = Test Kernel

# For REBOOT_TYPE = syslinux, the name of the syslinux executable
# (on the target) to use to set up the next reboot to boot the
# test kernel.
# (default extlinux)
#SYSLINUX = syslinux

# For REBOOT_TYPE = syslinux, the path that is passed to to the
# syslinux command where syslinux is installed.
# (default /boot/extlinux)
#SYSLINUX_PATH = /boot/syslinux

# For REBOOT_TYPE = syslinux, the syslinux label that references the
# test kernel in the syslinux config file.
# (default undefined)
#SYSLINUX_LABEL = "test-kernel"

# A script to reboot the target into the test kernel
# This and SWITCH_TO_TEST are about the same, except
# SWITCH_TO_TEST is run even for REBOOT_TYPE = grub.
Expand Down Expand Up @@ -516,7 +532,7 @@
#POST_BUILD_DIE = 1

# Way to reboot the box to the test kernel.
# Only valid options so far are "grub", "grub2" and "script"
# Only valid options so far are "grub", "grub2", "syslinux" and "script"
# (default grub)
# If you specify grub, it will assume grub version 1
# and will search in /boot/grub/menu.lst for the title $GRUB_MENU
Expand All @@ -527,6 +543,10 @@
# For REBOOT_TYPE = grub2, you must define both GRUB_MENU and
# GRUB_FILE.
#
# For REBOOT_TYPE = syslinux, you must define SYSLINUX_LABEL, and
# perhaps modify SYSLINUX (default extlinux) and SYSLINUX_PATH
# (default /boot/extlinux)
#
# The entry in /boot/grub/menu.lst must be entered in manually.
# The test will not modify that file.
#REBOOT_TYPE = grub
Expand Down

0 comments on commit 7786954

Please sign in to comment.