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
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest