Вопрос или проблема
Обновление 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
Рекомендации:
.
Ответ или решение
Если после обновления ядра 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).
Примеры
-
Обходной путь с
nolapic
иmaxcpus
: В указанной ситуации использование параметраnolapic
помогло загрузиться системе, но ограничило работу только одним процессором. Параметрmaxcpus=2
позволил задействовать два процессора на этапе загрузки, и после этого остальные процессоры были активированы вручную с помощью командыchcpu -e 0-7
. -
Проблемы с EFI и микрокодом: Загрузка в режиме EFI (UEFI: SanDisk ‘Cruzer Fit, Partition 2) приводила к ошибкам, свидетельствующим о необходимости отключения микрокода загрузчика. Использование параметра
dis_ucode_ldr
в меню GRUB решило эту проблему, однако вызывало другие ошибки, связанные с загрузкой. -
Загрузка с ACPI:
- Отключение ACPI (
acpi=off
) позволило загрузиться с USB, но только в ограниченной режиме (800×600 разрешение). Это подтверждает несовместимость определенных ACPI конфигураций с новыми версиями ядра.
- Отключение ACPI (
Применение
Чтобы решить данную проблему, рекомендуется выполнить несколько шагов:
-
Обновление BIOS: Поскольку ошибка прошивки DMAR может быть связана с прошивкой BIOS, рекомендуем проверить сайт производителя вашего ноутбука Asus на наличие обновлений BIOS.
-
Использование предыдущих версий ядра: Верните версию ядра на 6.4.0 или ниже, что позволило успешную загрузку системы. Это временное решение, но может помочь в стабильной работе системы, пока обновленные версии не станут совместимыми.
-
Настройка параметров ядра:
- Попробуйте использовать различные параметры ядра при загрузке:
nolapic
,maxcpus
,acpi=off
,dis_ucode_ldr
, которые уже показали свою эффективность в некоторых ситуациях. - Запуск системы с минимальными параметрами, а затем поэтапное добавление или изменение параметров поможет в диагностике проблем.
- Попробуйте использовать различные параметры ядра при загрузке:
-
Проверка аппаратной совместимости: Убедитесь, что все аппаратные компоненты совместимы с Ubuntu 24.04 и ядром 6.5.0. Это можно сделать на официальных форумах Ubuntu или в документации производителя.
-
Обращение в сообщество: Публикация подробных отчетов об ошибках в специализированных форумах, таких как Launchpad или Phoronix поможет привлечь внимание разработчиков к этой проблеме.
Резюмируя, следует отметить, что проблемы с зависанием при загрузке могут быть временными, если было выпущено обновление для ядра или BIOS, исправляющее данные ошибки. Используйте комплексный подход, нацеленный на поиск временных решений и сотрудничество с сообществом для получения окончательного исправления.