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

Reply via email to