[sisyphus] Re: bootloader-utils and default records

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Чт Июн 24 06:50:45 MSD 2004


On Wed, Jun 23, 2004 at 10:14:15PM -0400, Ivan Adzhubey wrote:
> Работает, за исключением непереноса строки "vga=788", что раньше
> работало всегда. Судя по сообщениям в треде, и другие параметры
> предыдущего ядра теперь не переносятся. Аргументы про невозможность
> определить предыдущее ядро мне не кажутся убедительными. В стандартной

Да, параметры из каких-либо других ядер не переносятся, так и было
задумано начиная с 0.2-alt1.  

> ситуации - это очевидно ядро которое было указано как дефолтное в том же
> конфигурационном файле. А уж в нестандартных ситуациях типа загрузки с
> левого носителя в режиме rescue совершенно понятна необходимость вручную
> проверить и отредактировать этот файл, да и initrd пересобрать руками, и
> желательно mkinitrd запускать с -v...

Сейчас запускается
"$MKINITRD" mkinitrd -f --ifneeded "$BOOTDIR/initrd-$VERSION.img" "$VERSION"

> Удалялись строки vga=788, initrd (hd0,4)/initrd..., последняя - из
> пункта старого ядра! Видимо где-то s/// промахивается. Воспроизвести не
> могу.

Этого не может быть, и даже ничего похожего. :(
s/// вообще нигде никакого нет.
Старые записи принципиально остаются как есть: либо добавляется вся
запись целиком, либо удаляется вся запись целиком.

С добавлением вообще никаких подозрений нет:

sub add_kernel {
        local $_ = shift;
        /\/vmlinuz-\Q$version\E\b/
                or $_ .= <<EOF;

title $version
kernel $grub_part$boot/vmlinuz-$version root=$root
initrd $grub_part$boot/initrd-$version.img
EOF
        return $_;
}

С удалением то же самое:

sub remove_kernel {
        local $_ = shift;
        my @sections = split /^(?=title\s)/m;
        @sections =  grep { !/\/vmlinuz-\Q$version\E\b/ } @sections;
        return join "" => @sections;
}

Единственное, что здесь может нехорошее случиться, это если одна версия
ядра является подстрокой другой версии ядра, причем раздел по границе
слова не помогает; т.е. типа
2.4.22-alt1 и
2.4.22-alt1.1

Тогда при добавлении 2.4.22-alt1 новая запись добавлена не будет (но
зачем устанавливать alt1 после alt1.1?); а при удалении 2.4.22-alt1
будет удалено сразу две записи.  Это уже исправил.

> Молча не создавалось initrd для нового ядра, при этом в соотв. пункт
> конфигурации несуществующий initrd прописывался. Повторялось два раза.
> Как воспроизвести - не знаю. Оба раза это было с lilo в качестве
> загрузчика.

В конфигурацию (не)существующий initrd прописывается просто по шаблону,
как в коде выше.  Конечно, шаблон не проверяет, существует ли этот
initrd.  Достаточно того, что был вызван mkinitrd.

> Новое ядро прописывалось только в одном из двух конф. файлов, причем - в
> неиспользуемом (текущий загрузчик - grub, ядро добавлялось только в
> lilo.conf).

В штатной ситуации этого не может быть. :(
Скрипты модификации конфигов grub и lilo вызываются последовательно.

> Чисто филосовски - скрипты уровня base system должны отлаживаться и
> обвешиваться сотнями прверок всех мыслимых и немыслимых ситуаций (а не
> по принципу - у меня работает) и выводить разумную диагностику
> пользователю в случае даже слабых подозрений на нештатную отработку.

У меня действительно работает, что же тут сделаешь...  <...>

> -- 
> Иван
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20040624/3c51032d/attachment-0003.bin>


Подробная информация о списке рассылки Sisyphus