On Fri, 2012-06-22 at 13:17 -0300, Cleber Rosa wrote:
> I'm now testing the removal of this caveat/requirement, with something 
> like this:
> 
> diff --git a/client/tools/boottool b/client/tools/boottool
> index 7a1cce1..f92441a 100755
> --- a/client/tools/boottool
> +++ b/client/tools/boottool
> @@ -1429,20 +1429,56 @@ class Grubby(object):
>           Caveat: this assumes the default set is of type "saved", and not a
>           numeric value.
>           '''
> -        grub_reboot_names = ['grub-reboot',
> -                             'grub2-reboot']
> -        executable = None
> +        grub_reboot_names = ['grub-reboot', 'grub2-reboot']
> +        grub_reboot_executable = None
>           for grub_reboot in grub_reboot_names:
> -            executable = find_executable(grub_reboot)
> -            if executable is not None:
> +            grub_reboot_executable = find_executable(grub_reboot)
> +            if grub_reboot_executable is not None:
>                   break
> 
> -        if executable is None:
> +        if grub_reboot_executable is None:
>               self.log.error('Could not find executable among searched 
> names: '
>                              '%s',' ,'.join(grub_reboot_names))
>               return -1
> 
> -        return self._run_get_return([executable,
> +        grub_set_default_names = ['grub-set-default', 'grub2-set-default']
> +        grub_set_default_executable = None
> +        for grub_set_default in grub_set_default_names:
> +            grub_set_default_executable = find_executable(grub_set_default)
> +            if executable is not None:
> +                break
> +
> +        if grub_set_default_executable is None:
> +            self.log.error('Could not find executable among searched 
> names: '
> +                           '%s',' ,'.join(grub_set_default_names))
> +            return -1
> +
> +        # Make sure the "set default" entry in the configuration file 
> is set
> +        # to "${saved_entry}. Assuming the config file is at 
> /boot/grub/grub.cfg
> +        deb_grub_cfg_path = '/boot/grub/grub.cfg'
> +        deb_grub_cfg_bkp_path = '%s.boottool.bak' % deb_grub_cfg_path
> +
> +        if os.path.exists(deb_grub_cfg_path):
> +            shutil.move(deb_grub_cfg_path, deb_grub_cfg_bkp_path)
> +            o = open(deb_grub_cfg_path, 'w')
> +            for l in open(deb_grub_cfg_bkp_path).readlines():
> +                if l.startswith('set default='):
> +                    o.write('set default="${saved_entry}"')
> +                else:
> +                    o.write(l)
> +            o.close()
> +
> +        # Make the current default entry the "previous saved entry"
> +        default_index = self.get_default_index()
> +        prev_saved_return = 
> self._run_get_return([grub_set_default_executable,
> +                                                  '%s' % default_index])
> +        if prev_saved_return != 0:
> +            self.log.error('Could not make entry %s the previous saved 
> entry',
> +                           default_index)
> +            return prev_saved_return
> +
> +        # Finally set the boot once entry
> +        return self._run_get_return([grubby_reboot_executable,
>                                        '%s' % entry_index])
> 
> 
> This should do the trick on the autotest/boottool side.

Ok, so the patch I came up with is bogus, great that you've been working
on it :)

> But, since grubby already knows about "default saved" for grub2 (as part 
> of the autotest patches), I'll also send another patch, making this a 
> grubby feature. Maybe something like 'grubby --set-default=saved'.

But can the same semantics be applied to other bootloaders? It seems too
grub2 specific to me to come into grubby itself...

_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to