[make-initrd] [PATCH v1 03/41] fork pipeline: 10 new files added

Alexey Gladkov gladkov.alexey at gmail.com
Mon Sep 27 11:45:50 MSK 2021


On Sun, Sep 26, 2021 at 09:41:49PM +0300, Leonid Krivoshein wrote:
> 
> 
> 24.09.2021 21:31, Alexey Gladkov пишет:
> > On Fri, Sep 24, 2021 at 06:55:00PM +0300, Leonid Krivoshein wrote:
> > > ---
> > >   make-initrd/features/bootchain-core/config.mk |   5 +
> > >   .../bootchain-core/data/bin/machine-info      | 123 ++++++++++++++++++
> > >   .../bootchain-core/data/lib/bootchain/debug   |  84 ++++++++++++
> > >   .../data/lib/initrd/cmdline.d/bootchain       |   6 +
> > >   .../bootchain-core/data/sbin/bootchain-logvt  |  36 +++++
> > >   make-initrd/features/bootchain-core/rules.mk  |   3 +
> > >   .../features/bootchain-getimage/README.md     |  20 +++
> > >   .../features/bootchain-getimage/config.mk     |   5 +
> > >   .../features/bootchain-getimage/rules.mk      |   2 +
> > >   .../features/bootchain-waitdev/README.md      |  21 +++
> > >   10 files changed, 305 insertions(+)
> > Леонид, ты мастер commit message! С твоими описаниями не поспоришь.
> > Действительно, 10. Но важнее, что это за файлы.
> 
> Да, уже говорил, что на первой итерации первыми тремя патчами просто хотел
> показать крупными штрихами, что-куда переехало, и что было добавлено при
> форке.
> 
> 
> > Кстати, я хочу обратить
> > внимание:
> > 
> > https://github.com/osboot/make-initrd/blob/master/Documentation/Contributing.md
> > 
> > Для меня это важно.
> 
> Я понял, что финальный вариант должен пименяться к апстримному дереву с
> подписыванием коммитов.
> 
> 
> > Ты добавляешь фичи, но ни слова не пишешь о том, что это.
> 
> В черновике документации всё же постарался всё отразить. Но я понимаю, что и
> коммиты теперь нужно превратить на какую-то правдоподобную историю.
> 
> 
> > Это же относится
> > и к README.md. Там ни слова про то что это. Только название и параметры.
> 
> Вот тут я не очень понял. Исходный pipeline содержал README.md, я просто
> скопировал отдельно описание getimage и waitdev, оставив на месте основной
> исходник. Фича pipeline же тоже осталась. В новой версии описания я просто
> добавил ссылку смотреть пока в README от pipeline.

# Feature bootchain-getimage

This is not a standalone feature. This is an add-on to the bootchain
feature. It allows to get a remote image and mount it. This is useful for
network boot.

## Boot parameters

...

Что-нибудь такое или получше.

> Второй момент заключается в том, что я не прочь потренироваться в написании
> README и коммит-мессаджей, тем более, по плану до начала апстрима собирался
> их написать. Но вот на один README для interactive у меня вся ночь ушла.
> 
> Третий момент заключается в том, что ранее ты предлагал сам перевести
> README, если я сделаю документацию на русском. Вот на родном могу написать
> хорошо и быстро, но у тебя вроде пока нигде в фичах пока нет README.ru.md, а
> так я уже думал на эту тему.

Русской документации пока нет.

> > > [...]
> > > +
> > > +	find /sys/devices -mindepth 2 -maxdepth 2 -type d -name "$glob" |
> > > +		grep '/sys/devices/pci' |
> > find /sys/devices -mindepth 2 -maxdepth 2 -type d -path "/sys/devices/pci*/$glob"
> > 
> > > +		sort |
> > > +	while read -r sysfs; do
> > > +		printf "%s" "${sysfs##*/}"
> > > +		handle_field class
> > > +		handle_field vendor
> > > +		handle_field device
> > > +		handle_field subsystem_vendor
> > > +		handle_field subsystem_device
> > > +		handle_field revision
> > Мне кажется в handle_field() не имеет смысла проверять на существование
> > эти файлы. Это всё компоненты MODALIAS.
> > 
> > Зачем это печатать отдельно, если это ровно modalias ?
> > 
> > По сути всё тело функции можно заменить:
> > 
> > find /sys/devices -mindepth 2 -maxdepth 3 -type f -path "/sys/devices/pci*/$glob/modalias" | sort |
> > while read -r path; do
> > 	read -r modalias < "$path"
> > 	path="${path%/modalias}"
> > 	printf '%s %s\n' "${path##*/}" "$modalias"
> > done

В приведённом выше коде я не уверен в необходимости первой колонки.

> Давай переделаю, как ты предлагаешь. machine-info вместе с частью
> OEM-установки драйверов это всё равно та часть, которую я сначала предлагал
> написать полностью тебе, но потом всё же изобразил какое-то её подобие. Ты
> сначала было даже хотел, а потом решил, что в твоих применениях проще
> пересобрать initrd, но для уже выпущенных дистрибутивов это действительно
> важно.

Я помню, что был разговор про OEM, но плохо помню детали.
И если нужен точный слепок машины, то почему например не использовать:

dmidecode | sed -n -e '/^Table at /,/^End Of Table$/p' | sha256sum

?

> Предметным вопросом для обсуждения тут конечно является обсуждение
> принадлежности machine-info к той или иной фиче. У меня она используется в
> localdev (altboot), в части, отвечающей за пропагаторный параметр
> UPDATEMODULES. Но она может пригодиться и для деплоя, и много где ещё.
> Может, её вынести уровнем ещё выше, сделать частью самого make-initrd? К
> bootchain-core она точно не имеет отношения.

Я до сих пор не очень понимаю назначение machine-info. Когда ты
рассказывал юскейс, то он мне тогда казался хакерством каким-то.

> > > [...]
> > > diff --git a/make-initrd/features/bootchain-core/data/sbin/bootchain-logvt
> > > b/make-initrd/features/bootchain-core/data/sbin/bootchain-logvt
> > > new file mode 100755
> > > index 0000000..037505a
> > > --- /dev/null
> > > +++ b/make-initrd/features/bootchain-core/data/sbin/bootchain-logvt
> > Зачем нужна эта утилита ? Она добавляется, но нигде в коммите не
> > используется. Описания у неё тоже нет.
> 
> Такое восприятие из-за последовательности коммитов и отсутствия описаний.
> Самые важные и сложные изменения были оставлены на конец, собственно сам
> демон, набор общих функций и отделённый главный цикл демона. А это ещё одна
> часть, которую использует демон как отдельный процесс, отвечающий за
> терминал вывода журнала (по умолчанию tty3).
> 
> 
> > > @@ -0,0 +1,36 @@
> > > +#!/bin/bash -efu
> > > +
> > > +. bootchain-sh-functions
> [...]
> > > +[ -z "${NOTTYS-}" ] && [ -n "$BC_LOG_VT" ] ||
> > > +	exit 1
> > > +set_cleanup_handler exit_handler
> > > +exec </dev/null >"/dev/tty$BC_LOG_VT" 2>&1
> > > +printf "bootchain logger started on tty%s\n\n" "$BC_LOG_VT"
> > > +tail -f -- "$BC_LOGFILE" & pid="$!"
> > Откуда берутся BC_LOG_VT и BC_LOGFILE ?
> 
> Выше по коду подключается bootchain-sh-functions, до которого ты пока не
> дошёл, и там эти дефолты есть. Они перебиваются внешним конфигом,
> подключаемым там же из /etc/sysconfig/bootchain. За последовательность
> коммитов я уже извинялся. :-)

Коммиты читаются последовательно. Я же ещё не знаю, что будет, где и в
каком формате. Именно поэтому я в последующих письмах попросил переделать
коммиты.

-- 
Rgrds, legion



More information about the Make-initrd mailing list