From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 Date: Sat, 20 Feb 2021 12:33:54 +0100 From: Alexey Gladkov To: make-initrd@lists.altlinux.org Message-ID: <20210220113354.rkip37y5vrcrjkmr@example.org> References: <20200521133617.aekvybv5mgpqkvmd@comp-core-i7-2640m-0182e6> <88e0982a-556a-55eb-7cf2-e4bfb5fea450@gmail.com> <20210218173722.dkyamp42c6gpdigk@example.org> <21e48a26-3031-1ffa-cf83-3c524c20cf52@gmail.com> <20210218193704.zfa6fl4j75il7xw7@example.org> <20210219104916.afwvo4u4nzzjvcty@example.org> <5b445656-bc8f-d866-74f6-a6cd26c4fadb@gmail.com> <20210220103151.cwp5scgiksafi32c@example.org> <3df000f0-0021-6c5f-a3f4-2663212be91b@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3df000f0-0021-6c5f-a3f4-2663212be91b@gmail.com> Subject: Re: [make-initrd] I: pipeline feature X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Feb 2021 11:34:03 -0000 Archived-At: List-Archive: On Sat, Feb 20, 2021 at 02:05:01PM +0300, Leonid Krivoshein wrote: > > 20.02.2021 13:31, Alexey Gladkov пишет: > > On Sat, Feb 20, 2021 at 12:58:03PM +0300, Leonid Krivoshein wrote: > > > 19.02.2021 13:49, Alexey Gladkov пишет: > > > > [...] > > > > > Поэтому я и предложил затягивать в initramfs один из двух файлов: > > > > > > > > > > /etc/mdadm-initrd.conf (если есть, то его) > > > > > /etc/mdadm.conf (fallback) > > > > Как быстрое решение это может сработать. Нужно только удостовериться, что > > > > это решит упомянутые в треде баги. > > > Да, решило: https://bugzilla.altlinux.org/show_bug.cgi?id=39695#c9 > > > > > > Причём, что удивительно, там хоть нет и нет inactive, но есть resync после > > > ребута, значит какие-то костылики udev-rules уже работают во второй стадии. > > Есть подозрение, что для создания mdadm.conf достаточно: > > > > mddev=$(findmnt -n -o SOURCE "$mountpoint") > > mdadm --verbose --detail --scan "$mddev" > mdadm.conf > > Видимо тут опечатка: > > ... >> mdadm.conf Нет. Это будет весь конфиг. Посмотрев на вывод mdadm, я бы ещё чуть-чуть отредактировал вывод. mdadm --verbose --detail --scan "$mddev" | tr '\n' ' ' | sed -r \ -e 's/^(.*[[:space:]])devices=[^[:space:]]+([[:space:]].*)$/\1\2/' \ -e 's/^(.*[[:space:]])name=\(none\):[^[:space:]]+([[:space:]].*)$/\1\2/' В devices указываются файлы устройств, что не очень хорошо. Можно также добавить первой строчкой: echo 'DEVICE partitions' > > Можно придумать такую последовательность: > > > > 1. Если есть /etc/mdadm-initrd.conf, то берём его. > > 2. Если в /etc/mdadm.conf только один ARRAY, то можно брать его. > > 3. Если ARRAY в /etc/mdadm.conf больше одного, то генерируем свой. > > Разумный алгоритм! Вопрос лишь в том, как в п.3 выбрать нужный массив. Выбрать как раз совсем не сложно. Мы же определяем, что нашли raid в цепочке [1]. В "$SYSFS_PATH$1"/dev есть major:minor устройства. Далее можно просто посмотреть findmnt -n -o MAJ:MIN,SOURCE и найти устройство, если не хочется делать mknod. А далее будет работать уже указанный код. > > или же можно просто пропустить второй шаг и если нет mdadm-initrd.conf, то > > сразу генерировать конфиг. > > Как я понимаю, сейчас не для всех MOUNTPOINTS дотягиваются нужные модули в > initramfs, это уже другой баг с /boot. Для всех [2]. Иначе в MOUNTPOINTS не было бы никакого смысла. Вот только никто не просил make-initrd искать модули рейда для /boot. Я пока не сделал тест и не могу с уверенностью утверждать, но мне кажется, что mdadm и его udev-правила как-то учитывают, описанный в mdadm.conf /boot. [1] https://github.com/osboot/make-initrd/blob/master/features/mdadm/guess/device [2] https://github.com/osboot/make-initrd/blob/master/guess/root/action#L180 -- Rgrds, legion