Как стать автором
Обновить

SLES 15 и невозможность загрузки ядра Xen

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.9K

Пришлось столкнуться с забавной ошибкой, по которой сходу не удалось найти никакой информации в интернете.

Проблема по первичным признакам такая. Грузится SUSE Linux Enterprise Server 15, доходит до меню загрузки GRUB. Далее, если выбрать обычное ядро, всё нормально, а если выбрать ядро для гипервизора Xen, то экран моргает и мы опять возвращаемся в меню. Запустить Xen невозможно никак.

Долгие упражнения с настройками GRUB и параметрами загрузки ядра ничего не дали (а надо отметить, что инициализация сервера при загрузке — это неспешный процесс, поэтому дело затягивается надолго). Наконец, возникла ведущая к победе мысль — заснять процесс загрузки на смартфон в ускоренном режиме!

После нескольких попыток удалось получить вот такой кадр:

Это изображение держится на экране в самом удачном случае доли секунды.

Дальше уже делом техники было найти описание проблемы на форуме поддержки Lenovo, которое заключается в следующем.

  1. Загрузчик EFI ядра Xen написан весьма вольно, и грузит ядро одной физической командой чтения.

  2. До версии SLES 15 SP2 размер ядра составлял чуть менее 16 мегабайт, начиная с SP3 — увеличился до чуть более 16 мегабайт.

  3. У ряда контроллеров и дисков размер буфера чтения ограничен как раз величиной 16 мегабайт.

  4. Как следствие, загрузка Xen в режиме EFI с недостаточно продвинутого контроллера или диска приводит к ошибке чтения и мгновенному возврату обратно в меню.

Для того, чтобы справиться с проблемой, предлагается воспользоваться одним из следующих решений:

a) Дождаться, пока Xen community исправит ошибку, интегрировав предложения Lenovo/IBM в свой код (пока с версии 15SP3 ничего не произошло, сейчас на дворе 15SP5).

б) Скачать исходники ядра Xen и перекомпилировать с патчем, предложенным на упомянутой выше странице поддержки, где файл читается порциями по 1 мегабайту. Делать так каждый раз после обновления загрузчика (не проверял, но должно работать).

в) Выполнять загрузку сервера не в режиме EFI, а в режиме Legacy (это работает).

Очень поучительная история.

Бонус:

Ещё одной причиной незагрузки ядра Xen, менее замороченной, начиная с давних времён версии SLES 12 является русский язык. Если зайти на даже полностью англоязычный сервер удалённо через ssh -X yast2 с машины, на которой активна русская локаль, то интерфейс yast и его элементов настройки будет русским. При этом в меню загрузки пункт будет называться “Ядро SLES с гипервизором Xen”, и такой же раздел файла настроек GRUB будет искаться скриптом. А учитывая, что раздел на самом деле называется “SLES kernel with Xen hypervisor”, ясно, что ничего хорошего скрипт не найдёт. Но это простая в диагностике ошибка.

Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии8

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн