[elbe-devel] [PATCH] hdimg: make sure that the correct partition ends up in menu.lst
Bastian Germann
bage at linutronix.de
Thu Apr 22 19:37:19 CEST 2021
Am 20.04.21 um 21:29 schrieb Bastian Germann:
> Am 13.04.21 um 14:34 schrieb Christian Teklenborg:
>> The grub-legacy installer loops trough the fstab entries and uses the
>> last entry to modify menu.lst. This results in always booting from the
>> last partition. Ensure that the entry with mountpoint "/boot" ends up in
>> menu.lst.
>>
>> This closes issue #296.
>>
>> Signed-off-by: Christian Teklenborg <chris at linutronix.de>
>> ---
>> elbepack/hdimg.py | 13 +++++++++++--
>> 1 file changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/elbepack/hdimg.py b/elbepack/hdimg.py
>> index bfcbca69..f1a72c78 100644
>> --- a/elbepack/hdimg.py
>> +++ b/elbepack/hdimg.py
>> @@ -244,10 +244,19 @@ class grubinstaller97(grubinstaller_base):
>> do('cp -a %s %s' % (loopdev, poopdev))
>> do('kpartx -as %s' % poopdev)
>> + bootentry = 0
>> +
>> for entry in self.fs.depthlist():
>> + if entry.mountpoint.startswith("/boot"):
>> + bootentry_label = entry.label
>> + bootentry = int(entry.partnum)
>> do('mount /dev/mapper/poop%sp%d %s' %
>> (loopnum, entry.partnum, imagemntfs.fname(entry.mountpoint)))
>> + if not bootentry:
>> + bootentry_label = entry.label
>> + bootentry = int(entry.partnum)
>> +
>
> This duplicate code falls back on the loop's last entry. Please remove this and change the loop to
> execute the two variable assignments unconditionally and at the end break on
> entry.mountpoint.startswith("/boot").
No, just keep it as-is. Otherwise the rest of the mounts are not there.
Reviewed-by: Bastian Germann <bage at linutronix.de>
>
>> do("mount --bind /dev %s" % imagemntfs.fname("dev"))
>> do("mount --bind /proc %s" % imagemntfs.fname("proc"))
>> do("mount --bind /sys %s" % imagemntfs.fname("sys"))
>> @@ -267,9 +276,9 @@ class grubinstaller97(grubinstaller_base):
>> # variable 'entry' (undefined-loop-variable). entry is
>> # defined in the previous for-loop.
>> do(r'chroot %s sed -in "s/^# groot=.*$/# groot=\(hd0,%d\)/" %s' %
>> - (imagemnt, int(entry.partnum) - 1, "/boot/grub/menu.lst"))
>> + (imagemnt, bootentry - 1, "/boot/grub/menu.lst"))
>> do(r'chroot %s sed -in "s/^# kopt=.*$/# kopt=root=LABEL=%s/" %s' %
>> - (imagemnt, entry.label, "/boot/grub/menu.lst"))
>> + (imagemnt, bootentry_label, "/boot/grub/menu.lst"))
>> chroot(imagemnt, "update-grub")
>>
More information about the elbe-devel
mailing list