On 06/22/2012 03:26 PM, Lucas Meneghel Rodrigues wrote: > 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... >
grubby already has some bootloader specifics, including dealing with "default=saved" for both grub and grub2, so I guess this extra piece won't hurt. _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest