Инсталятор при использовании метода cifs ожидает, что в /image будет смонтирован ресурс samba. Например, указываем в качестве directory /public/jeos.iso Скрипт /usr/share/install2/initinstall.d/90-pkg.sh ищет /image/public/jeos.iso А по факту в /image уже смонтирован каталог /image/public/jeos.iso В результате не происходит копирование pkg-groups.tar с последующей его распаковкой. Шаг установки пакетов пропускается и имеем ошибку "destination filesystem remount error".
Для метода nfs аналогичная проблема.
А зато установка live работает. Надо то было livecd-install исправлять, чтобы с propagator работал, а его никто не исправлял.
Проблема не в том, что образ в image монтируется так, а в том, что bootchain сообщает $PREFIX неправильный. В данном случае он должен был быть пустым, а не равен directory.
make-initrd-bootchain-0.1.5-alt10 -> sisyphus: Fri Jun 10 2022 Anton Midyukov <antohami@altlinux> 0.1.5-alt10 - cifs, nfs: set PREFIX to '/' (Closes: 42965)
Сломалось монтирование оверлеев по NFS Теперь какие бы параметры ни были в cmdline, поиск оверлеев выглядит так: [2022-08-29 12:16:00] liveboot: [0] KEY: 'PREFIX' [2022-08-29 12:16:00] liveboot: [0] stage2_getenv('PREFIX') result: '/' [2022-08-29 12:16:00] liveboot: [0] LEAVE: stage2_getenv [2022-08-29 12:16:00] liveboot: mounting NFS overlays from 10.29.48.21://overlays-live [2022-08-29 12:16:00] liveboot: [0] RUN: mkdir -p -- /root.rw/rw/tmp/images [2022-08-29 12:16:00] liveboot: [0] RUN: mount.nfs 10.29.48.21://overlays-live /root.rw/rw/tmp/images -o ro,intr,soft,nolock,timeo=30,retry=0 mount.nfs: mounting 10.29.48.21://overlays-live failed, reason given by server: No such file or directory [2022-08-29 12:16:00] liveboot: NFS mount failed
Да, это регрессия в отношении исходно определённого поведения: PREFIX не только экспортируется в stage2 для установщика, но и повторно используется модулями одного из последних шагов liveboot, в данном случае смотрим код: bootchain-nfs/data/lib/altboot/livecd-slice.d/700-nfs Если бы PREFIX был пустым, его бы перебивал суб-параметр directory, но он равен "/", и для этого значения ищется каталог верхнего уровня, к которому добавляется "/overlays-live". Но если сейчас не исправлять ошибку, оставить как есть, данное значение можно перебить суб-параметром overlays. В строке 33 сейчас такой код: [ -n "$overlays" ] || overlays="${parentdir:-$OEM_NFS_NETINST}/overlays-live" message "mounting NFS overlays from $server:$overlays" Т.е., Fr. Br. George может пока "обойти" проблему, добавив в /proc/cmdline: automatic=...,overlays:/путь/к/родителю-overlays-live А я посмотрю, как это лучше исправить в коде, поскольку откатить коммит Антона не сложно, а вот проверить по новой все варианты загрузки на стенде -- дело не быстрое.
(Ответ для Антон Мидюков на комментарий #0) > Инсталятор при использовании метода cifs ожидает, что в /image будет > смонтирован ресурс samba. Пропагатор монтирует внахлёст ISO и сквош то в /root, то в /image. При перекрытии первоначально смонтированного по CIFS или NFS в stage2 выставляется флаг PIGGYBACK=1. Метод CIFS добавлял sin@, используя аналогию с NFS, хотя у SAMBA проглядывается выделение первой части пути как названия ресурса (всегда), остальная часть -- относительный путь. Полагаю, в инсталлятор метод CIFS также добавлялся не изначально. (Ответ для Антон Мидюков на комментарий #3) > Проблема не в том, что образ в image монтируется так, а в том, что bootchain > сообщает $PREFIX неправильный. В данном случае он должен был быть пустым, а > не равен directory. Чтобы не сломать ожидаемое поведение, $PREFIX д.б. таким же, как он выставляется пропагатором. В нём PREFIX="/" для методов nfs/cifs/cdrom и равен суб-параметру directory для методов disk/ftp/http, при этом, для методов nfs и cifs дополнительно зачем-то экспортируется ещё и $DIRECTORY. Я решил их "выровнять", поскольку в коде установщика нигде не видел использования DIRECTORY, передавать везде путь через PREFIX для всех методов. Возможно, "так себе" идея, но пересматривать тогда придётся весь код altboot, чтобы это поменять. Правильно ли я тебя понял, что сейчас достаточно просто откатить последний коммит, что никакие куски инсталлятора уже не закладываются на PREFIX="/"?
(Ответ для Leonid Krivoshein на комментарий #6) > Т.е., Fr. Br. George может пока "обойти" проблему, добавив в /proc/cmdline: > automatic=...,overlays:/путь/к/родителю-overlays-live Да, именно такое же поведение было и в случае с пропагатором: https://git.altlinux.org/gears/m/make-initrd-propagator.git?p=make-initrd-propagator.git;a=blob;f=propagator/data/sbin/init-bottom#l55
(Ответ для Leonid Krivoshein на комментарий #7) > Правильно ли я тебя понял, что сейчас достаточно просто откатить последний > коммит, что никакие куски инсталлятора уже не закладываются на PREFIX="/"? Код в install2-shfunctions такой (вырезал только то, что про $PREFIX): PREFIX="${PREFIX:-}" [ "$PREFIX" != "/" ] || PREFIX= readonly PREFIX case "$METHOD" in ftp|http) image_url="$METHOD://$AUTH_DATA$HOST/$PREFIX" ;; cdrom|disk|nfs|cifs) image_url="$image_dir/$PREFIX" # If booted from iso file, the $image_dir/$PREFIX directory will be missing [ -d "$image_url" ] || image_url="$image_dir" ;; *) fatal "Unsupported method:$METHOD" esac Я недавно добавил тут строчки: # If booted from iso file, the $image_dir/$PREFIX directory will be missing [ -d "$image_url" ] || image_url="$image_dir" Чтобы в случае смонтированного образа $PREFIX не влиял. А больше $PREFIX нигде не используется. Если кто-то на него будет надеяться, то у него будет проблема в случае смонтированного образа. Но с method=disk у propagator проблема аналогичная с bootchain. поэтому сделал такое исправление в инсталляторе. Так что предлагаю окатить и нигде в инсталляторе на $PREFIX не закладываться.
Отправил 0.1.5-alt11, это должно исправить проблему с оверлеями.
(Ответ для Leonid Krivoshein на комментарий #10) > Отправил 0.1.5-alt11, это должно исправить проблему с оверлеями. Закрываю.