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=-4.3 required=5.0 tests=ALL_TRUSTED,BAYES_00, RP_MATCHES_RCVD autolearn=unavailable autolearn_force=no version=3.4.1 Message-ID: <7d19288d-96a9-186c-768d-95a09b02c225@basealt.ru> Date: Thu, 6 Apr 2023 08:28:20 +0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Content-Language: ru To: make-initrd@lists.altlinux.org From: =?UTF-8?B?0JDQvdGC0L7QvSDQnNC40LTRjtC60L7Qsg==?= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [make-initrd] =?utf-8?b?cG9sbGQg0Lgg0L/RgNC+0LLQtdGA0LrQsCDQvdCw?= =?utf-8?b?0LvQuNGH0LjRjyAvcm9vdC9zYmluL2luaXQ=?= 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: Thu, 06 Apr 2023 01:28:25 -0000 Archived-At: List-Archive: Здравствуйте Предыстория: https://bugzilla.altlinux.org/44111 Заглавный вопрос: "в каком случае может быть так, что init в смонтированном корне в первые секунды нет, а потом оно чудесным образом появляется?" Мне кажется, ответ найден: "При распараллеливании процесса монтирования корня (из сквоша, как минимум) на медленном сетевом соединении или достаточно медленном локальном накопителе". Сейчас проблема стала хорошо воспроизводиться на ядре 6.2 при подключении по nfs или загрузке через ventoy и монтировании сквоша (без предварительной загрузки сквоша в память) на многоядерных процессорах. Если ядро одно, то проблемы нет (проверено в виртуалке). В ядре включили алгоритм монтирования оверлея CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU, и это проблему усугубило. Но проблему крайне редко можно было поймать и раньше. Отсюда выводы: 1. Факт монтирования корня недостаточное условие, существует переходный процесс монтирования 2. Обнаружение /sbin/init также не является достаточным условием, что можно продолжать загрузку, переходный процесс может оказаться длинным Гипотеза о переходном процессе основана на сопоставлении двух логов chaind.log и polld.log Ошибка об отсутствии /sbin/init была выдана на 1 секунду раньше, чем было завершено монтирование оверлея (оно занимало две секунды). И другая проблема, вытекающая из этих: bootchain после монтирования /sbin/init совершает ещё действия, поэтому нужно дождаться его выполнения. В случае bootchain было бы надёжным запускать polld только тогда, когда он завершил свою работу. Такое в принципе возможно? -- С уважением, Антон Мидюков