[make-initrd] Как пользоваться фичей kickstarter?

Alexey Gladkov gladkov.alexey at gmail.com
Tue Oct 5 21:54:49 MSK 2021


On Tue, Oct 05, 2021 at 11:20:48PM +0700, Антон Мидюков wrote:
> 12.04.2021 19:07, Alexey Gladkov пишет:
> > On Wed, Mar 31, 2021 at 10:17:12AM +0200, Alexey Gladkov wrote:
> >> # Фича kickstarter
> >>
> >> Я нашёл у себя в архиве наброски kickstarter, который я делал ещё для
> >> server4. Мне подумалось адаптировать этот код или скорее написать его с
> >> нуля в качестве фичи. Синтаксис этого кикстартера была сильно похожа на
> >> старый redhat kickstarter. Пока это только мысли так как пока непонятно
> >> как это лучше интегрировать и вызывать.
> > 
> > В целом, после выходных у меня получилось реализовать базовый функционал
> > ignoredisk, clearpart, part, volgroup, logvol... на очереди raid и btrfs.
> > Ну и потом всё это буду тестировать. Я также планирую реализовать liveimg.
> > Возможно ещё какие-то, если понадобиться по ходу тестирования.
> > 
> > Остальные команды я не планирую реализовывать (я же не инсталлер).
> > 
> > Вариантов запуска kickstarter пока два:
> > 
> > 1. Сервис в initrd будет дёргать сценарий по параметру в cmdline.
> > 2. Будет отдельный шаг в pipeline.
> > 
> 
> Алексей, я посмотрел README этой фичи. В ней есть то, что мне надо - возможность
> расширить корневой раздел на всё свободное пространство:
> 
> * `--grow` - Tells the partition to grow to fill available space (if any).
> 
> команда, получается:
> 
> part / --grow
> 
> Я правильно понимаю? Т.е. для моей задачи скрипт будет состоять из одной строки?

Если всё будет работать правильно, то да ))

> Скрипт будет внутри initrd? Как его туда положить? Так:
> 
> PUT_FILES += <путь до скрипта>
> 
> ?

Например:

KICKSTART_CONFIGS += /path/to/ks.cfg

Их можно положить несколько.

> И затем добавить в cmdline ядра:
> ksfile=<путь до скрипта>
> 
> ?

Нужно указать имя файла:

ksfile=ks.cfg

> Но фича может очень много всего. Отсюда вопрос, можно ли использовать условия в скрипте?

Я много думал про это. С одной стороны это технически возможно так как
парсер написан на шелле. Но я подумал, что будет лучше иметь совместимость
с redhat kickstart [1].

Произвольный код вставлять в скрипт нельзя, но за счёт этого позволяется
до некоторой степени указывать команды в произвольном порядке.

Произвольный код можно указывать в специальных секциях %pre, %%post,
%onerror.

> Команды внешние?

В сценарии нет. В секциях да [2].

> Например, посмотреть сколько свободного незанятого разделами места. Если больше такого-то значения,
> то создаём дополнительно раздел /home. И в зависимости от количества оперативной памяти добавляем swap такого-то
> размера.

Решение похожих проблем есть в гугле для redhat kickstart. Также один из
примеров [2].

Но если ты скажешь, что что-то делать очень неудобно, то можно расширить
функционал.

[1] https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html
[2] https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#example

-- 
Rgrds, legion



More information about the Make-initrd mailing list