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