* [make-initrd] Release make-initrd 2.14.0 @ 2021-03-30 18:21 Alexey Gladkov 2021-03-30 20:18 ` Leonid Krivoshein 0 siblings, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-03-30 18:21 UTC (permalink / raw) To: make-initrd New release 2.14.0 is available. Git repository ============== https://github.com/osboot/make-initrd.git http://git.altlinux.org/people/legion/packages/make-initrd.git Feedback and bug reports, as always, are welcomed. Changelog ========= Alexey Gladkov (41): Add busybox submodule Add libshell submodule Add target to get release tarball Use bash builtin command to check the availability of utilities Fix udevd detection initrd-put: Handle symlinks in the root directory initrd-put: Add more verbosity initrd-put: Get the canonical path correctly initrd-put: Set mode and owner after directories creation initrd-put: mksock() always returns a return code and errno initrd-put: Do not add whole directory if symlink points to it Use absolute directory names in the PATH configure: Add more messages and fix libelf check Rename hasher-build-rootfs -> build-rootfs-altlinux Use wrapper around readlink for portability tests: Increase build timeout tests: Add missing mode runtime: Use start-stop-daemon from busybox runtime: Enforce PATH create-initrd: Fix compatibility symlinks create-initrd: Take into account utilities in LOCALBUILDDIR tests: Use bash for simple system init tests: Use locally compiled utilities tests: Add script to build rootfs for fedora tests: Allow to run single testcase without qemu wrappers udev variables $ID_* are optional Feature network: Always import runtime environment runtime: Add logfile for udevd tests: Add target to build individual testcase tests: Make kernel flavor optional tests: Update altlinux rootfs guess: Allow to set variables in guessed config Feature mdadm: Generate udev rules for any raid devices runtime: Add default udev rules runtime: Add support for root=SERIAL=* Feature pipeline: Fix possible race in the waitdev Do not create /bin/sh All make messages should go to stderr depinfo: Do not show an error if softdep is not found Make a symlink to /bin/bash if bash is in a non-standard location 2.14.0 -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-30 18:21 [make-initrd] Release make-initrd 2.14.0 Alexey Gladkov @ 2021-03-30 20:18 ` Leonid Krivoshein 2021-03-31 7:44 ` Alexey Gladkov 0 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-30 20:18 UTC (permalink / raw) To: make-initrd Алексей, привет! 30.03.2021 21:21, Alexey Gladkov пишет: > New release 2.14.0 is available. > > Git repository > ============== > > https://github.com/osboot/make-initrd.git > http://git.altlinux.org/people/legion/packages/make-initrd.git > > Feedback and bug reports, as always, are welcomed. > > Changelog > ========= > > Alexey Gladkov (41): > Add busybox submodule > Add libshell submodule > Add target to get release tarball > Use bash builtin command to check the availability of utilities > Fix udevd detection > initrd-put: Handle symlinks in the root directory > initrd-put: Add more verbosity > initrd-put: Get the canonical path correctly > initrd-put: Set mode and owner after directories creation > initrd-put: mksock() always returns a return code and errno > initrd-put: Do not add whole directory if symlink points to it > Use absolute directory names in the PATH > configure: Add more messages and fix libelf check > Rename hasher-build-rootfs -> build-rootfs-altlinux > Use wrapper around readlink for portability > tests: Increase build timeout > tests: Add missing mode > runtime: Use start-stop-daemon from busybox > runtime: Enforce PATH > create-initrd: Fix compatibility symlinks > create-initrd: Take into account utilities in LOCALBUILDDIR > tests: Use bash for simple system init > tests: Use locally compiled utilities > tests: Add script to build rootfs for fedora > tests: Allow to run single testcase without qemu wrappers > udev variables $ID_* are optional > Feature network: Always import runtime environment > runtime: Add logfile for udevd > tests: Add target to build individual testcase > tests: Make kernel flavor optional > tests: Update altlinux rootfs > guess: Allow to set variables in guessed config > Feature mdadm: Generate udev rules for any raid devices > runtime: Add default udev rules > runtime: Add support for root=SERIAL=* > Feature pipeline: Fix possible race in the waitdev > Do not create /bin/sh > All make messages should go to stderr > depinfo: Do not show an error if softdep is not found > Make a symlink to /bin/bash if bash is in a non-standard location > 2.14.0 > Шикарный набор, впечатляет! Огромное тебе спасибо!!! Не против, если я немного поковыряю pipeline для доведения его до нынешнего пропагатора и скину все изменения оптом? Мне не очень нравится, как сейчас с пропагатором организован режим сохранения сеансов LiveCD, думаю не сохранять её, а сделать другую реализацию, ближе к тому, что есть в Puppy. Ну и, все протоколы хочу проверить. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-30 20:18 ` Leonid Krivoshein @ 2021-03-31 7:44 ` Alexey Gladkov 2021-03-31 13:08 ` Leonid Krivoshein 0 siblings, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 7:44 UTC (permalink / raw) To: make-initrd On Tue, Mar 30, 2021 at 11:18:56PM +0300, Leonid Krivoshein wrote: > > 2.14.0 > > > > Шикарный набор, впечатляет! Огромное тебе спасибо!!! > > Не против, если я немного поковыряю pipeline для доведения его до нынешнего > пропагатора и скину все изменения оптом? Разве я могу запретить кому-то чем-то заниматься ? ))) Если чего-то не хватает, то это можно добавить. Фича pipeline была сделана как минимальный базис. > Мне не очень нравится, как сейчас с пропагатором организован режим > сохранения сеансов LiveCD, думаю не сохранять её, а сделать другую > реализацию, ближе к тому, что есть в Puppy. Ну и, все протоколы хочу > проверить. Я не очень понимаю о чём ты говоришь. -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 7:44 ` Alexey Gladkov @ 2021-03-31 13:08 ` Leonid Krivoshein 2021-03-31 13:39 ` Alexey Gladkov 0 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 13:08 UTC (permalink / raw) To: make-initrd 31.03.2021 10:44, Alexey Gladkov пишет: > On Tue, Mar 30, 2021 at 11:18:56PM +0300, Leonid Krivoshein wrote: >>> 2.14.0 >>> >> Шикарный набор, впечатляет! Огромное тебе спасибо!!! >> >> Не против, если я немного поковыряю pipeline для доведения его до нынешнего >> пропагатора и скину все изменения оптом? > Разве я могу запретить кому-то чем-то заниматься ? ))) > > Если чего-то не хватает, то это можно добавить. Фича pipeline была сделана > как минимальный базис. Да, это понятно. Разобрались, наконец, с локальной загрузкой и как/чего переделывать. Но наткнулись на другую неприятную ошибку. Скорее всего, она внутри initrd-put -- при создании универсального загрузочного носителя (на замену того, что было с propagator) более половины ядерных модулей и каталогов с модулями попадает не в /lib/modules/$KVER, а в корневой каталог initramfs. Причём, это не зависит от используемого способа (директив) указания списка модулей и места, где это делается. И это не только в 2.14.0, с 2.13.0 то же самое. Нужна ли какая-то дополнительная диагностика? >> Мне не очень нравится, как сейчас с пропагатором организован режим >> сохранения сеансов LiveCD, думаю не сохранять её, а сделать другую >> реализацию, ближе к тому, что есть в Puppy. Ну и, все протоколы хочу >> проверить. > Я не очень понимаю о чём ты говоришь. В коде будет понятней. Сейчас мы говорим о переходе из stage1 в stage2 для обеспечения совместимости с нашими rescue, инсталлятором и livecd при полном выкидывании пропагатора. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 13:08 ` Leonid Krivoshein @ 2021-03-31 13:39 ` Alexey Gladkov 2021-03-31 13:55 ` Leonid Krivoshein 0 siblings, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 13:39 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 04:08:26PM +0300, Leonid Krivoshein wrote: > > > 31.03.2021 10:44, Alexey Gladkov пишет: > > On Tue, Mar 30, 2021 at 11:18:56PM +0300, Leonid Krivoshein wrote: > > > > 2.14.0 > > > > > > > Шикарный набор, впечатляет! Огромное тебе спасибо!!! > > > > > > Не против, если я немного поковыряю pipeline для доведения его до нынешнего > > > пропагатора и скину все изменения оптом? > > Разве я могу запретить кому-то чем-то заниматься ? ))) > > > > Если чего-то не хватает, то это можно добавить. Фича pipeline была сделана > > как минимальный базис. > > Да, это понятно. Разобрались, наконец, с локальной загрузкой и как/чего > переделывать. Но наткнулись на другую неприятную ошибку. Скорее всего, она > внутри initrd-put -- при создании универсального загрузочного носителя (на > замену того, что было с propagator) более половины ядерных модулей и > каталогов с модулями попадает не в /lib/modules/$KVER, а в корневой каталог > initramfs. Причём, это не зависит от используемого способа (директив) > указания списка модулей и места, где это делается. И это не только в 2.14.0, > с 2.13.0 то же самое. Нужна ли какая-то дополнительная диагностика? Разумеется нужна. Расскажите, что вы делали ? -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 13:39 ` Alexey Gladkov @ 2021-03-31 13:55 ` Leonid Krivoshein 2021-03-31 14:07 ` Антон Мидюков ` (2 more replies) 0 siblings, 3 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 13:55 UTC (permalink / raw) To: make-initrd [-- Attachment #1: Type: text/plain, Size: 2741 bytes --] 31.03.2021 16:39, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 04:08:26PM +0300, Leonid Krivoshein wrote: >> 31.03.2021 10:44, Alexey Gladkov пишет: >>> On Tue, Mar 30, 2021 at 11:18:56PM +0300, Leonid Krivoshein wrote: >>>>> 2.14.0 >>>>> >>>> Шикарный набор, впечатляет! Огромное тебе спасибо!!! >>>> >>>> Не против, если я немного поковыряю pipeline для доведения его до нынешнего >>>> пропагатора и скину все изменения оптом? >>> Разве я могу запретить кому-то чем-то заниматься ? ))) >>> >>> Если чего-то не хватает, то это можно добавить. Фича pipeline была сделана >>> как минимальный базис. >> Да, это понятно. Разобрались, наконец, с локальной загрузкой и как/чего >> переделывать. Но наткнулись на другую неприятную ошибку. Скорее всего, она >> внутри initrd-put -- при создании универсального загрузочного носителя (на >> замену того, что было с propagator) более половины ядерных модулей и >> каталогов с модулями попадает не в /lib/modules/$KVER, а в корневой каталог >> initramfs. Причём, это не зависит от используемого способа (директив) >> указания списка модулей и места, где это делается. И это не только в 2.14.0, >> с 2.13.0 то же самое. Нужна ли какая-то дополнительная диагностика? > Разумеется нужна. Расскажите, что вы делали ? Просто давали команду make-initrd, предварительно скармливая разными способами список модулей через /etc/initrd.mk. Перепробованы были разные директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех случаях модули попадают, но в основном не туда, куда надо. См. во вложении пример вывода initrd-ls и один из вариантов скриптов, которым это делается. -- Best regards, Leonid Krivoshein. [-- Attachment #2: 511.lst.gz --] [-- Type: application/gzip, Size: 18769 bytes --] [-- Attachment #3: 80-make-initrd-for-pipeline --] [-- Type: text/plain, Size: 1957 bytes --] #!/bin/sh -efux # NB: /etc/initrd.mk carefully prepared by earlier scripts fatal() { echo "** error: $@" >&1; exit 1; } kver= for KFLAVOUR in $GLOBAL_KFLAVOURS; do kver+=" $(rpm -qa 'kernel-image*' \ --qf '%{version}-%{name}-%{release}\n' \ | grep "$KFLAVOUR" \ | sed 's/kernel-image-//')" done [ -n "$kver" ] || fatal "no kernel version identified" INITRD_FEATURES+="add-modules compress cleanup rdshell pipeline" INITRD_MODULES="$(grep -v ^# /.in/modules | grep -v / | grep .ko | sort -u)" INITRD_PUT_DIRS="$(grep -v ^# /.in/modules | grep -v .ko | sort -u)" initrd_modules_find() { if [ -n "$INITRD_MODULES" ]; then echo "MODULES_LOAD += \\" for INITRD_MODULE in $INITRD_MODULES; do MODNAME="$(find /lib/modules/$KVER -type f -name $INITRD_MODULE)" [ -z "$MODNAME" ] || echo " ${MODNAME##*/} \\" done echo " #" fi if [ -n "$INITRD_PUT_DIRS" ]; then echo "PUT_DIRS += \\" for INITRD_PUT_DIR in $INITRD_PUT_DIRS; do [ ! -d "/lib/modules/$KVER/$INITRD_PUT_DIR" ] || echo " /lib/modules/$KVER/$INITRD_PUT_DIR \\" done echo " #" fi } # FIXME: large storage systems can get that tmpfs filled up # with debug data as of make-initrd 2.2.12 rm -vf /usr/share/make-initrd/data/etc/udev/rules.d/00-debug.rules \ /usr/share/make-initrd/data/lib/uevent/filters/debug MAKE_INITRD_OPTS="--no-checks AUTODETECT=" MAKE_INITRD_VER="`make-initrd -V \ | sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`" [ -z "$GLOBAL_VERBOSE" ] || MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS -v" cd /boot for KVER in $kver; do touch /etc/initrd.mk cp -Lvf /etc/initrd.mk /etc/initrd-mk.bak initrd_modules_find >> /etc/initrd.mk make-initrd $MAKE_INITRD_OPTS -k "$KVER" \ FEATURES+="$INITRD_FEATURES" || fatal "make-initrd failed" mv -vf /etc/initrd-mk.bak /etc/initrd.mk done case `arch` in e2k) kname=image;; *) kname=vmlinuz;; esac rm -f $kname initrd.img ln -s $kname-$KVER $kname ln -s initrd-$KVER.img initrd.img : ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 13:55 ` Leonid Krivoshein @ 2021-03-31 14:07 ` Антон Мидюков 2021-03-31 14:34 ` Alexey Gladkov 2021-03-31 14:40 ` Alexey Gladkov 2 siblings, 0 replies; 48+ messages in thread From: Антон Мидюков @ 2021-03-31 14:07 UTC (permalink / raw) To: make-initrd 31.03.2021 20:55, Leonid Krivoshein пишет: > > 31.03.2021 16:39, Alexey Gladkov пишет: >> On Wed, Mar 31, 2021 at 04:08:26PM +0300, Leonid Krivoshein wrote: >>> 31.03.2021 10:44, Alexey Gladkov пишет: >>>> On Tue, Mar 30, 2021 at 11:18:56PM +0300, Leonid Krivoshein wrote: >>>>>> 2.14.0 >>>>>> >>>>> Шикарный набор, впечатляет! Огромное тебе спасибо!!! >>>>> >>>>> Не против, если я немного поковыряю pipeline для доведения его до нынешнего >>>>> пропагатора и скину все изменения оптом? >>>> Разве я могу запретить кому-то чем-то заниматься ? ))) >>>> >>>> Если чего-то не хватает, то это можно добавить. Фича pipeline была сделана >>>> как минимальный базис. >>> Да, это понятно. Разобрались, наконец, с локальной загрузкой и как/чего >>> переделывать. Но наткнулись на другую неприятную ошибку. Скорее всего, она >>> внутри initrd-put -- при создании универсального загрузочного носителя (на >>> замену того, что было с propagator) более половины ядерных модулей и >>> каталогов с модулями попадает не в /lib/modules/$KVER, а в корневой каталог >>> initramfs. Причём, это не зависит от используемого способа (директив) >>> указания списка модулей и места, где это делается. И это не только в 2.14.0, >>> с 2.13.0 то же самое. Нужна ли какая-то дополнительная диагностика? >> Разумеется нужна. Расскажите, что вы делали ? > > Просто давали команду make-initrd, предварительно скармливая разными способами список модулей через /etc/initrd.mk. Перепробованы были разные директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех случаях модули попадают, но в основном не туда, куда надо. См. во вложении пример вывода initrd-ls и один из вариантов скриптов, которым это делается. > Я так полагаю, что надо просто все модули через MODULES_LOAD или MODULES_PRELOAD добавлять, а не как сейчас, часть в виде каталогов с модулями через PUT_DIRS. -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 13:55 ` Leonid Krivoshein 2021-03-31 14:07 ` Антон Мидюков @ 2021-03-31 14:34 ` Alexey Gladkov 2021-03-31 14:40 ` Alexey Gladkov 2 siblings, 0 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 14:34 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: > > Разумеется нужна. Расскажите, что вы делали ? > > Просто давали команду make-initrd, предварительно скармливая разными > способами список модулей через /etc/initrd.mk. Перепробованы были разные > директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы > MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех > случаях модули попадают, но в основном не туда, куда надо. См. во вложении > пример вывода initrd-ls и один из вариантов скриптов, которым это делается. Текущее ядро: $ uname -r 5.12.0-rc4 Вот конфиг плюс ещё один некий молуль: $ grep -v ^# /etc/initrd.mk AUTODETECT = all PUT_FILES += /lib/modules/5.8.0/kernel/fs/9p/9p.ko.xz $ make-initrd -D -b /tmp -c /etc/initrd.mk ... [00:00:08] Image is saved as /tmp/initrd-5.12.0-rc4.img Модули под целевое ядро на месте: $ initrd-ls /tmp/initrd-5.12.0-rc4.img | grep -m1 '5.12.0.*.ko' 2 -rw-r--r-- 1 0 0 49720 Mar 31 16:10:34 2021 ./lib/modules/5.12.0-rc4/kernel/net/packet/af_packet.ko.xz Запрашиваемый файл на месте: $ initrd-ls /tmp/initrd-5.12.0-rc4.img | grep '9p\.ko' 2 drwxr-xr-x 2 0 0 0 Mar 31 16:10:35 2021 ./lib/modules/5.8.0/kernel/fs/9p 2 -rw-r--r-- 1 0 0 67056 Mar 31 16:10:33 2021 ./lib/modules/5.8.0/kernel/fs/9p/9p.ko.xz Давай попробуем иначе: $ grep -v ^# /etc/initrd.mk AUTODETECT = all MODULES_ADD += 9p $ initrd-ls /tmp/initrd-5.12.0-rc4.img | grep '9p\.ko' 2 -rw-r--r-- 1 0 0 70340 Mar 31 16:17:16 2021 ./lib/modules/5.12.0-rc4/kernel/fs/9p/9p.ko.xz У меня есть подозрение, что у вас make-intird в каком-то странном окружении. Попробуйте ограничить его через env -i и добавить туда только то что необходимо. Также я был бы признателен за более понятный testcase. Что находится в /.in/modules ? -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 13:55 ` Leonid Krivoshein 2021-03-31 14:07 ` Антон Мидюков 2021-03-31 14:34 ` Alexey Gladkov @ 2021-03-31 14:40 ` Alexey Gladkov 2021-03-31 14:48 ` Alexey Gladkov ` (2 more replies) 2 siblings, 3 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 14:40 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: > Просто давали команду make-initrd, предварительно скармливая разными > способами список модулей через /etc/initrd.mk. Перепробованы были разные > директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы > MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех > случаях модули попадают, но в основном не туда, куда надо. См. во вложении > пример вывода initrd-ls и один из вариантов скриптов, которым это делается. PUT_DIRS с самого момента создания make-initrd копирует содержимое каталога без самого каталога. Например так копируется: PUT_DIRS += /lib/initrd -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 14:40 ` Alexey Gladkov @ 2021-03-31 14:48 ` Alexey Gladkov 2021-03-31 14:49 ` Leonid Krivoshein 2021-03-31 14:50 ` Антон Мидюков 2 siblings, 0 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 14:48 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 04:40:58PM +0200, Alexey Gladkov wrote: > On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: > > Просто давали команду make-initrd, предварительно скармливая разными > > способами список модулей через /etc/initrd.mk. Перепробованы были разные > > директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы > > MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех > > случаях модули попадают, но в основном не туда, куда надо. См. во вложении > > пример вывода initrd-ls и один из вариантов скриптов, которым это делается. > > PUT_DIRS с самого момента создания make-initrd копирует содержимое > каталога без самого каталога. Например так копируется: > > PUT_DIRS += /lib/initrd Я наврал. Это случилось Sun May 6 15:35:14 2012. Да, согласен, это регрессия. -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 14:40 ` Alexey Gladkov 2021-03-31 14:48 ` Alexey Gladkov @ 2021-03-31 14:49 ` Leonid Krivoshein 2021-03-31 14:50 ` Антон Мидюков 2 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 14:49 UTC (permalink / raw) To: make-initrd 31.03.2021 17:40, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: >> Просто давали команду make-initrd, предварительно скармливая разными >> способами список модулей через /etc/initrd.mk. Перепробованы были разные >> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы >> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех >> случаях модули попадают, но в основном не туда, куда надо. См. во вложении >> пример вывода initrd-ls и один из вариантов скриптов, которым это делается. > PUT_DIRS с самого момента создания make-initrd копирует содержимое > каталога без самого каталога. Например так копируется: > > PUT_DIRS += /lib/initrd Ага, спасибо. Сейчас попробую переделать с учётом сказанного и посмотрим, что получится. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 14:40 ` Alexey Gladkov 2021-03-31 14:48 ` Alexey Gladkov 2021-03-31 14:49 ` Leonid Krivoshein @ 2021-03-31 14:50 ` Антон Мидюков 2021-03-31 15:22 ` Alexey Gladkov 2 siblings, 1 reply; 48+ messages in thread From: Антон Мидюков @ 2021-03-31 14:50 UTC (permalink / raw) To: make-initrd 31.03.2021 21:40, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: >> Просто давали команду make-initrd, предварительно скармливая разными >> способами список модулей через /etc/initrd.mk. Перепробованы были разные >> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы >> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех >> случаях модули попадают, но в основном не туда, куда надо. См. во вложении >> пример вывода initrd-ls и один из вариантов скриптов, которым это делается. > > PUT_DIRS с самого момента создания make-initrd копирует содержимое > каталога без самого каталога. Например так копируется: > > PUT_DIRS += /lib/initrd > Вот, именно в этом и проблема. Нужно найти все модули в целевых каталогах и добавить в список MODULES_LOAD. В MODULES_LOAD каталоги добавлять же нельзя? -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 14:50 ` Антон Мидюков @ 2021-03-31 15:22 ` Alexey Gladkov 2021-03-31 15:37 ` Антон Мидюков 0 siblings, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 15:22 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 09:50:11PM +0700, Антон Мидюков wrote: > 31.03.2021 21:40, Alexey Gladkov пишет: > > On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: > >> Просто давали команду make-initrd, предварительно скармливая разными > >> способами список модулей через /etc/initrd.mk. Перепробованы были разные > >> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы > >> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех > >> случаях модули попадают, но в основном не туда, куда надо. См. во вложении > >> пример вывода initrd-ls и один из вариантов скриптов, которым это делается. > > > > PUT_DIRS с самого момента создания make-initrd копирует содержимое > > каталога без самого каталога. Например так копируется: > > > > PUT_DIRS += /lib/initrd > > > > Вот, именно в этом и проблема. Нужно найти все модули в целевых каталогах и добавить в список MODULES_LOAD. > В MODULES_LOAD каталоги добавлять же нельзя? Это список имён модулей. Он же потом будет использован modprobe. Было бы отлично если бы я знал какую задачу вы хотите решить. -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 15:22 ` Alexey Gladkov @ 2021-03-31 15:37 ` Антон Мидюков 2021-03-31 15:54 ` Leonid Krivoshein 2021-03-31 15:57 ` Alexey Gladkov 0 siblings, 2 replies; 48+ messages in thread From: Антон Мидюков @ 2021-03-31 15:37 UTC (permalink / raw) To: make-initrd 31.03.2021 22:22, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 09:50:11PM +0700, Антон Мидюков wrote: >> 31.03.2021 21:40, Alexey Gladkov пишет: >>> On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: >>>> Просто давали команду make-initrd, предварительно скармливая разными >>>> способами список модулей через /etc/initrd.mk. Перепробованы были разные >>>> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы >>>> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех >>>> случаях модули попадают, но в основном не туда, куда надо. См. во вложении >>>> пример вывода initrd-ls и один из вариантов скриптов, которым это делается. >>> >>> PUT_DIRS с самого момента создания make-initrd копирует содержимое >>> каталога без самого каталога. Например так копируется: >>> >>> PUT_DIRS += /lib/initrd >>> >> >> Вот, именно в этом и проблема. Нужно найти все модули в целевых каталогах и добавить в список MODULES_LOAD. >> В MODULES_LOAD каталоги добавлять же нельзя? > > Это список имён модулей. Он же потом будет использован modprobe. > Было бы отлично если бы я знал какую задачу вы хотите решить. > Решается задача упаковки при помощи make-initrd модулей, которые даны списком. В списке есть как каталоги, так и название модулей, вида <имя_модуля.ko> Список был изначально предназначен для mkmodpack. Конечная задача загрузка iso образа с initrd.img с использованием фичи pipeline вместо propagator. Если модули просто добавить в initrd то они не подгружаются. waitdev не находит устройство (файловую систему isofs) по UUID. Поэтому весь список модулей загружаем. -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 15:37 ` Антон Мидюков @ 2021-03-31 15:54 ` Leonid Krivoshein 2021-03-31 15:57 ` Alexey Gladkov 1 sibling, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 15:54 UTC (permalink / raw) To: make-initrd [-- Attachment #1: Type: text/plain, Size: 2717 bytes --] 31.03.2021 18:37, Антон Мидюков пишет: > 31.03.2021 22:22, Alexey Gladkov пишет: >> On Wed, Mar 31, 2021 at 09:50:11PM +0700, Антон Мидюков wrote: >>> 31.03.2021 21:40, Alexey Gladkov пишет: >>>> On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: >>>>> Просто давали команду make-initrd, предварительно скармливая разными >>>>> способами список модулей через /etc/initrd.mk. Перепробованы были разные >>>>> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы >>>>> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех >>>>> случаях модули попадают, но в основном не туда, куда надо. См. во вложении >>>>> пример вывода initrd-ls и один из вариантов скриптов, которым это делается. >>>> PUT_DIRS с самого момента создания make-initrd копирует содержимое >>>> каталога без самого каталога. Например так копируется: >>>> >>>> PUT_DIRS += /lib/initrd >>>> >>> Вот, именно в этом и проблема. Нужно найти все модули в целевых каталогах и добавить в список MODULES_LOAD. >>> В MODULES_LOAD каталоги добавлять же нельзя? >> Это список имён модулей. Он же потом будет использован modprobe. >> Было бы отлично если бы я знал какую задачу вы хотите решить. >> > Решается задача упаковки при помощи make-initrd модулей, которые даны списком. В списке есть как каталоги, так и название модулей, вида <имя_модуля.ko> > Список был изначально предназначен для mkmodpack. > Конечная задача загрузка iso образа с initrd.img с использованием фичи pipeline вместо propagator. > Если модули просто добавить в initrd то они не подгружаются. waitdev не находит устройство (файловую систему isofs) по UUID. > Поэтому весь список модулей загружаем. > Другой разговор. Теперь всё получилось! -- Best regards, Leonid Krivoshein. [-- Attachment #2: 511.lst.gz --] [-- Type: application/gzip, Size: 16759 bytes --] [-- Attachment #3: 80-make-initrd-for-pipeline --] [-- Type: text/plain, Size: 2166 bytes --] #!/bin/sh -efux # NB: /etc/initrd.mk carefully prepared by earlier scripts fatal() { echo "** error: $@" >&1; exit 1; } kver= for KFLAVOUR in $GLOBAL_KFLAVOURS; do kver+=" $(rpm -qa 'kernel-image*' \ --qf '%{version}-%{name}-%{release}\n' \ | grep "$KFLAVOUR" \ | sed 's/kernel-image-//')" done [ -n "$kver" ] || fatal "no kernel version identified" INITRD_FEATURES+="add-modules compress cleanup rdshell pipeline" INITRD_MODULES="$(grep -v ^# /.in/modules | grep -v / | grep .ko | sort -u)" INITRD_PUT_DIRS="$(grep -v ^# /.in/modules | grep -v .ko | sort -u)" initrd_modules_find() { if [ -n "$INITRD_MODULES" ]; then echo "MODULES_LOAD += \\" for INITRD_MODULE in $INITRD_MODULES; do MODNAME="$(find /lib/modules/$KVER -type f -name $INITRD_MODULE)" [ -z "$MODNAME" ] || echo " $(basename "$MODNAME" |sed -E 's/\.ko(\.gz)?$//') \\" done echo " #" fi if [ -n "$INITRD_PUT_DIRS" ]; then echo "MODULES_LOAD += \\" for INITRD_PUT_DIR in $INITRD_PUT_DIRS; do [ -d "/lib/modules/$KVER/$INITRD_PUT_DIR" ] || continue MODLIST="$(find /lib/modules/$KVER/$INITRD_PUT_DIR -type f)" [ -n "$MODLIST" ] || continue for MODNAME in $MODLIST; do echo " $(basename "$MODNAME" |sed -E 's/\.ko(\.gz)?$//') \\" done done echo " #" fi } # FIXME: large storage systems can get that tmpfs filled up # with debug data as of make-initrd 2.2.12 rm -vf /usr/share/make-initrd/data/etc/udev/rules.d/00-debug.rules \ /usr/share/make-initrd/data/lib/uevent/filters/debug MAKE_INITRD_OPTS="--no-checks AUTODETECT=" MAKE_INITRD_VER="`make-initrd -V \ | sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`" [ -z "$GLOBAL_VERBOSE" ] || MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS -v" cd /boot for KVER in $kver; do touch /etc/initrd.mk cp -Lvf /etc/initrd.mk /etc/initrd-mk.bak initrd_modules_find >> /etc/initrd.mk make-initrd $MAKE_INITRD_OPTS -k "$KVER" \ FEATURES+="$INITRD_FEATURES" || fatal "make-initrd failed" mv -vf /etc/initrd-mk.bak /etc/initrd.mk done case `arch` in e2k) kname=image;; *) kname=vmlinuz;; esac rm -f $kname initrd.img ln -s $kname-$KVER $kname ln -s initrd-$KVER.img initrd.img : ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 15:37 ` Антон Мидюков 2021-03-31 15:54 ` Leonid Krivoshein @ 2021-03-31 15:57 ` Alexey Gladkov 2021-03-31 16:20 ` Leonid Krivoshein 1 sibling, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 15:57 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 10:37:35PM +0700, Антон Мидюков wrote: > 31.03.2021 22:22, Alexey Gladkov пишет: > > On Wed, Mar 31, 2021 at 09:50:11PM +0700, Антон Мидюков wrote: > >> 31.03.2021 21:40, Alexey Gladkov пишет: > >>> On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: > >>>> Просто давали команду make-initrd, предварительно скармливая разными > >>>> способами список модулей через /etc/initrd.mk. Перепробованы были разные > >>>> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы > >>>> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех > >>>> случаях модули попадают, но в основном не туда, куда надо. См. во вложении > >>>> пример вывода initrd-ls и один из вариантов скриптов, которым это делается. > >>> > >>> PUT_DIRS с самого момента создания make-initrd копирует содержимое > >>> каталога без самого каталога. Например так копируется: > >>> > >>> PUT_DIRS += /lib/initrd > >>> > >> > >> Вот, именно в этом и проблема. Нужно найти все модули в целевых каталогах и добавить в список MODULES_LOAD. > >> В MODULES_LOAD каталоги добавлять же нельзя? > > > > Это список имён модулей. Он же потом будет использован modprobe. > > Было бы отлично если бы я знал какую задачу вы хотите решить. > > > > Решается задача упаковки при помощи make-initrd модулей, которые даны списком. В списке есть как каталоги, так и название модулей, вида <имя_модуля.ko> > Список был изначально предназначен для mkmodpack. Передайте всё в PUT_FILES. Если в списке будет каталог, то он скопируется рекурсивно. Например: $ grep -v ^# /etc/initrd.mk AUTODETECT = all PUT_FILES += /lib/modules/5.8.0/kernel/fs $ make-initrd -k 5.12.0-rc4 -c /etc/initrd.mk ... $ initrd-ls /tmp/initrd-5.12.0-rc4.img | grep '5\.8\.0/.*\.ko' |head -5 2 -rw-r--r-- 1 0 0 21264 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/zonefs/zonefs.ko.xz 2 -rw-r--r-- 1 0 0 666356 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/xfs/xfs.ko.xz 2 -rw-r--r-- 1 0 0 69816 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/ufs/ufs.ko.xz 2 -rw-r--r-- 1 0 0 98740 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/udf/udf.ko.xz 2 -rw-r--r-- 1 0 0 53596 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/squashfs/squashfs.ko.xz > Конечная задача загрузка iso образа с initrd.img с использованием фичи pipeline вместо propagator. > Если модули просто добавить в initrd то они не подгружаются. waitdev не находит устройство (файловую систему isofs) по UUID. > Поэтому весь список модулей загружаем. Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? Вы же знаете, что вы хотите ждать исошку. Для исошки вам нужно подождать пока udev загрузит нужный модуль и пока не появится условный /dev/cdrom. Для этого вообще не нужно ничего грузить руками (см test-pipeline-iso-squash). Возможно, понадобиться дополнительная команда, которая определит, что в приводе есть диск и он правильный. Но это уже совсем другое. -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 15:57 ` Alexey Gladkov @ 2021-03-31 16:20 ` Leonid Krivoshein 2021-03-31 16:55 ` Alexey Gladkov 0 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 16:20 UTC (permalink / raw) To: make-initrd 31.03.2021 18:57, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 10:37:35PM +0700, Антон Мидюков wrote: >> 31.03.2021 22:22, Alexey Gladkov пишет: >>> On Wed, Mar 31, 2021 at 09:50:11PM +0700, Антон Мидюков wrote: >>>> 31.03.2021 21:40, Alexey Gladkov пишет: >>>>> On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote: >>>>>> Просто давали команду make-initrd, предварительно скармливая разными >>>>>> способами список модулей через /etc/initrd.mk. Перепробованы были разные >>>>>> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы >>>>>> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех >>>>>> случаях модули попадают, но в основном не туда, куда надо. См. во вложении >>>>>> пример вывода initrd-ls и один из вариантов скриптов, которым это делается. >>>>> PUT_DIRS с самого момента создания make-initrd копирует содержимое >>>>> каталога без самого каталога. Например так копируется: >>>>> >>>>> PUT_DIRS += /lib/initrd >>>>> >>>> Вот, именно в этом и проблема. Нужно найти все модули в целевых каталогах и добавить в список MODULES_LOAD. >>>> В MODULES_LOAD каталоги добавлять же нельзя? >>> Это список имён модулей. Он же потом будет использован modprobe. >>> Было бы отлично если бы я знал какую задачу вы хотите решить. >>> >> Решается задача упаковки при помощи make-initrd модулей, которые даны списком. В списке есть как каталоги, так и название модулей, вида <имя_модуля.ko> >> Список был изначально предназначен для mkmodpack. > Передайте всё в PUT_FILES. Если в списке будет каталог, то он скопируется > рекурсивно. > > Например: > > $ grep -v ^# /etc/initrd.mk > AUTODETECT = all > PUT_FILES += /lib/modules/5.8.0/kernel/fs > > $ make-initrd -k 5.12.0-rc4 -c /etc/initrd.mk > ... > > $ initrd-ls /tmp/initrd-5.12.0-rc4.img | grep '5\.8\.0/.*\.ko' |head -5 > 2 -rw-r--r-- 1 0 0 21264 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/zonefs/zonefs.ko.xz > 2 -rw-r--r-- 1 0 0 666356 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/xfs/xfs.ko.xz > 2 -rw-r--r-- 1 0 0 69816 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/ufs/ufs.ko.xz > 2 -rw-r--r-- 1 0 0 98740 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/udf/udf.ko.xz > 2 -rw-r--r-- 1 0 0 53596 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/squashfs/squashfs.ko.xz > >> Конечная задача загрузка iso образа с initrd.img с использованием фичи pipeline вместо propagator. >> Если модули просто добавить в initrd то они не подгружаются. waitdev не находит устройство (файловую систему isofs) по UUID. >> Поэтому весь список модулей загружаем. > Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? > Вы же знаете, что вы хотите ждать исошку. Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd. И конечно теперь пойдём ещё раз по пути PUT_FILES += ... > Для исошки вам нужно подождать пока udev загрузит нужный модуль и пока не > появится условный /dev/cdrom. Для этого вообще не нужно ничего грузить > руками (см test-pipeline-iso-squash). > > Возможно, понадобиться дополнительная команда, которая определит, что в > приводе есть диск и он правильный. Но это уже совсем другое. Как раз хочу сделать cdrom вместо waitdev, чтобы там же было сразу и mountfs, но ещё не приступал. А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп для waitdev? Ведь сейчас waitdev позволяет указать только само устройство, подобно root=, но указать дополнительные параметры не получится. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 16:20 ` Leonid Krivoshein @ 2021-03-31 16:55 ` Alexey Gladkov 2021-03-31 17:02 ` Антон Мидюков ` (2 more replies) 0 siblings, 3 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 16:55 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: > > Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? > > Вы же знаете, что вы хотите ждать исошку. > > Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd. > И конечно теперь пойдём ещё раз по пути PUT_FILES += ... Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и указывать в PUT_FILES. Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно их искать руками. Для модулей работает: MODULES_TRY_ADD += drivers/char/ > > Для исошки вам нужно подождать пока udev загрузит нужный модуль и пока не > > появится условный /dev/cdrom. Для этого вообще не нужно ничего грузить > > руками (см test-pipeline-iso-squash). > > > > Возможно, понадобиться дополнительная команда, которая определит, что в > > приводе есть диск и он правильный. Но это уже совсем другое. > > Как раз хочу сделать cdrom вместо waitdev, чтобы там же было сразу и > mountfs, но ещё не приступал. Это логично и вполне ожидаемо. > А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп > для waitdev? А какой у этого юскейс ? waitdev только ожидает появления устройства. Оно не монтируется. Для mountfs наверно в этом есть смысл. > Ведь сейчас waitdev позволяет указать только само устройство, > подобно root=, но указать дополнительные параметры не получится. -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 16:55 ` Alexey Gladkov @ 2021-03-31 17:02 ` Антон Мидюков 2021-03-31 17:17 ` Alexey Gladkov 2021-03-31 18:03 ` Leonid Krivoshein 2021-03-31 23:49 ` Leonid Krivoshein 2 siblings, 1 reply; 48+ messages in thread From: Антон Мидюков @ 2021-03-31 17:02 UTC (permalink / raw) To: make-initrd 31.03.2021 23:55, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: >>> Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? >>> Вы же знаете, что вы хотите ждать исошку. >> >> Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd. >> И конечно теперь пойдём ещё раз по пути PUT_FILES += ... > > Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и > указывать в PUT_FILES. > > Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно > их искать руками. Для модулей работает: > > MODULES_TRY_ADD += drivers/char/ Это то, что нам надо! Не надо ничего проверять, добавлять каталоги так. Не знал, что так можно. На конце обязательно должен быть '/' ? -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 17:02 ` Антон Мидюков @ 2021-03-31 17:17 ` Alexey Gladkov 2021-03-31 18:08 ` Leonid Krivoshein 0 siblings, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 17:17 UTC (permalink / raw) To: make-initrd On Thu, Apr 01, 2021 at 12:02:57AM +0700, Антон Мидюков wrote: > 31.03.2021 23:55, Alexey Gladkov пишет: > > On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: > >>> Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? > >>> Вы же знаете, что вы хотите ждать исошку. > >> > >> Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd. > >> И конечно теперь пойдём ещё раз по пути PUT_FILES += ... > > > > Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и > > указывать в PUT_FILES. > > > > Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно > > их искать руками. Для модулей работает: > > > > MODULES_TRY_ADD += drivers/char/ > > Это то, что нам надо! Не надо ничего проверять, добавлять каталоги так. Не знал, что так можно. > На конце обязательно должен быть '/' ? Это даже не строка. Это regexp [1], который будет применён к списку модулей. Слэш в конце гарантирует, что не будут положены char-foo-bar.ko [1] https://github.com/osboot/make-initrd/blob/master/features/add-modules/bin/put-modules#L48-L56 -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 17:17 ` Alexey Gladkov @ 2021-03-31 18:08 ` Leonid Krivoshein 2021-03-31 18:10 ` Leonid Krivoshein 2021-03-31 18:29 ` Alexey Gladkov 0 siblings, 2 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 18:08 UTC (permalink / raw) To: make-initrd 31.03.2021 20:17, Alexey Gladkov пишет: > On Thu, Apr 01, 2021 at 12:02:57AM +0700, Антон Мидюков wrote: >> 31.03.2021 23:55, Alexey Gladkov пишет: >>> [...] >>> Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и >>> указывать в PUT_FILES. >>> >>> Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно >>> их искать руками. Для модулей работает: >>> >>> MODULES_TRY_ADD += drivers/char/ >> Это то, что нам надо! Не надо ничего проверять, добавлять каталоги так. Не знал, что так можно. >> На конце обязательно должен быть '/' ? > Это даже не строка. Это regexp [1], который будет применён к списку > модулей. Слэш в конце гарантирует, что не будут положены char-foo-bar.ko > > [1] https://github.com/osboot/make-initrd/blob/master/features/add-modules/bin/put-modules#L48-L56 По ходу вспомнили про существование фич modules-* и в случае создания LiveCD их как раз есть смысл сразу проверить. Там же отыскиваются всякие MODULES_PATTERN_SETS += ... что не менее полезно, IMHO. Вот только сходу не нашёл описания для предикатов вида alias: name: not-filename: итп, хотя и так можно догадаться, но нет исчерпывающего списка. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:08 ` Leonid Krivoshein @ 2021-03-31 18:10 ` Leonid Krivoshein 2021-03-31 18:29 ` Alexey Gladkov 1 sibling, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 18:10 UTC (permalink / raw) To: make-initrd 31.03.2021 21:08, Leonid Krivoshein пишет: > > > 31.03.2021 20:17, Alexey Gladkov пишет: >> On Thu, Apr 01, 2021 at 12:02:57AM +0700, Антон Мидюков wrote: >>> 31.03.2021 23:55, Alexey Gladkov пишет: >>>> [...] >>>> Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и >>>> указывать в PUT_FILES. >>>> >>>> Также, чтобы положить какой-то подкаталог с модулями совершенно не >>>> нужно >>>> их искать руками. Для модулей работает: >>>> >>>> MODULES_TRY_ADD += drivers/char/ >>> Это то, что нам надо! Не надо ничего проверять, добавлять каталоги >>> так. Не знал, что так можно. >>> На конце обязательно должен быть '/' ? >> Это даже не строка. Это regexp [1], который будет применён к списку >> модулей. Слэш в конце гарантирует, что не будут положены char-foo-bar.ko >> >> [1] >> https://github.com/osboot/make-initrd/blob/master/features/add-modules/bin/put-modules#L48-L56 > > По ходу вспомнили про существование фич modules-* и в случае создания > LiveCD их как раз есть смысл сразу проверить. Там же отыскиваются > всякие MODULES_PATTERN_SETS += ... что не менее полезно, IMHO. Вот > только сходу не нашёл описания для предикатов вида alias: name: > not-filename: итп, хотя и так можно догадаться, но нет исчерпывающего > списка. > Ну вот, по той же ссылке и нашёл. :-) https://github.com/osboot/make-initrd/blob/master/features/add-modules/bin/put-modules#L121 -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:08 ` Leonid Krivoshein 2021-03-31 18:10 ` Leonid Krivoshein @ 2021-03-31 18:29 ` Alexey Gladkov 2021-03-31 18:54 ` Leonid Krivoshein 1 sibling, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 18:29 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 09:08:01PM +0300, Leonid Krivoshein wrote: > > > 31.03.2021 20:17, Alexey Gladkov пишет: > > On Thu, Apr 01, 2021 at 12:02:57AM +0700, Антон Мидюков wrote: > > > 31.03.2021 23:55, Alexey Gladkov пишет: > > > > [...] > > > > Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и > > > > указывать в PUT_FILES. > > > > > > > > Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно > > > > их искать руками. Для модулей работает: > > > > > > > > MODULES_TRY_ADD += drivers/char/ > > > Это то, что нам надо! Не надо ничего проверять, добавлять каталоги так. Не знал, что так можно. > > > На конце обязательно должен быть '/' ? > > Это даже не строка. Это regexp [1], который будет применён к списку > > модулей. Слэш в конце гарантирует, что не будут положены char-foo-bar.ko > > > > [1] https://github.com/osboot/make-initrd/blob/master/features/add-modules/bin/put-modules#L48-L56 > > По ходу вспомнили про существование фич modules-* и в случае создания LiveCD > их как раз есть смысл сразу проверить. Там же отыскиваются всякие > MODULES_PATTERN_SETS += ... что не менее полезно, IMHO. Вот только сходу не > нашёл описания для предикатов вида alias: name: not-filename: итп, хотя и > так можно догадаться, но нет исчерпывающего списка. Вот этого описания недостаточно ? https://github.com/osboot/make-initrd/tree/master/features/add-modules#pattern-sets -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:29 ` Alexey Gladkov @ 2021-03-31 18:54 ` Leonid Krivoshein 0 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 18:54 UTC (permalink / raw) To: make-initrd 31.03.2021 21:29, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 09:08:01PM +0300, Leonid Krivoshein wrote: >> [...] >> >> По ходу вспомнили про существование фич modules-* и в случае создания LiveCD >> их как раз есть смысл сразу проверить. Там же отыскиваются всякие >> MODULES_PATTERN_SETS += ... что не менее полезно, IMHO. Вот только сходу не >> нашёл описания для предикатов вида alias: name: not-filename: итп, хотя и >> так можно догадаться, но нет исчерпывающего списка. > Вот этого описания недостаточно ? > > https://github.com/osboot/make-initrd/tree/master/features/add-modules#pattern-sets О, слона-то я и не заметил! :-) -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 16:55 ` Alexey Gladkov 2021-03-31 17:02 ` Антон Мидюков @ 2021-03-31 18:03 ` Leonid Krivoshein 2021-03-31 18:11 ` Антон Мидюков 2021-03-31 18:45 ` Alexey Gladkov 2021-03-31 23:49 ` Leonid Krivoshein 2 siblings, 2 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 18:03 UTC (permalink / raw) To: make-initrd 31.03.2021 19:55, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: >>> Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? >>> Вы же знаете, что вы хотите ждать исошку. >> Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd. >> И конечно теперь пойдём ещё раз по пути PUT_FILES += ... > Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и > указывать в PUT_FILES. > > Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно > их искать руками. Для модулей работает: > > MODULES_TRY_ADD += drivers/char/ > >>> Для исошки вам нужно подождать пока udev загрузит нужный модуль и пока не >>> появится условный /dev/cdrom. Для этого вообще не нужно ничего грузить >>> руками (см test-pipeline-iso-squash). >>> >>> Возможно, понадобиться дополнительная команда, которая определит, что в >>> приводе есть диск и он правильный. Но это уже совсем другое. >> Как раз хочу сделать cdrom вместо waitdev, чтобы там же было сразу и >> mountfs, но ещё не приступал. > Это логично и вполне ожидаемо. > >> А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп >> для waitdev? > А какой у этого юскейс ? Например, чтобы ФС монтировалась только в read-only, а поверх уже строить оверлей. В общем-то такой же смысл, как у всех root*= > waitdev только ожидает появления устройства. Оно не монтируется. Для > mountfs наверно в этом есть смысл. Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит waitdev с первым moutfs (isofs). >> Ведь сейчас waitdev позволяет указать только само устройство, >> подобно root=, но указать дополнительные параметры не получится. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:03 ` Leonid Krivoshein @ 2021-03-31 18:11 ` Антон Мидюков 2021-03-31 18:24 ` Michael Shigorin ` (2 more replies) 2021-03-31 18:45 ` Alexey Gladkov 1 sibling, 3 replies; 48+ messages in thread From: Антон Мидюков @ 2021-03-31 18:11 UTC (permalink / raw) To: make-initrd 01.04.2021 01:03, Leonid Krivoshein пишет: > > > 31.03.2021 19:55, Alexey Gladkov пишет: >> On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: >>>> Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? >>>> Вы же знаете, что вы хотите ждать исошку. >>> Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd. >>> И конечно теперь пойдём ещё раз по пути PUT_FILES += ... >> Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и >> указывать в PUT_FILES. >> >> Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно >> их искать руками. Для модулей работает: >> >> MODULES_TRY_ADD += drivers/char/ >> >>>> Для исошки вам нужно подождать пока udev загрузит нужный модуль и пока не >>>> появится условный /dev/cdrom. Для этого вообще не нужно ничего грузить >>>> руками (см test-pipeline-iso-squash). >>>> >>>> Возможно, понадобиться дополнительная команда, которая определит, что в >>>> приводе есть диск и он правильный. Но это уже совсем другое. >>> Как раз хочу сделать cdrom вместо waitdev, чтобы там же было сразу и >>> mountfs, но ещё не приступал. >> Это логично и вполне ожидаемо. >> >>> А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп >>> для waitdev? >> А какой у этого юскейс ? > > Например, чтобы ФС монтировалась только в read-only, а поверх уже строить оверлей. В общем-то такой же смысл, как у всех root*= > > >> waitdev только ожидает появления устройства. Оно не монтируется. Для >> mountfs наверно в этом есть смысл. > > Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит waitdev с первым moutfs (isofs). Мне кажется, лучше делать универсальный disk=UUID=<UUID>. Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. > > >>> Ведь сейчас waitdev позволяет указать только само устройство, >>> подобно root=, но указать дополнительные параметры не получится. > -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:11 ` Антон Мидюков @ 2021-03-31 18:24 ` Michael Shigorin 2021-03-31 19:02 ` Leonid Krivoshein 2021-03-31 18:38 ` Alexey Gladkov 2021-03-31 18:44 ` Leonid Krivoshein 2 siblings, 1 reply; 48+ messages in thread From: Michael Shigorin @ 2021-03-31 18:24 UTC (permalink / raw) To: make-initrd On Thu, Apr 01, 2021 at 01:11:38AM +0700, Антон Мидюков wrote: > > Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom > > и объединит waitdev с первым moutfs (isofs). > Мне кажется, лучше делать универсальный disk=UUID=<UUID>. > Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. Можно искать stage2 по _его_ хэшу, как это было сделано в propagator (соответствующий кусок в mkimage-profiles ищется по "rescue_hash", упоминал Лёне недавно). Это страхует от подсовывания/подхватывания левого stage2, но обходится в соответствующее кол-во I/O и вычислений (хорошо сочетается с _отсутствующим_ lowmem в случае пропагатора, т.к. всяко уже закэшировали). -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:24 ` Michael Shigorin @ 2021-03-31 19:02 ` Leonid Krivoshein 0 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 19:02 UTC (permalink / raw) To: make-initrd 31.03.2021 21:24, Michael Shigorin пишет: > On Thu, Apr 01, 2021 at 01:11:38AM +0700, Антон Мидюков wrote: >>> Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom >>> и объединит waitdev с первым moutfs (isofs). >> Мне кажется, лучше делать универсальный disk=UUID=<UUID>. >> Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. > Можно искать stage2 по _его_ хэшу, как это было сделано > в propagator (соответствующий кусок в mkimage-profiles > ищется по "rescue_hash", упоминал Лёне недавно). Про эту фичу знаю "с начала времён", учёл в iso2stick. :-) Не думаю, что её стоит использовать для поиска подходящего stage2. Разве что по требованию каких-нибудь регуляторов в дополнении к... UUID'ов вполне достаточно их можно получать/генерить заранее. > Это страхует от подсовывания/подхватывания левого stage2, Вот да, она для дополнительной безопасности, но не для быстрого поиска. > но обходится в соответствующее кол-во I/O и вычислений > (хорошо сочетается с _отсутствующим_ lowmem в случае > пропагатора, т.к. всяко уже закэшировали). -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:11 ` Антон Мидюков 2021-03-31 18:24 ` Michael Shigorin @ 2021-03-31 18:38 ` Alexey Gladkov 2021-03-31 18:49 ` Leonid Krivoshein ` (2 more replies) 2021-03-31 18:44 ` Leonid Krivoshein 2 siblings, 3 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 18:38 UTC (permalink / raw) To: make-initrd On Thu, Apr 01, 2021 at 01:11:38AM +0700, Антон Мидюков wrote: > >> waitdev только ожидает появления устройства. Оно не монтируется. Для > >> mountfs наверно в этом есть смысл. > > > > Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит waitdev с первым moutfs (isofs). > > Мне кажется, лучше делать универсальный disk=UUID=<UUID>. Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. Я же писал [1], что параметр у waitdev имеет тот же формат, что и root=*. То есть он умеет waitdev=LABEL=*, waitdev=UUID=* и т.д. [1] https://github.com/osboot/make-initrd/tree/master/features/pipeline#boot-parameters -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:38 ` Alexey Gladkov @ 2021-03-31 18:49 ` Leonid Krivoshein 2021-03-31 19:20 ` Leonid Krivoshein 2021-04-01 2:32 ` Антон Мидюков 2 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 18:49 UTC (permalink / raw) To: make-initrd 31.03.2021 21:38, Alexey Gladkov пишет: > On Thu, Apr 01, 2021 at 01:11:38AM +0700, Антон Мидюков wrote: >>>> waitdev только ожидает появления устройства. Оно не монтируется. Для >>>> mountfs наверно в этом есть смысл. >>> Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит waitdev с первым moutfs (isofs). >> Мне кажется, лучше делать универсальный disk=UUID=<UUID>. Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. > Я же писал [1], что параметр у waitdev имеет тот же формат, что и root=*. > То есть он умеет waitdev=LABEL=*, waitdev=UUID=* и т.д. > > [1] https://github.com/osboot/make-initrd/tree/master/features/pipeline#boot-parameters В том и дело, что сейчас без предварительной загрузки модуля isofs конструкция wiatdev=UUID=@UUID@ не отрабатывает. Кстати, интересно, будет ли она отрабатывать на обычных локальных носителях, если их файловые системы предварительно никто не загрузит? Ведь при обнаружении раздела ext4 возможно загрузить модуль ext4 или нужно всё равно его грузить предварительно? -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:38 ` Alexey Gladkov 2021-03-31 18:49 ` Leonid Krivoshein @ 2021-03-31 19:20 ` Leonid Krivoshein 2021-04-01 2:32 ` Антон Мидюков 2 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 19:20 UTC (permalink / raw) To: make-initrd 31.03.2021 21:38, Alexey Gladkov пишет: > On Thu, Apr 01, 2021 at 01:11:38AM +0700, Антон Мидюков wrote: >>>> waitdev только ожидает появления устройства. Оно не монтируется. Для >>>> mountfs наверно в этом есть смысл. >>> Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит waitdev с первым moutfs (isofs). >> Мне кажется, лучше делать универсальный disk=UUID=<UUID>. Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. > Я же писал [1], что параметр у waitdev имеет тот же формат, что и root=*. > То есть он умеет waitdev=LABEL=*, waitdev=UUID=* и т.д. > > [1] https://github.com/osboot/make-initrd/tree/master/features/pipeline#boot-parameters > Всё же я был неправ, грузится по UUID. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:38 ` Alexey Gladkov 2021-03-31 18:49 ` Leonid Krivoshein 2021-03-31 19:20 ` Leonid Krivoshein @ 2021-04-01 2:32 ` Антон Мидюков 2 siblings, 0 replies; 48+ messages in thread From: Антон Мидюков @ 2021-04-01 2:32 UTC (permalink / raw) To: make-initrd 01.04.2021 01:38, Alexey Gladkov пишет: > On Thu, Apr 01, 2021 at 01:11:38AM +0700, Антон Мидюков wrote: >>>> waitdev только ожидает появления устройства. Оно не монтируется. Для >>>> mountfs наверно в этом есть смысл. >>> >>> Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит waitdev с первым moutfs (isofs). >> >> Мне кажется, лучше делать универсальный disk=UUID=<UUID>. Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. > > Я же писал [1], что параметр у waitdev имеет тот же формат, что и root=*. > То есть он умеет waitdev=LABEL=*, waitdev=UUID=* и т.д. > > [1] https://github.com/osboot/make-initrd/tree/master/features/pipeline#boot-parameters > Я знаю. Я здесь совсем не о том. Я пишу, что не надо делать аналог cdrom, нужно делать сразу аналог disk propagator'a. Т.е. искать не только isofs, но вообще любую локальную файловую систему с заданным UUID или LABEL. Хотелось бы, чтобы initrd понимал automatic=method:disk,uuid=<UUID>, раскрывал его в root=pipeline pipeline=waitdev,mountfs,mountfs,overlayfs,rootfs waitdev=UUID=@UUID@ mountfs=dev а параметр stage=<STAGENAME> в опцию mountfs=<STAGENAME> Тогда переход с propagator на initrd можно было бы осуществить бесшовно. И некоторые другие методы было бы также здорово преобразовывать из текущего синтаксиса propagator в синтаксис pipeline. Так сказать, интерфейс пользователя хотелось бы оставить близким к прежнему. -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:11 ` Антон Мидюков 2021-03-31 18:24 ` Michael Shigorin 2021-03-31 18:38 ` Alexey Gladkov @ 2021-03-31 18:44 ` Leonid Krivoshein 2 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 18:44 UTC (permalink / raw) To: make-initrd Cc: Евгений Синельников 31.03.2021 21:11, Антон Мидюков пишет: > 01.04.2021 01:03, Leonid Krivoshein пишет: >> >> 31.03.2021 19:55, Alexey Gladkov пишет: >>> On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: >>>>> Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ? >>>>> Вы же знаете, что вы хотите ждать исошку. >>>> Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd. >>>> И конечно теперь пойдём ещё раз по пути PUT_FILES += ... >>> Если ты указал модуль в MODULES_ADD, то нет нужды его искать самому и >>> указывать в PUT_FILES. >>> >>> Также, чтобы положить какой-то подкаталог с модулями совершенно не нужно >>> их искать руками. Для модулей работает: >>> >>> MODULES_TRY_ADD += drivers/char/ >>> >>>>> Для исошки вам нужно подождать пока udev загрузит нужный модуль и пока не >>>>> появится условный /dev/cdrom. Для этого вообще не нужно ничего грузить >>>>> руками (см test-pipeline-iso-squash). >>>>> >>>>> Возможно, понадобиться дополнительная команда, которая определит, что в >>>>> приводе есть диск и он правильный. Но это уже совсем другое. >>>> Как раз хочу сделать cdrom вместо waitdev, чтобы там же было сразу и >>>> mountfs, но ещё не приступал. >>> Это логично и вполне ожидаемо. >>> >>>> А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп >>>> для waitdev? >>> А какой у этого юскейс ? >> Например, чтобы ФС монтировалась только в read-only, а поверх уже строить оверлей. В общем-то такой же смысл, как у всех root*= >> >> >>> waitdev только ожидает появления устройства. Оно не монтируется. Для >>> mountfs наверно в этом есть смысл. >> Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит waitdev с первым moutfs (isofs). > Мне кажется, лучше делать универсальный disk=UUID=<UUID>. Без UUID будет угадайка, вдруг мне повезёт, как у нас сейчас. Как раз с UUID'ом на CDROM сейчас проблема. Возможно sin@ об этом что-то знает, они тут недавно решали похожее для propagator'а. Плохо в этом понимаю, но возможно такой патч её вылечит? /lib/udev/rules.d/60-cdrom_id.rules ... -IMPORT{program}="cdrom_id --lock-media $devnode" +IMPORT{program}="sh -c 'modprobe isofs; cdrom_id --lock-media $devnode'" ... Иначе без MODULES_PRELOAD += isofs по UUID'ам действительно не находится, waitdev ждёт бесконечно. >>>> Ведь сейчас waitdev позволяет указать только само устройство, >>>> подобно root=, но указать дополнительные параметры не получится. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 18:03 ` Leonid Krivoshein 2021-03-31 18:11 ` Антон Мидюков @ 2021-03-31 18:45 ` Alexey Gladkov 1 sibling, 0 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-03-31 18:45 UTC (permalink / raw) To: make-initrd On Wed, Mar 31, 2021 at 09:03:49PM +0300, Leonid Krivoshein wrote: > > > А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп > > > для waitdev? > > А какой у этого юскейс ? > > Например, чтобы ФС монтировалась только в read-only, а поверх уже строить > оверлей. В общем-то такой же смысл, как у всех root*= > > > > waitdev только ожидает появления устройства. Оно не монтируется. Для > > mountfs наверно в этом есть смысл. > > Да, pipeline=cdrom,... как раз будет аналогом automatic=cdrom и объединит > waitdev с первым moutfs (isofs). Да не вопрос. Я примерно так и думал, что будут сделаны подобные команды для использования в pipeline. -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 16:55 ` Alexey Gladkov 2021-03-31 17:02 ` Антон Мидюков 2021-03-31 18:03 ` Leonid Krivoshein @ 2021-03-31 23:49 ` Leonid Krivoshein 2021-04-01 9:02 ` Alexey Gladkov 2 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-03-31 23:49 UTC (permalink / raw) To: make-initrd [-- Attachment #1: Type: text/plain, Size: 1031 bytes --] 31.03.2021 19:55, Alexey Gladkov пишет: > On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: > [...] >> А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп >> для waitdev? > А какой у этого юскейс ? > > waitdev только ожидает появления устройства. Оно не монтируется. Для > mountfs наверно в этом есть смысл. > >> Ведь сейчас waitdev позволяет указать только само устройство, >> подобно root=, но указать дополнительные параметры не получится. В качестве "пробы пера" и консультации (пока не проверял) прикладываю первый патч. Собственно, вопрос в том, можно ли так делать и будет ли это работать? -- Best regards, Leonid Krivoshein. [-- Attachment #2: mountfs.patch --] [-- Type: text/x-patch, Size: 2313 bytes --] commit 2c91f793bde657bb0bbd57b14a49cc5e1728dd19 Author: Leonid Krivoshein <klark@altlinux.org> Date: Thu Apr 1 02:45:23 2021 +0300 pipeline/mountfs: add MOUNTFSOPTS= and MOUNTFSTYPE= parameters diff --git a/features/pipeline/README.md b/features/pipeline/README.md index c573163..fa3f9e3 100644 --- a/features/pipeline/README.md +++ b/features/pipeline/README.md @@ -16,11 +16,16 @@ the previous elements. - `pipeline=name[,name1][,name2]` - the main parameter that determines the order in which pipe elements are called. - `getimage` specifies an URL to fetch and mount. -- `mountfs` specifies a file to mount. -- `overlayfs` defines a list of elements to be combined. - `waitdev` describes the local device to wait. The format of this parameter is the same as `root=`. +## Optional additional parameters + +- `mountfs` specifies a file to mount. +- `mountfstype` specifies a filesystem type. +- `mountfsopts` specifies a mount options. +- `overlayfs` defines a list of elements to be combined. + The separator between the elements is a comma (`,`). The parameters can be specified more than once depending on how many times diff --git a/features/pipeline/data/etc/initrd/cmdline.d/pipeline b/features/pipeline/data/etc/initrd/cmdline.d/pipeline index 4200d57..eb4854e 100644 --- a/features/pipeline/data/etc/initrd/cmdline.d/pipeline +++ b/features/pipeline/data/etc/initrd/cmdline.d/pipeline @@ -3,3 +3,5 @@ register_array string GETIMAGE register_array string MOUNTFS register_array string OVERLAYFS register_array string WAITDEV +register_array string MOUNTFSOPTS +register_array string MOUNTFSTYPE diff --git a/features/pipeline/data/lib/pipeline/mountfs b/features/pipeline/data/lib/pipeline/mountfs index 138afa5..6833455 100755 --- a/features/pipeline/data/lib/pipeline/mountfs +++ b/features/pipeline/data/lib/pipeline/mountfs @@ -9,8 +9,10 @@ target="$(resolve_target "$param")" [ -n "$target" ] || fatal "unable to resolve: $param" -opts= -[ ! -c "$target" ] && [ ! -b "$target" ] || +fstype="$(get_parameter MOUNTFSTYPE)" + +opts="$(get_parameter MOUNTFSOPTS)" +[ ! -c "$target" ] && [ ! -b "$target" ] || [ -n "$opts" ] || opts='ro,loop' -run mount ${opts:+-o $opts} "$target" "$destdir" +run mount ${fstype:+-t $fstype} ${opts:+-o $opts} -- "$target" "$destdir" ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-03-31 23:49 ` Leonid Krivoshein @ 2021-04-01 9:02 ` Alexey Gladkov 2021-04-01 10:38 ` Leonid Krivoshein ` (2 more replies) 0 siblings, 3 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-04-01 9:02 UTC (permalink / raw) To: make-initrd On Thu, Apr 01, 2021 at 02:49:05AM +0300, Leonid Krivoshein wrote: > > 31.03.2021 19:55, Alexey Gladkov пишет: > > On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: > > [...] > > > А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп > > > для waitdev? > > А какой у этого юскейс ? > > > > waitdev только ожидает появления устройства. Оно не монтируется. Для > > mountfs наверно в этом есть смысл. > > > > > Ведь сейчас waitdev позволяет указать только само устройство, > > > подобно root=, но указать дополнительные параметры не получится. > > В качестве "пробы пера" и консультации (пока не проверял) прикладываю первый > патч. > Собственно, вопрос в том, можно ли так делать и будет ли это работать? Ты не пробовал этот код с несколькими mountfs в pipeline. В pipeline идея: В pipeline= перечислены стадии. Параметры для стадий должны идти в том же порядке. Поэтому опциональные параметры не ложатся в эту схему. Я бы предложил синтаксис аналогичный ip=, где разные поля разделены двоеточиями т.е. mountfs=<device>[:<fstype>[:<mountopts>]] -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-01 9:02 ` Alexey Gladkov @ 2021-04-01 10:38 ` Leonid Krivoshein 2021-04-02 17:46 ` Leonid Krivoshein 2021-04-02 18:37 ` Leonid Krivoshein 2 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-04-01 10:38 UTC (permalink / raw) To: make-initrd 01.04.2021 12:02, Alexey Gladkov пишет: > On Thu, Apr 01, 2021 at 02:49:05AM +0300, Leonid Krivoshein wrote: >> 31.03.2021 19:55, Alexey Gladkov пишет: >>> On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: >>> [...] >>>> А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп >>>> для waitdev? >>> А какой у этого юскейс ? >>> >>> waitdev только ожидает появления устройства. Оно не монтируется. Для >>> mountfs наверно в этом есть смысл. >>> >>>> Ведь сейчас waitdev позволяет указать только само устройство, >>>> подобно root=, но указать дополнительные параметры не получится. >> В качестве "пробы пера" и консультации (пока не проверял) прикладываю первый >> патч. >> Собственно, вопрос в том, можно ли так делать и будет ли это работать? > Ты не пробовал этот код с несколькими mountfs в pipeline. > > В pipeline идея: В pipeline= перечислены стадии. Параметры для стадий > должны идти в том же порядке. Поэтому опциональные параметры не ложатся в > эту схему. > > Я бы предложил синтаксис аналогичный ip=, где разные поля разделены > двоеточиями т.е. mountfs=<device>[:<fstype>[:<mountopts>]] Понятно, тогда конечно буду переделывать. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-01 9:02 ` Alexey Gladkov 2021-04-01 10:38 ` Leonid Krivoshein @ 2021-04-02 17:46 ` Leonid Krivoshein 2021-04-02 17:57 ` Leonid Krivoshein 2021-04-02 18:37 ` Leonid Krivoshein 2 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-04-02 17:46 UTC (permalink / raw) To: make-initrd 01.04.2021 12:02, Alexey Gladkov пишет: > On Thu, Apr 01, 2021 at 02:49:05AM +0300, Leonid Krivoshein wrote: >> 31.03.2021 19:55, Alexey Gladkov пишет: >>> On Wed, Mar 31, 2021 at 07:20:58PM +0300, Leonid Krivoshein wrote: >>> [...] >>>> А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, итп >>>> для waitdev? >>> А какой у этого юскейс ? >>> >>> waitdev только ожидает появления устройства. Оно не монтируется. Для >>> mountfs наверно в этом есть смысл. >>> >>>> Ведь сейчас waitdev позволяет указать только само устройство, >>>> подобно root=, но указать дополнительные параметры не получится. >> В качестве "пробы пера" и консультации (пока не проверял) прикладываю первый >> патч. >> Собственно, вопрос в том, можно ли так делать и будет ли это работать? > Ты не пробовал этот код с несколькими mountfs в pipeline. > > В pipeline идея: В pipeline= перечислены стадии. Параметры для стадий > должны идти в том же порядке. Поэтому опциональные параметры не ложатся в > эту схему. > > Я бы предложил синтаксис аналогичный ip=, где разные поля разделены > двоеточиями т.е. mountfs=<device>[:<fstype>[:<mountopts>]] Вчера, наконец, получилось сделать минимально рабочее сцепление при загрузке с CDROM. А как тебе такая идея? diff --git a/data/bin/initrd-sh-functions b/data/bin/initrd-sh-functions index a56e872..a0b5634 100644 --- a/data/bin/initrd-sh-functions +++ b/data/bin/initrd-sh-functions @@ -35,6 +35,15 @@ get_dev() { '') return 1 ;; + cdrom:*) + [ "${ID_CDROM-}" = "1" ] || + return 1 + name="${name#cdrom:}" + name="${name:-/dev/sr0}" + ;; + esac + + case "$name" in UUID=*) [ "${ID_FS_UUID-}" = "${name#UUID=}" ] || return 1 Мне кажется, это позволит указывать waitdev=cdrom: чтобы загрузиться с любого CDROM или ограничивать загрузку только с CDROM. При этом, можно указать вполне конкретный CDROM: waitdev=cdrom:UUID=<uuid> -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-02 17:46 ` Leonid Krivoshein @ 2021-04-02 17:57 ` Leonid Krivoshein 2021-04-04 19:04 ` Konstantin Lepikhov 0 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-04-02 17:57 UTC (permalink / raw) To: make-initrd 02.04.2021 20:46, Leonid Krivoshein пишет: > > + cdrom:*) > + [ "${ID_CDROM-}" = "1" ] || > + return 1 > Может даже лучше так: [ "${ID_CDROM-}" = "1" ] || [ "${ID_FS_TYPE-}" = "iso9660" ] || -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-02 17:57 ` Leonid Krivoshein @ 2021-04-04 19:04 ` Konstantin Lepikhov 2021-04-04 19:21 ` Leonid Krivoshein 0 siblings, 1 reply; 48+ messages in thread From: Konstantin Lepikhov @ 2021-04-04 19:04 UTC (permalink / raw) To: make-initrd Hi Leonid! On 04/02/2021, at 08:57:45 PM you wrote: > > 02.04.2021 20:46, Leonid Krivoshein пишет: > > > > + cdrom:*) > > + [ "${ID_CDROM-}" = "1" ] || > > + return 1 > > > > Может даже лучше так: > > [ "${ID_CDROM-}" = "1" ] || [ "${ID_FS_TYPE-}" = "iso9660" ] || не надо так, FS_TYPE может быть и ext2 и udf и все что угодно вообще то. -- WBR et al. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-04 19:04 ` Konstantin Lepikhov @ 2021-04-04 19:21 ` Leonid Krivoshein 0 siblings, 0 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-04-04 19:21 UTC (permalink / raw) To: make-initrd Приветствую, Константин! 04.04.2021 22:04, Konstantin Lepikhov пишет: > Hi Leonid! > > On 04/02/2021, at 08:57:45 PM you wrote: > >> 02.04.2021 20:46, Leonid Krivoshein пишет: >>> + cdrom:*) >>> + [ "${ID_CDROM-}" = "1" ] || >>> + return 1 >>> >> Может даже лучше так: >> >> [ "${ID_CDROM-}" = "1" ] || [ "${ID_FS_TYPE-}" = "iso9660" ] || > не надо так, FS_TYPE может быть и ext2 и udf и все что угодно вообще то. Тут же "ИЛИ", а не "И". Префикс "CDROM:" подразумевает, что загрузка должна идти: - либо с физического носителя CD/DVD/BlueRay - либо с их симулирующего в виртуальной среде устройства - либо из откуда угодно смонтрованого ISO-образа с ФС ISO-9660 А чтобы грузиться вообще с чего угодно, достаточно этот префикс убрать. P.S.: собрал task #268947 в качестве proof-of-concept, код может быть нерабочий, начинаю отладку... -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-01 9:02 ` Alexey Gladkov 2021-04-01 10:38 ` Leonid Krivoshein 2021-04-02 17:46 ` Leonid Krivoshein @ 2021-04-02 18:37 ` Leonid Krivoshein 2021-04-03 11:09 ` Alexey Gladkov 2 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-04-02 18:37 UTC (permalink / raw) To: make-initrd 01.04.2021 12:02, Alexey Gladkov пишет: > Я бы предложил синтаксис аналогичный ip=, где разные поля разделены > двоеточиями т.е. mountfs=<device>[:<fstype>[:<mountopts>]] И ещё FSTYPE=... по аналогии можно сделать: diff --git a/data/bin/initrd-sh-functions b/data/bin/initrd-sh-functions index a56e872..0e433c6 100644 --- a/data/bin/initrd-sh-functions +++ b/data/bin/initrd-sh-functions @@ -33,10 +33,26 @@ get_dev() { case "$name" in '') return 1 ;; + CDROM:*) + [ "${ID_CDROM-}" = "1" ] || [ "${ID_FS_TYPE-}" = "iso9660" ] || + return 1 + name="${name#CDROM:}" + name="${name:-/dev/sr0}" + ;; + FSTYPE=*:?*) + name="${name#FSTYPE=}" + value="${name%%:*}" + [ "${ID_FS_TYPE-}" = "$value" ] || + return 1 + name="${name#*:}" + ;; + esac + + case "$name" in UUID=*) [ "${ID_FS_UUID-}" = "${name#UUID=}" ] || return 1 ;; LABEL=*) Пока просто посоветоваться... А ещё хотел спросить: в этой же get_dev() есть такая строка: [ "${MAJOR-}" = "$(( $value / 256 ))" ] && [ "${MINOR-}" = "$(( $value % 256 ))" ] || Но я не нашёл выше кода, который присваивал бы значение переменной $value. Тут точно нет ошибки? -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-02 18:37 ` Leonid Krivoshein @ 2021-04-03 11:09 ` Alexey Gladkov 2021-04-03 11:31 ` Leonid Krivoshein 0 siblings, 1 reply; 48+ messages in thread From: Alexey Gladkov @ 2021-04-03 11:09 UTC (permalink / raw) To: make-initrd On Fri, Apr 02, 2021 at 09:37:41PM +0300, Leonid Krivoshein wrote: > > 01.04.2021 12:02, Alexey Gladkov пишет: > > Я бы предложил синтаксис аналогичный ip=, где разные поля разделены > > двоеточиями т.е. mountfs=<device>[:<fstype>[:<mountopts>]] > > И ещё FSTYPE=... по аналогии можно сделать: > > > diff --git a/data/bin/initrd-sh-functions b/data/bin/initrd-sh-functions > index a56e872..0e433c6 100644 > --- a/data/bin/initrd-sh-functions > +++ b/data/bin/initrd-sh-functions > @@ -33,10 +33,26 @@ get_dev() { > > case "$name" in > '') > return 1 > ;; > + CDROM:*) > + [ "${ID_CDROM-}" = "1" ] || [ "${ID_FS_TYPE-}" = > "iso9660" ] || > + return 1 > + name="${name#CDROM:}" > + name="${name:-/dev/sr0}" > + ;; > + FSTYPE=*:?*) > + name="${name#FSTYPE=}" > + value="${name%%:*}" > + [ "${ID_FS_TYPE-}" = "$value" ] || > + return 1 > + name="${name#*:}" > + ;; > + esac > + > + case "$name" in > UUID=*) > [ "${ID_FS_UUID-}" = "${name#UUID=}" ] || > return 1 > ;; > LABEL=*) > $ git grep '\<get_dev ' data/lib/uevent/filters/mountdev:21: get_dev dev "$fsdev" || data/lib/uevent/filters/resume:8:get_dev devresume "${RESUME-}" || features/luks/data/lib/uevent/filters/luks:31: get_dev devluks "$dev" && features/luks/data/lib/uevent/filters/luks:35: get_dev devluks "$DEVNAME" || features/luks/data/lib/uevent/filters/lukskeys:26: get_dev realdev "$keydev" || features/luks/data/lib/uevent/handlers/085-luks:32: get_dev realdev "$luksdev" features/luks/data/lib/uevent/handlers/085-luks:70: get_dev "$luksdev" || features/pipeline/data/lib/uevent/filters/pipeline-waitdev:13: if [ -n "$spec" ] && get_dev dev "$spec"; then Ты правда хочешь, чтобы во всех этих фичах появилась поддержка cdrom:* ? > Пока просто посоветоваться... > А ещё хотел спросить: в этой же get_dev() есть такая строка: > > [ "${MAJOR-}" = "$(( $value / 256 ))" ] && [ "${MINOR-}" = "$(( $value % 256 > ))" ] || > > Но я не нашёл выше кода, который присваивал бы значение переменной $value. > Тут точно нет ошибки? Ты прав. Это регрессия после коммита: 799fd42580f4a7321050bad98d35e97f33275e7f -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-03 11:09 ` Alexey Gladkov @ 2021-04-03 11:31 ` Leonid Krivoshein 2021-04-03 11:37 ` Антон Мидюков 2021-04-03 11:59 ` Alexey Gladkov 0 siblings, 2 replies; 48+ messages in thread From: Leonid Krivoshein @ 2021-04-03 11:31 UTC (permalink / raw) To: make-initrd 03.04.2021 14:09, Alexey Gladkov пишет: > On Fri, Apr 02, 2021 at 09:37:41PM +0300, Leonid Krivoshein wrote: >> 01.04.2021 12:02, Alexey Gladkov пишет: >>> Я бы предложил синтаксис аналогичный ip=, где разные поля разделены >>> двоеточиями т.е. mountfs=<device>[:<fstype>[:<mountopts>]] >> И ещё FSTYPE=... по аналогии можно сделать: >> >> >> diff --git a/data/bin/initrd-sh-functions b/data/bin/initrd-sh-functions >> index a56e872..0e433c6 100644 >> --- a/data/bin/initrd-sh-functions >> +++ b/data/bin/initrd-sh-functions >> @@ -33,10 +33,26 @@ get_dev() { >> >> case "$name" in >> '') >> return 1 >> ;; >> + CDROM:*) >> + [ "${ID_CDROM-}" = "1" ] || [ "${ID_FS_TYPE-}" = >> "iso9660" ] || >> + return 1 >> + name="${name#CDROM:}" >> + name="${name:-/dev/sr0}" >> + ;; >> + FSTYPE=*:?*) >> + name="${name#FSTYPE=}" >> + value="${name%%:*}" >> + [ "${ID_FS_TYPE-}" = "$value" ] || >> + return 1 >> + name="${name#*:}" >> + ;; >> + esac >> + >> + case "$name" in >> UUID=*) >> [ "${ID_FS_UUID-}" = "${name#UUID=}" ] || >> return 1 >> ;; >> LABEL=*) >> > $ git grep '\<get_dev ' > data/lib/uevent/filters/mountdev:21: get_dev dev "$fsdev" || > data/lib/uevent/filters/resume:8:get_dev devresume "${RESUME-}" || > features/luks/data/lib/uevent/filters/luks:31: get_dev devluks "$dev" && > features/luks/data/lib/uevent/filters/luks:35: get_dev devluks "$DEVNAME" || > features/luks/data/lib/uevent/filters/lukskeys:26: get_dev realdev "$keydev" || > features/luks/data/lib/uevent/handlers/085-luks:32: get_dev realdev "$luksdev" > features/luks/data/lib/uevent/handlers/085-luks:70: get_dev "$luksdev" || > features/pipeline/data/lib/uevent/filters/pipeline-waitdev:13: if [ -n "$spec" ] && get_dev dev "$spec"; then > > Ты правда хочешь, чтобы во всех этих фичах появилась поддержка cdrom:* ? Пока CDROM нужен лишь одной фиче (последняя строка), но, вдруг ещё где потребуется? Соответственно, варианта только два: - либо предусмотреть в get_dev() возможность указывать префиксы a.k.a CDROM: , FSTYPE: для всех, кто запрашивает get_dev(). - либо сделать обёртку типа get_pipeline_dev() и вызывать из неё get_dev(), а обёртку вызывать из pipeline-waitdev:13 Мне больше нравится первый вариант, но я же советуюсь. По идее на перечисленных "клиентов" эта "возможность" влиять не должна. Префиксы позволяют дополнительно ограничить спецификацию, но никто же не заставляет использовать эти префиксы там, где они не требуются. Но можно и заюзать, например, так: resume=FSTYPE=swap:/dev/sdb3 и в таком случае devresume получит значение только в том случае, если /dev/sdb3 является SWAP-разделом. Таких префиксов можно и больше напридумывать. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-03 11:31 ` Leonid Krivoshein @ 2021-04-03 11:37 ` Антон Мидюков 2021-04-03 12:16 ` Leonid Krivoshein 2021-04-03 11:59 ` Alexey Gladkov 1 sibling, 1 reply; 48+ messages in thread From: Антон Мидюков @ 2021-04-03 11:37 UTC (permalink / raw) To: make-initrd 03.04.2021 18:31, Leonid Krivoshein пишет: > > 03.04.2021 14:09, Alexey Gladkov пишет: >> On Fri, Apr 02, 2021 at 09:37:41PM +0300, Leonid Krivoshein wrote: >>> 01.04.2021 12:02, Alexey Gladkov пишет: >>>> Я бы предложил синтаксис аналогичный ip=, где разные поля разделены >>>> двоеточиями т.е. mountfs=<device>[:<fstype>[:<mountopts>]] >>> И ещё FSTYPE=... по аналогии можно сделать: >>> >>> >>> diff --git a/data/bin/initrd-sh-functions b/data/bin/initrd-sh-functions >>> index a56e872..0e433c6 100644 >>> --- a/data/bin/initrd-sh-functions >>> +++ b/data/bin/initrd-sh-functions >>> @@ -33,10 +33,26 @@ get_dev() { >>> >>> case "$name" in >>> '') >>> return 1 >>> ;; >>> + CDROM:*) >>> + [ "${ID_CDROM-}" = "1" ] || [ "${ID_FS_TYPE-}" = >>> "iso9660" ] || >>> + return 1 >>> + name="${name#CDROM:}" >>> + name="${name:-/dev/sr0}" >>> + ;; >>> + FSTYPE=*:?*) >>> + name="${name#FSTYPE=}" >>> + value="${name%%:*}" >>> + [ "${ID_FS_TYPE-}" = "$value" ] || >>> + return 1 >>> + name="${name#*:}" >>> + ;; >>> + esac >>> + >>> + case "$name" in >>> UUID=*) >>> [ "${ID_FS_UUID-}" = "${name#UUID=}" ] || >>> return 1 >>> ;; >>> LABEL=*) >>> >> $ git grep '\<get_dev ' >> data/lib/uevent/filters/mountdev:21: get_dev dev "$fsdev" || >> data/lib/uevent/filters/resume:8:get_dev devresume "${RESUME-}" || >> features/luks/data/lib/uevent/filters/luks:31: get_dev devluks "$dev" && >> features/luks/data/lib/uevent/filters/luks:35: get_dev devluks "$DEVNAME" || >> features/luks/data/lib/uevent/filters/lukskeys:26: get_dev realdev "$keydev" || >> features/luks/data/lib/uevent/handlers/085-luks:32: get_dev realdev "$luksdev" >> features/luks/data/lib/uevent/handlers/085-luks:70: get_dev "$luksdev" || >> features/pipeline/data/lib/uevent/filters/pipeline-waitdev:13: if [ -n "$spec" ] && get_dev dev "$spec"; then >> >> Ты правда хочешь, чтобы во всех этих фичах появилась поддержка cdrom:* ? > > Пока CDROM нужен лишь одной фиче (последняя строка), но, вдруг ещё где потребуется? Соответственно, варианта только два: Да не нужен cdrom нам вообще. -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-03 11:37 ` Антон Мидюков @ 2021-04-03 12:16 ` Leonid Krivoshein 2021-04-03 12:27 ` Антон Мидюков 0 siblings, 1 reply; 48+ messages in thread From: Leonid Krivoshein @ 2021-04-03 12:16 UTC (permalink / raw) To: make-initrd 03.04.2021 14:37, Антон Мидюков пишет: > 03.04.2021 18:31, Leonid Krivoshein пишет: >> [...] >> Пока CDROM нужен лишь одной фиче (последняя строка), но, вдруг ещё где потребуется? Соответственно, варианта только два: > Да не нужен cdrom нам вообще. Согласен, что в перспективе, если ты реализуешь в m-p полноценную поддержку генерации и передачи UUID для CDROM, то не нужен, согласен, что давно пора отказаться от этой пагубной практики, использовать "первый попавшийся CD-ROM или ISO-образ". Тем не менее, propagator так умеет и до сего дня это основной способ загрузки LiveCD, пригодный для большинства применений, и вылезающий боком только в очень специфичных ситуациях с локальным подключением нескольких CD-ROM/образов. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-03 12:16 ` Leonid Krivoshein @ 2021-04-03 12:27 ` Антон Мидюков 0 siblings, 0 replies; 48+ messages in thread From: Антон Мидюков @ 2021-04-03 12:27 UTC (permalink / raw) To: make-initrd 03.04.2021 19:16, Leonid Krivoshein пишет: > > 03.04.2021 14:37, Антон Мидюков пишет: >> 03.04.2021 18:31, Leonid Krivoshein пишет: >>> [...] >>> Пока CDROM нужен лишь одной фиче (последняя строка), но, вдруг ещё где потребуется? Соответственно, варианта только два: >> Да не нужен cdrom нам вообще. > > Согласен, что в перспективе, если ты реализуешь в m-p полноценную поддержку генерации и передачи UUID для CDROM, то не нужен, согласен, что давно пора отказаться от этой пагубной практики, использовать "первый попавшийся CD-ROM или ISO-образ". Тем не менее, propagator так умеет и до сего дня это основной способ загрузки LiveCD, пригодный для большинства применений, и вылезающий боком только в очень специфичных ситуациях с локальным подключением нескольких CD-ROM/образов. > Сначала нужно реализовать в mkimage. Реализовано, но не заапстримлено. Бага: https://bugzilla.altlinux.org/show_bug.cgi?id=39855 Это не перспектива, это потребность сегодняшнего дня. На Байкале М, где iso изначально писали на SATA HDD/SSD, проблема вылезла в полный рост. Переходить на UUID нужно уже "вчера" :-) -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [make-initrd] Release make-initrd 2.14.0 2021-04-03 11:31 ` Leonid Krivoshein 2021-04-03 11:37 ` Антон Мидюков @ 2021-04-03 11:59 ` Alexey Gladkov 1 sibling, 0 replies; 48+ messages in thread From: Alexey Gladkov @ 2021-04-03 11:59 UTC (permalink / raw) To: make-initrd On Sat, Apr 03, 2021 at 02:31:22PM +0300, Leonid Krivoshein wrote: > > $ git grep '\<get_dev ' > > data/lib/uevent/filters/mountdev:21: get_dev dev "$fsdev" || > > data/lib/uevent/filters/resume:8:get_dev devresume "${RESUME-}" || > > features/luks/data/lib/uevent/filters/luks:31: get_dev devluks "$dev" && > > features/luks/data/lib/uevent/filters/luks:35: get_dev devluks "$DEVNAME" || > > features/luks/data/lib/uevent/filters/lukskeys:26: get_dev realdev "$keydev" || > > features/luks/data/lib/uevent/handlers/085-luks:32: get_dev realdev "$luksdev" > > features/luks/data/lib/uevent/handlers/085-luks:70: get_dev "$luksdev" || > > features/pipeline/data/lib/uevent/filters/pipeline-waitdev:13: if [ -n "$spec" ] && get_dev dev "$spec"; then > > > > Ты правда хочешь, чтобы во всех этих фичах появилась поддержка cdrom:* ? > > Пока CDROM нужен лишь одной фиче (последняя строка), но, вдруг ещё где > потребуется? Соответственно, варианта только два: > > - либо предусмотреть в get_dev() возможность указывать префиксы a.k.a CDROM: > , FSTYPE: для всех, кто запрашивает get_dev(). > - либо сделать обёртку типа get_pipeline_dev() и вызывать из неё get_dev(), > а обёртку вызывать из pipeline-waitdev:13 Я как раз хотел предложить второй вариант. Если юскейсы появятся глобального применения, то можно будет этот код перенести в get_dev. > Мне больше нравится первый вариант, но я же советуюсь. По идее на > перечисленных "клиентов" эта "возможность" влиять не должна. Префиксы > позволяют дополнительно ограничить спецификацию, но никто же не заставляет > использовать эти префиксы там, где они не требуются. Но можно и заюзать, > например, так: resume=FSTYPE=swap:/dev/sdb3 и в таком случае devresume > получит значение только в том случае, если /dev/sdb3 является SWAP-разделом. > Таких префиксов можно и больше напридумывать. -- Rgrds, legion ^ permalink raw reply [flat|nested] 48+ messages in thread
end of thread, other threads:[~2021-04-04 19:21 UTC | newest] Thread overview: 48+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-30 18:21 [make-initrd] Release make-initrd 2.14.0 Alexey Gladkov 2021-03-30 20:18 ` Leonid Krivoshein 2021-03-31 7:44 ` Alexey Gladkov 2021-03-31 13:08 ` Leonid Krivoshein 2021-03-31 13:39 ` Alexey Gladkov 2021-03-31 13:55 ` Leonid Krivoshein 2021-03-31 14:07 ` Антон Мидюков 2021-03-31 14:34 ` Alexey Gladkov 2021-03-31 14:40 ` Alexey Gladkov 2021-03-31 14:48 ` Alexey Gladkov 2021-03-31 14:49 ` Leonid Krivoshein 2021-03-31 14:50 ` Антон Мидюков 2021-03-31 15:22 ` Alexey Gladkov 2021-03-31 15:37 ` Антон Мидюков 2021-03-31 15:54 ` Leonid Krivoshein 2021-03-31 15:57 ` Alexey Gladkov 2021-03-31 16:20 ` Leonid Krivoshein 2021-03-31 16:55 ` Alexey Gladkov 2021-03-31 17:02 ` Антон Мидюков 2021-03-31 17:17 ` Alexey Gladkov 2021-03-31 18:08 ` Leonid Krivoshein 2021-03-31 18:10 ` Leonid Krivoshein 2021-03-31 18:29 ` Alexey Gladkov 2021-03-31 18:54 ` Leonid Krivoshein 2021-03-31 18:03 ` Leonid Krivoshein 2021-03-31 18:11 ` Антон Мидюков 2021-03-31 18:24 ` Michael Shigorin 2021-03-31 19:02 ` Leonid Krivoshein 2021-03-31 18:38 ` Alexey Gladkov 2021-03-31 18:49 ` Leonid Krivoshein 2021-03-31 19:20 ` Leonid Krivoshein 2021-04-01 2:32 ` Антон Мидюков 2021-03-31 18:44 ` Leonid Krivoshein 2021-03-31 18:45 ` Alexey Gladkov 2021-03-31 23:49 ` Leonid Krivoshein 2021-04-01 9:02 ` Alexey Gladkov 2021-04-01 10:38 ` Leonid Krivoshein 2021-04-02 17:46 ` Leonid Krivoshein 2021-04-02 17:57 ` Leonid Krivoshein 2021-04-04 19:04 ` Konstantin Lepikhov 2021-04-04 19:21 ` Leonid Krivoshein 2021-04-02 18:37 ` Leonid Krivoshein 2021-04-03 11:09 ` Alexey Gladkov 2021-04-03 11:31 ` Leonid Krivoshein 2021-04-03 11:37 ` Антон Мидюков 2021-04-03 12:16 ` Leonid Krivoshein 2021-04-03 12:27 ` Антон Мидюков 2021-04-03 11:59 ` Alexey Gladkov
Make-initrd development discussion This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \ make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com public-inbox-index make-initrd Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.make-initrd AGPL code for this site: git clone https://public-inbox.org/public-inbox.git