From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,BAYES_00, RP_MATCHES_RCVD autolearn=unavailable autolearn_force=no version=3.4.1 Message-ID: Date: Wed, 6 Oct 2021 17:03:56 +0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2 Content-Language: ru To: make-initrd@lists.altlinux.org References: <20210331081712.hp2rhiggtrficn23@example.org> <20210412120723.klixkk5uipq56nrb@example.org> <20211005185449.d7bno32xduorf7wk@example.org> From: =?UTF-8?B?0JDQvdGC0L7QvSDQnNC40LTRjtC60L7Qsg==?= In-Reply-To: <20211005185449.d7bno32xduorf7wk@example.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: Re: [make-initrd] =?utf-8?b?0JrQsNC6INC/0L7Qu9GM0LfQvtCy0LDRgtGM0YE=?= =?utf-8?b?0Y8g0YTQuNGH0LXQuSBraWNrc3RhcnRlcj8=?= X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Oct 2021 10:04:03 -0000 Archived-At: List-Archive: 06.10.2021 01:54, Alexey Gladkov пишет: > 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 >> >> Я правильно понимаю? Т.е. для моей задачи скрипт будет состоять из одной строки? > > Если всё будет работать правильно, то да )) Работает не так, как я было подумал :) Создаётся новый раздел из свободного пространства. Не хватает возможности использовать в качестве корня раздел, указанный в cmdline, как root=<такой-то>. Кажется логичным такое поведение: Если указан root=<такой-то>, то именно он должен считаться '/'. И операции совершаем над разделом, а не создаём новый. Если не указан root=<такой-то>, то поведение как сейчас. > >> Скрипт будет внутри 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 > -- С уважением, Антон Мидюков