Bug 36607

Summary: При удалении старых ядер параметр default сбрасывается на последнюю вресию ядра
Product: Sisyphus Reporter: Andrew Savchenko <bircoph>
Component: bootloader-utilsAssignee: manowar <manowar>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, asy, at, boyarsh, glebfm, ldv, mike, placeholder, sem, slazav, vitty, vt
Version: unstable   
Hardware: e2k   
OS: Linux   

Description Andrew Savchenko 2019-04-16 18:56:05 MSK
Добрый день!

При удалении старых ядер выяснилось, что не только удаляются записи об этих ядрах из /boot/boot.conf, но и параметр default сбрасывается на последнюю версию ядра, даже когда его изначальное значение не указывало на удаляемое ядро.

Пример. Есть такой конфиг:

default=4.9.146-elbrus-def-alt2.7.7
timeout=3

label=3.14.79-elbrus-8c-alt13.72.7
    partition=0
    image=/image-3.14.79-elbrus-8c-alt13.72.7
    initrd=/initrd-3.14.79-elbrus-8c-alt13.72.7.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=3.14.79-elbrus-8c-alt13.72.9
    partition=0
    image=/image-3.14.79-elbrus-8c-alt13.72.9
    initrd=/initrd-3.14.79-elbrus-8c-alt13.72.9.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=image-4.9.0-1.6-e8c
    partition=0
    image=/image-4.9.0-1.6-e8c
    initrd=/initrd-4.9.146-elbrus-def-alt2.7.2.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=image-4.14.78
    partition=0
    image=/image-4.14.78-0.xx-rt47-e2k
    initrd=/initrd-4.9.146-elbrus-def-alt2.7.2.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=4.9.146-elbrus-def-alt2.7.7
    partition=0
    image=/image-4.9.146-elbrus-def-alt2.7.7
    initrd=/initrd-4.9.146-elbrus-def-alt2.7.7.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=4.9.146-elbrus-def-alt3.4.2
    partition=0
    image=/image-4.9.146-elbrus-def-alt3.4.2
    initrd=/initrd-4.9.146-elbrus-def-alt3.4.2.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

Удаляю старое ядро:
# apt-get remove kernel-image-elbrus-8c=3.14.79-alt13.72.7

Получаю конфиг:

default=4.9.146-elbrus-def-alt3.4.2
timeout=3

label=3.14.79-elbrus-8c-alt13.72.9
    partition=0
    image=/image-3.14.79-elbrus-8c-alt13.72.9
    initrd=/initrd-3.14.79-elbrus-8c-alt13.72.9.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=image-4.9.0-1.6-e8c
    partition=0
    image=/image-4.9.0-1.6-e8c
    initrd=/initrd-4.9.146-elbrus-def-alt2.7.2.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=image-4.14.78
    partition=0
    image=/image-4.14.78-0.xx-rt47-e2k
    initrd=/initrd-4.9.146-elbrus-def-alt2.7.2.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=4.9.146-elbrus-def-alt2.7.7
    partition=0
    image=/image-4.9.146-elbrus-def-alt2.7.7
    initrd=/initrd-4.9.146-elbrus-def-alt2.7.7.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

label=4.9.146-elbrus-def-alt3.4.2
    partition=0
    image=/image-4.9.146-elbrus-def-alt3.4.2
    initrd=/initrd-4.9.146-elbrus-def-alt3.4.2.img
    cmdline=console=ttyS0,115200 console=tty0 hardreset root=UUID=c2c1b89f-be52-421e-ae82-d0a3eb24ff78

Секция, соответствующая удаляемой версии ядра была изменена верно, а вот изменение параметра default совершенно не нужно. Если бы я его не заметил, получил бы непригодную к загрузке машину (ядро 3.4.2 сейчас тестируются и с ним пока есть проблемы).

Прошу доработать логику таким образом, чтоб default менялся только если он указывает на удаляемое ядро.
Comment 1 Michael Shigorin 2019-04-16 18:59:17 MSK
PS: было бы здорово свести форк из sisyphus_e2k с основной веткой в sisyphus
и туда и закинуть.
Comment 2 Sergey Y. Afonin 2021-03-10 14:23:23 MSK
Я так понимаю, речь про lilo? Вообще странно, я именно в таком виде lilo и использую: default куда-то, эксперименты с ядрами, "lilo -R" и т.п., но ни разу такой ситуации не видел, чтобы default перезаписался. Даже когда ядро default удаляется (при этом очевидное собщение об ошибке возникает). Но не Эльбрус. Или на Эльбрусе не тот уже bootloader-utils?
Comment 3 Andrew Savchenko 2021-03-10 15:25:38 MSK
(In reply to Sergey Y. Afonin from comment #2)
> Я так понимаю, речь про lilo? Вообще странно, я именно в таком виде lilo и
> использую: default куда-то, эксперименты с ядрами, "lilo -R" и т.п., но ни
> разу такой ситуации не видел, чтобы default перезаписался. Даже когда ядро
> default удаляется (при этом очевидное собщение об ошибке возникает). Но не
> Эльбрус. Или на Эльбрусе не тот уже bootloader-utils?

Нет, речь не про lilo. На Эльбрусах firmware железа (называют просто boot) сама грузит ядро. А наши утилиты только правят /boot/boot.conf для этого бута, который похож на конфиг от лило.

На данный момент на Эльбрусе bootloader-utils-0.4.26-alt4.