Ошибка при сборке ядра Linux 5.4 на Kali Linux [закрыто]

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

Проблема со сборкой ядра на Realme Note 50.
Может, кто-то поможет?

./include/linux/android_kabi.h:43:17: ошибка: статическое утверждение не выполнено: "include/linux/sched.h:1312: struct{ u64 last_enqueue_ts; u64 last_sleep_ts; } больше чем "
43 | _Static_assert(sizeof(struct{_new;}) <= sizeof(struct{_orig;}),
| ^~~~~~~~~~~~~~
./include/linux/android_kabi.h:67:17: примечание: в расширении макроса ‘__ANDROID_KABI_CHECK_SIZE_ALIGN’
67 | __ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./include/linux/sched.h:1312:9: примечание: в расширении макроса ‘_ANDROID_KABI_REPLACE’
1312 | _ANDROID_KABI_REPLACE(ANDROID_VENDOR_DATA_ARRAY(1, 2), struct{ u64 last_enqueue_ts; u64 last_sleep_ts; });
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/android_kabi.h:48:17: ошибка: статическое утверждение не выполнено: “include/linux/sched.h:1312: не выровнено так же, как struct{ u64 last_enqueue_ts; u64 last_sleep_ts; }”
48 | _Static_assert(alignof(struct{_new;}) <= alignof(struct{_orig;}),
| ^~~~~~~~~~~~~~
./include/linux/android_kabi.h:67:17: примечание: в расширении макроса ‘__ANDROID_KABI_CHECK_SIZE_ALIGN’
67 | __ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./include/linux/sched.h:1312:9: примечание: в расширении макроса ‘_ANDROID_KABI_REPLACE’
1312 | _ANDROID_KABI_REPLACE(ANDROID_VENDOR_DATA_ARRAY(1, 2), struct{ u64 last_enqueue_ts; u64 last_sleep_ts; });
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/android_kabi.h:43:17: ошибка: статическое утверждение не выполнено: "include/linux/sched.h:1314: struct{ unsigned long last_switch_count; unsigned long last_switch_time; unsigned long used_for_hung_task; } больше чем "
43 | _Static_assert(sizeof(struct{_new;}) <= sizeof(struct{_orig;}),
| ^~~~~~~~~~~~~~
./include/linux/android_kabi.h:67:17: примечание: в расширении макроса ‘__ANDROID_KABI_CHECK_SIZE_ALIGN’
67 | __ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./include/linux/sched.h:1314:9: примечание: в расширении макроса ‘_ANDROID_KABI_REPLACE’
1314 | _ANDROID_KABI_REPLACE(ANDROID_OEM_DATA_ARRAY(1, 3), struct{ unsigned long last_switch_count; unsigned long last_switch_time; unsigned long used_for_hung_task; });
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/android_kabi.h:48:17: ошибка: статическое утверждение не выполнено: “include/linux/sched.h:1314: не выровнено так же, как struct{ unsigned long last_switch_count; unsigned long last_switch_time; unsigned long used_for_hung_task; }”
48 | _Static_assert(alignof(struct{_new;}) <= alignof(struct{_orig;}),
| ^~~~~~~~~~~~~~
./include/linux/android_kabi.h:67:17: примечание: в расширении макроса ‘__ANDROID_KABI_CHECK_SIZE_ALIGN’
67 | __ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./include/linux/sched.h:1314:9: примечание: в расширении макроса ‘_ANDROID_KABI_REPLACE’
1314 | _ANDROID_KABI_REPLACE(ANDROID_OEM_DATA_ARRAY(1, 3), struct{ unsigned long last_switch_count; unsigned long last_switch_time; unsigned long used_for_hung_task; });
| ^~~~~~~~~~~~~~~~~~~~~
make[1]: *** [scripts/Makefile.build:104: arch/arm64/kernel/asm-offsets.s] ошибка 1
make: *** [Makefile:1243: prepare0] ошибка 2```

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

Извините за ваши трудности при сборке ядра Linux 5.4 на Kali Linux. Проблемы, такие как ваши, могут возникать по целому ряду причин. Давайте детально разберем ситуацию и найдем возможные пути ее решения.

Анализ Проблемы

Исходя из предоставленной ошибки, основной источник проблемы связан с конфликтами в макросах при проверке размеров и выравнивании структур в файлах android_kabi.h и sched.h ядра. Ошибки указывают на то, что структура, с которой вы работаете, имеет размеры или выравнивание, отличное от ожидаемого, что вызывает сбой в статическом утверждении.

Примеры ошибок:

  1. static assertion failed: “структура { u64 last_enqueue_ts; u64 last_sleep_ts; } больше, чем ожидалось"
  2. static assertion failed: “структура не выровнена так же, как ожидалось по адресу”

Возможные Причины

  1. Проблемы с совместимостью Android Vendor Hooks:
    Некоторые ошибочные сообщения указывают на макросы, специфичные для Android (_ANDROID_KABI_REPLACE). Это может свидетельствовать о том, что вашу сборку ядра конфигурируют с элементами, характерными для Android, что может быть не совместимо с вашей системой Kali Linux на вашем оборудовании.

  2. Ошибки в конфигурации ядра:
    Неправильная конфигурация ядра может привести к тому, что специфичные для архитектуры элементы не правильно настроены для вашего устройства ARM64, что может вызвать ошибки компиляции.

  3. Устаревшие или несовместимые патчи:
    Если вы используете патчи или нестабильные ветки кода, возможно, они несовместимы с другими частями кода ядра.

Решения

  1. Проверка конфигурации ядра:
    Убедитесь, что вы используете конфигурацию ядра, подходящую для вашего оборудования (в данном случае ARM64 для Realme Note 50). Для этого выполните make menuconfig и пересмотрите все параметры настройки относительно поддержки Android и других опциональных частей ядра, которые могут не потребоваться.

  2. Удаление специфичных для Android макросов:
    Если вы не планируете запуск Android на вашем оборудовании, возможно, стоит отключить любые патчи или макросы, вроде _ANDROID_KABI_REPLACE, которые могут вызвать несовместимости и предварительно протестировать сборку без них.

  3. Использование стабильной версии кода:
    Вернитесь к стабильным выпускам ядра без экспериментальных патчей и с более надежной поддержкой архитектур и систем, на которых вы планируете запускать ваше устройство.

  4. Обратитесь за специализированной помощью:
    Если проблема сохраняется, обращение на такие форумы, как Unix & Linux StackExchange, разработчики дистрибутива Kali Linux или сообщество поддержки для разработчиков Android может помочь получить более специализированные советы и готовые решения от сообщества.

Заключение

Компиляция ядра Linux может представлять сложность, особенно при нестандартных конфигурациях или специфических патчах. Постарайтесь разобраться, действительно ли все конфигурационные параметры совместимы и соответствуют архитектуре вашего устройства. Постепенно исключайте вероятные причины ошибок и следуйте рекомендациям, изложенным выше, чтобы успешно достичь стабильной сборки.

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

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