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

Leonid Krivoshein klark.devel at gmail.com
Sun Sep 26 21:41:49 MSK 2021



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.

Второй момент заключается в том, что я не прочь потренироваться в 
написании 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, но для уже выпущенных 
дистрибутивов это действительно важно.

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


>> [...]
>> 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. За последовательность 
коммитов я уже извинялся. :-)


-- 
Best regards,
Leonid Krivoshein.



More information about the Make-initrd mailing list