Summary: | неправильное формирование initcpio | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | zvn_mail <zvn_mail> | ||||||
Component: | mkimage-profiles | Assignee: | Антон Мидюков <antohami> | ||||||
Status: | NEW --- | QA Contact: | qa-sisyphus | ||||||
Severity: | normal | ||||||||
Priority: | P5 | CC: | antohami, glebfm, ldv, legion, mike, placeholder | ||||||
Version: | unstable | ||||||||
Hardware: | all | ||||||||
OS: | Linux | ||||||||
Attachments: |
|
Created attachment 17504 [details]
build.log.gz
Проявляется только при сборке не на tmpfs. Возможно, мантейнер make-initrd может что-то подсказать, поэтому пока перевешиваю на make-initrd. (In reply to zvn_mail from comment #0) > Created attachment 17503 [details] > т.е., возможно, во время работы /usr/share/make-initrd/tools/pack-image find > не тот срабатывает? Если только какой-то вообще не тот find. Есть find в busybox, который используется в make-initrd, но этот find не умеет -printf вообще. (In reply to Антон Мидюков from comment #2) > Проявляется только при сборке не на tmpfs. Возможно, мантейнер make-initrd > может что-то подсказать, поэтому пока перевешиваю на make-initrd. Пока не могу воспроизвести. Я попробовал на ext4 собрать и собралось без ошибок. Какая файловая система используется для TEMPDIR ? make-initrd запускается от рута (из лога видно, что все проверки выключены) ? (Ответ для Alexey Gladkov на комментарий #3) > (In reply to zvn_mail from comment #0) > (In reply to Антон Мидюков from comment #2) > > Проявляется только при сборке не на tmpfs. Возможно, мантейнер make-initrd > > может что-то подсказать, поэтому пока перевешиваю на make-initrd. > > Пока не могу воспроизвести. Я попробовал на ext4 собрать и собралось без > ошибок. > > Какая файловая система используется для TEMPDIR ? > make-initrd запускается от рута (из лога видно, что все проверки выключены) ? В mkimage не получается воспроизвести? У меня и на ext4 проблема возникает. Ещё одно условие, /home должен быть отдельным разделом. (In reply to Антон Мидюков from comment #4) > В mkimage не получается воспроизвести? У меня и на ext4 проблема возникает. Я пробовал в живой системе. (In reply to Антон Мидюков from comment #5) > Ещё одно условие, /home должен быть отдельным разделом. То есть если /home не отдельный, то проблема не воспроизводится ? Чудеса какие-то. Антон, можешь в pack-image перед find вставить `ls -la ./usr/bin` ? Может там действительно busybox симлинк кривой сделал. Меня смущает строка ошибки: Unrecognized dir format './usr/bin/chmod 0444 0 0' Это симклинк. Именно его не удалось прочитать. Cимлинк с правами 0444. да, у меня /home - отдельный раздел ext4, в нём же и /home/myrepo/{out,tmp}^ # stat /home/{.,myrepo/{tmp,out}}|grep -E "File:|Device" File: /home/. Device: 8,11 Inode: 2 Links: 6 File: /home/myrepo/tmp Device: 8,11 Inode: 2490832 Links: 15 File: /home/myrepo/out Device: 8,11 Inode: 2490831 Links: 2 все chmod: # find / -name chmod -ls 2511246 0 lrwxrwxrwx 1 myrepo_a myrepo_a 7 Jan 6 08:05 /home/myrepo/tmp/stage1/.work/chroot/tmp/make-initrd.D1vg3eBsA/6.6.66-6.6-alt1.initrd/img/usr/bin/chmod -> busybox 2498106 0 lrwxrwxrwx 1 myrepo_a myrepo_a 7 Dec 23 21:50 /home/myrepo/tmp/stage1/.work/chroot/usr/lib64/initrd/bin/chmod -> busybox 2492672 56 -rwxr-xr-x 1 myrepo_a myrepo_a 55712 Nov 6 2023 /home/myrepo/tmp/stage1/.work/chroot/usr/bin/chmod 682942 4 -rw-r--r-- 1 root root 112 Aug 23 21:22 /usr/lib/mc/shell/chmod 931164 0 lrwxrwxrwx 1 root root 7 Dec 23 21:50 /usr/lib64/initrd/bin/chmod -> busybox 701944 56 -rwxr-xr-x 1 root root 55712 Nov 6 2023 /usr/bin/chmod 545970 4 -rw-r--r-- 1 root root 920 Nov 25 02:20 /usr/share/bash-completion/completions/chmod т.е. никаких lr--r--r-- нет. м.б. это что-то временно образовавшееся при исполнении скриптов/сценариев, а на выходе уже удаленное? это вот всё, что с такими параметрами есть: # find / -type l -a -printf 'slink %p %l %#m 0 0\n' 2>&1|grep "0444 0 0" slink /sys/kernel/security/evm integrity/evm/evm 0444 0 0 slink /sys/kernel/security/ima integrity/ima 0444 0 0 (Ответ для Alexey Gladkov на комментарий #8) > Меня смущает строка ошибки: > > Unrecognized dir format './usr/bin/chmod 0444 0 0' > > Это симклинк. Именно его не удалось прочитать. > Cимлинк с правами 0444. м.б. при обработке внутри chroot этот симлинк указывает куда-то туда, куда из chroot доступа нет, т.е. в каталог выше chroot-а? Я подозреваю, что где-то в чруте выставили какой-нибудь umask или маска была указана при монтировании. (In reply to zvn_mail from comment #10) > м.б. при обработке внутри chroot этот симлинк указывает куда-то туда, куда > из chroot доступа нет, т.е. в каталог выше chroot-а? Нет. find не идёт по ссылке. Он просто читает symlink. Проблема возникает не всегда. Но если возникла, то место для сборки проклято. Пока не перезагрузишься, в нём будет возникать эта ошибка. Можно создать новый каталог рядом, и там всё соберётся. Вот такая эмпирика. Когда не указываем BUILDDIR, каждый раз создаётся новый уникальный каталог для сборки, и, соответственно, коллизия такая возникнуть не может в принципе. а я-то уже начал писать патч, чтобы в принципе не копировать большинство файлов во временную директорию %) zvn_mail, попробуйте обновить ядро до 6.12. Будет ли проблема воспроизводиться? (Ответ для Антон Мидюков на комментарий #15) > zvn_mail, попробуйте обновить ядро до 6.12. Будет ли проблема > воспроизводиться? НЕ воспроизводится: $ uname -a Linux ziv 6.12.6-6.12-alt1 #1 SMP PREEMPT_DYNAMIC Tue Dec 24 11:38:45 UTC 2024 x86_64 GNU/Linux $ git clone git://git.altlinux.org/gears/m/mkimage-profiles.git -b p11 Cloning into 'mkimage-profiles'... remote: Counting objects: 43369, done. remote: Total 43369 (delta 0), reused 0 (delta 0) Receiving objects: 100% (43369/43369), 4.84 MiB | 1.87 MiB/s, done. Resolving deltas: 100% (28906/28906), done. $ mkdir -p ~/out ~/tmp $ make -C ~/mkimage-profiles BUILDDIR=~/tmp DEBUG=1 CLEAN=0 regular-jeos-systemd.iso make: Entering directory '/home/myrepo/mkimage-profiles' ** goal: regular-jeos-systemd.iso ** BRANCH/ARCH: p11/x86_64 08:25:23 initializing BUILDDIR: build/ 08:25:23 preparing distro config: build/distcfg.mk 08:28:58 starting image build: tail -f build/build.log 09:34:54 done (1:05:55 28%CPU 171288k) ** image: ~/out/alt-p11-jeos-systemd-20250107-x86_64.iso [848M] make: Leaving directory '/home/myrepo/mkimage-profiles' |
Created attachment 17503 [details] initcpio.gz cd ~ git clone git://git.altlinux.org/gears/m/mkimage-profiles.git -b p11 mkdir -p ~/out ~/tmp make -C ~/mkimage-profiles BUILDDIR=~/tmp DEBUG=1 CLEAN=0 regular-jeos-systemd.iso в build.log наблюдаю: [00:00:33] Packing image to archive ... Unrecognized dir format './usr/bin/chmod 0444 0 0' line 2067 make[2]: *** [/usr/share/make-initrd/mk/genimage.mk:24: pack] Error 255 make[1]: *** [/usr/share/make-initrd/mk/main.mk:67: process-config] Error 2 make: *** [/usr/share/make-initrd/mk/main.mk:56: all] Error 1 + fatal 'make-initrd failed' + echo '** error: make-initrd failed' + exit 1 ** error: make-initrd failed mki-scripts: /home/myrepo/tmp/stage1/scripts.d/80-make-initrd-for-bootchain: unable to run script. mki-invalidate-cache: has started executing for 'mki'. make[3]: *** [/usr/share/mkimage/targets.mk:41: run-scripts] Error 1 make[2]: *** [/usr/share/mkimage/targets.mk:190: stage1/] Error 2 Command exited with non-zero status 2 8:19.56 39%CPU 160188k загадочно, в /home/myrepo/tmp/stage1/.work/chroot/tmp/make-initrd.D1vg3eBsA/6.6.66-6.6-alt1.initrd/initcpio так и есть: ... slink ./usr/bin/bash bash5 0777 0 0 slink ./usr/bin/chmod 0444 0 0 slink ./usr/bin/mountpoint busybox 0777 0 0 ... внимательно изучил /usr/share/make-initrd/tools/pack-image, find -O2 . -mindepth 1 \ ... -o \( -type l -a -printf 'slink %p %l %#m 0 0\n' \) \ man find %l Object of symbolic link (empty string if file is not a symbolic link). и дальше проверяю, какие имеются исполняемые find find / -name find -ls 2491771 1252 -rwxr-xr-x 1 myrepo myrepo 1280264 Apr 25 2022 /home/myrepo/tmp/stage1/.work/chroot/.host/find 2511269 0 lrwxrwxrwx 1 myrepo_a myrepo_a 7 Jan 6 08:05 /home/myrepo/tmp/stage1/.work/chroot/tmp/make-initrd.D1vg3eBsA/6.6.66-6.6-alt1.initrd/img/usr/bin/find -> busybox 2498129 0 lrwxrwxrwx 1 myrepo_a myrepo_a 7 Dec 23 21:50 /home/myrepo/tmp/stage1/.work/chroot/usr/lib64/initrd/bin/find -> busybox 2493106 204 -rwxr-xr-x 1 myrepo_a myrepo_a 208256 Apr 25 2022 /home/myrepo/tmp/stage1/.work/chroot/usr/bin/find 971735 0 lrwxrwxrwx 1 root root 7 Dec 23 21:50 /usr/lib64/initrd/bin/find -> busybox 655444 204 -rwxr-xr-x 1 root root 208256 Apr 25 2022 /usr/bin/find 560963 4 -rw-r--r-- 1 root root 3897 Nov 25 02:20 /usr/share/bash-completion/completions/find т.е., возможно, во время работы /usr/share/make-initrd/tools/pack-image find не тот срабатывает?