diff options
| author | Steven Rostedt <srostedt@redhat.com> | 2012-12-11 17:37:41 -0500 | 
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2012-12-11 18:18:46 -0500 | 
| commit | 7786954c95dbeba26ef39d2b6899bf06fbf2b629 (patch) | |
| tree | 07b916a88e539aff2bf00836511251e58cfdab8d /tools/testing | |
| parent | a496872212e50a7e543a027faf35b0909459ec9e (diff) | |
| download | linux-7786954c95dbeba26ef39d2b6899bf06fbf2b629.tar.bz2 | |
ktest: Add native support for syslinux boot loader
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 <hpa@zytor.com>
Cc: John 'Warthog9' Hawley <warthog9@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'tools/testing')
| -rwxr-xr-x | tools/testing/ktest/ktest.pl | 28 | ||||
| -rw-r--r-- | tools/testing/ktest/sample.conf | 22 | 
2 files changed, 48 insertions, 2 deletions
| diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl index f4b8f96a9430..067337bbce7b 100755 --- a/tools/testing/ktest/ktest.pl +++ b/tools/testing/ktest/ktest.pl @@ -54,6 +54,8 @@ my %default = (      "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. @@ -109,6 +111,9 @@ my $grub_menu;  my $grub_file;  my $grub_number;  my $grub_reboot; +my $syslinux; +my $syslinux_path; +my $syslinux_label;  my $target;  my $make;  my $pre_install; @@ -237,6 +242,9 @@ my %option_map = (      "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, @@ -373,7 +381,7 @@ EOF      ;  $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 @@ -386,6 +394,11 @@ $config_help{"REBOOT_TYPE"} = << "EOF"   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" @@ -414,6 +427,11 @@ $config_help{"GRUB_FILE"} = << "EOF"   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) @@ -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 { @@ -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";      } @@ -3768,6 +3792,8 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {  	} 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));  	}      } diff --git a/tools/testing/ktest/sample.conf b/tools/testing/ktest/sample.conf index 57617ec88c3b..4012e9330344 100644 --- a/tools/testing/ktest/sample.conf +++ b/tools/testing/ktest/sample.conf @@ -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. @@ -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 @@ -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 |