Ubuntu зависает при загрузке при использовании ядра Linux версии >= 6.5.0

Вопрос или проблема

Обновление 2025-03-09 Сегодня я снова попытался установить Ubuntu 24.04. Я создал загрузочную USB с помощью Rufus. Затем попробовал загрузиться в режиме EFI и без него. Я заметил, что в не-EFI режиме загрузка застревает на:

smp: Bringing up secondary CPUs...
smpboot: x86: Booting SMP configuration:

Поэтому я поискал эти сообщения и нашел эту тему, где предложено использовать параметр ядра nolapic. Я попробовал его, и проблема была решена! Но я заметил, что у меня остался только один CPU после загрузки. Затем я поискал smp в документации ядра Linux и нашел это:

    maxcpus=        [SMP,EARLY] Maximum number of processors that an SMP kernel
                    will bring up during bootup.  maxcpus=n : n >= 0 limits
                    the kernel to bring up 'n' processors. Surely after
                    bootup you can bring up the other plugged cpu by executing
                    "echo 1 > /sys/devices/system/cpu/cpuX/online". So maxcpus
                    only takes effect during system bootup.
                    While n=0 is a special case, it is equivalent to "nosmp",
                    which also disables the IO APIC.

Итак, я попробовал maxcpus=2 (в моем ноутбуке 8 логических процессоров, и любое число выше 2 не сработало) и система успешно загрузилась с двумя процессорами. Хорошая новость: я смог включить все процессоры с помощью команды chcpu -e 0-7 (команда echo 1 > /sys/devices/system/cpu/cpuX/online выдавала ошибку доступа).

Обновление 2024-10-15: Я попробовал разные ядра, используя https://wiki.ubuntu.com/Kernel/MainlineBuilds, и могу подтвердить, что проблема начинается с ядра 6.5.0. Любая версия выше останавливается на загрузке на Loading initial ramdisk или EFI stub: Measured initrd data into PCR 9. С использованием ядра 6.4.0 и ниже проблем нет, и Ubuntu загружается успешно, за исключением некоторых сообщений, которые могут помочь понять, почему ядра выше 6.5.0 не работают:

[    0.076374] DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR [0x0000000078800000-0x000000007affffff], contact BIOS vendor for fixes`
[    0.103670] x86/cpu: SGX disabled by BIOS.
[    0.391923] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0xfed40000-0xfed4087f flags 0x200] vs fed40080 f80
[    0.391937] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0xfed40000-0xfed4087f flags 0x200] vs fed40080 f80

Надеюсь, что кто-то из сопровождающих увидит это сообщение и исправит это, так как я не могу позволить себе новый ноутбук.

Обновление 2024-10-14: С помощью Ventoy я смог легко установить Kubuntu 24.04.1 на свой ноутбук. Но после установки я застрял в меню grub с теми же ошибками, которые описаны ниже. Затем я выяснил, что добавление dis_ucode_ldr в команду linux в grub, как описано здесь, решает проблему. Странная часть заключается в том, что Ventoy успешно загружает Ubuntu с USB без каких-либо проблем и без отключения микрокода (проверено, как описано здесь в разделе: “Проверка версии микрокода вашего CPU”). Так что я считаю, что проблема связана не с микрокодом, а с grub.

Я создал загрузочную USB-флешку с помощью Startup Disk Creator. Во время загрузки системы был выбор из двух вариантов: SanDisk 'Cruzer Fit и UEFI: SanDisk 'Cruzer Fit, Partition 2. Kubuntu 22.04 уже была установлена в режиме UEFI, поэтому я выбрал второй вариант. Перед тем, как увидеть параметры GRUB, выводились две ошибки (первая rror — это не опечатка, она была напечатана без e!)

rror: file '/boot/' not found.
error: can't find command 'grub_platform'.

Затем в меню GRUB выбор между Try or Install Ubuntu или Ubuntu (safe graphics) приводил к черному экрану. После нескольких часов поисков я выяснил, что виноват acpi. Поэтому я попробовал отключить его, нажав c в меню GRUB и введя:

linux (hd0)/casper/vmlinuz root=(hd0) acpi=off
initrd (hd0)/casper/initrd
boot

Указанные команды без acpi=off выводят:

EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path
EFI stub: Measured initrd data into PCR 9

и затем ничего не происходит. Но с acpi=off Ubuntu загружается с USB-флешки, к сожалению, с разрешением 800x600. В любом случае, я смог легко установить Ubuntu, и после установки и перезагрузки системы я вновь столкнулся с теми же ошибками при загрузке с SSD, на который Ubuntu была установлена. Теперь я сдался и возвращаюсь к 22.04 :-(, подождите, я не могу! потому что я удалил свой iso файл 22.04.3 и теперь не могу его снова скачать, потому что все 22.04 релизы указывают на 24.04.4, которая сама вызывает другую ошибку:

[...] DMAR: [Firmware Bug]: No firmware reserved region can cover this RMMR [...], contact BIOS vendor for fixes
[...] x86/cpu: SGX disabled by BIOS.

Тестировалось с: Ubuntu 24.04, Kubuntu 24.04, Kubuntu 22.04.4 и KDE neon neon-user-20240502-0718 iso файлами.

Информация о системе:

ASUS N552VW,
Дата последнего обновления BIOS: 2019/05/29,
Процессор: i7-6700HQ,
Память: 11,6 ГиБ ОЗУ,
Графика: NVIDIA 960m

Рекомендации:

Руководство GNU GRUB 2.12

.

Ответ или решение

Если после обновления ядра Linux до версии 6.5.0 или выше Ubuntu зависает на этапе загрузки, это может указывать на несколько проблем, связанных с аппаратным или программным обеспечением. В данном случае основное внимание будет уделено анализу возможных причин этой проблемы, а также предложению решений и обходных путей.

Теория

Проблемы, возникающие при загрузке Linux, могут быть связаны с различными аспектами системы. Если система зависает на этапе загрузки вторичных процессоров (smp: Bringing up secondary CPUs), это может указывать на проблемы, связанные с обработкой многоядерных процессоров. Использование параметра ядра nolapic решает проблему зависания при загрузке, однако отключает использование всех процессоров, кроме одного. Это свидетельствует о возможных проблемах с APIC (Advanced Programmable Interrupt Controller), что может происходить из-за несовместимости с определенными версиями BIOS или микроудиродов.

Кроме того, зависание загрузки с сообщениями об ошибках ACPI (Advanced Configuration and Power Interface) или изоляции команд/ответов TPM говорит о потенциальных ошибках прошивки или несовместимости специфических аппаратных компонентов. Указания на ошибку DMAR указывают на возможное неправильное распределение ресурсов, связанное с IOMMU (Input-Output Memory Management Unit).

Примеры

  1. Обходной путь с nolapic и maxcpus: В указанной ситуации использование параметра nolapic помогло загрузиться системе, но ограничило работу только одним процессором. Параметр maxcpus=2 позволил задействовать два процессора на этапе загрузки, и после этого остальные процессоры были активированы вручную с помощью команды chcpu -e 0-7.

  2. Проблемы с EFI и микрокодом: Загрузка в режиме EFI (UEFI: SanDisk ‘Cruzer Fit, Partition 2) приводила к ошибкам, свидетельствующим о необходимости отключения микрокода загрузчика. Использование параметра dis_ucode_ldr в меню GRUB решило эту проблему, однако вызывало другие ошибки, связанные с загрузкой.

  3. Загрузка с ACPI:

    • Отключение ACPI (acpi=off) позволило загрузиться с USB, но только в ограниченной режиме (800×600 разрешение). Это подтверждает несовместимость определенных ACPI конфигураций с новыми версиями ядра.

Применение

Чтобы решить данную проблему, рекомендуется выполнить несколько шагов:

  1. Обновление BIOS: Поскольку ошибка прошивки DMAR может быть связана с прошивкой BIOS, рекомендуем проверить сайт производителя вашего ноутбука Asus на наличие обновлений BIOS.

  2. Использование предыдущих версий ядра: Верните версию ядра на 6.4.0 или ниже, что позволило успешную загрузку системы. Это временное решение, но может помочь в стабильной работе системы, пока обновленные версии не станут совместимыми.

  3. Настройка параметров ядра:

    • Попробуйте использовать различные параметры ядра при загрузке: nolapic, maxcpus, acpi=off, dis_ucode_ldr, которые уже показали свою эффективность в некоторых ситуациях.
    • Запуск системы с минимальными параметрами, а затем поэтапное добавление или изменение параметров поможет в диагностике проблем.
  4. Проверка аппаратной совместимости: Убедитесь, что все аппаратные компоненты совместимы с Ubuntu 24.04 и ядром 6.5.0. Это можно сделать на официальных форумах Ubuntu или в документации производителя.

  5. Обращение в сообщество: Публикация подробных отчетов об ошибках в специализированных форумах, таких как Launchpad или Phoronix поможет привлечь внимание разработчиков к этой проблеме.

Резюмируя, следует отметить, что проблемы с зависанием при загрузке могут быть временными, если было выпущено обновление для ядра или BIOS, исправляющее данные ошибки. Используйте комплексный подход, нацеленный на поиск временных решений и сотрудничество с сообществом для получения окончательного исправления.

Оцените материал
Добавить комментарий

Капча загружается...