Доброго дня!
Пробую плавно перейти на новый toolchain, пересобрал всю систему и при запуске вижу
Код:
# ./busybox -?
FATAL: kernel too old
Segmentation fault
Информация о файле
Код:
# file rootfs/bin/busybox
rootfs/bin/busybox: ELF 32-bit LSB executable, Renesas SH, version 1 (SYSV), statically linked, for GNU/Linux 2.6.32, stripped
Сейчас используется linux-2.6.23.17, в состав нового toolchain входит linux-2.6.32.61, мигрировать наверное можно, но это время...
Как можно "обмануть" программы при запуске со старым linux?
Собственно как glibc получает информацию о текущей версии linux?
Если я подменю вывод uname или модифицирую текущий linux на отдачу более старшей версии, этого хватит?
Спасибо.
Как можно "обмануть" программы при запуске со старым linux?
Обмануть сегфолтящуюся программу? Никак. Надо пересобирать. Воероятно, вместе с тулчейном или как минимум libc (но обновиться, скорее всего, будет проще). Хотя не исключено, что вопрос решается и опциями компилятора/линковщика, не знаю. Конкретно с такой ошибкой я не сталкивался.
Насколько я понимаю segfault вызывает libc из-за несоответствия версии linux
(https://gcc.gnu.org/ml/gcc-help/2009-10/msg00401.html) писал(а):You can set the minimum supported kernel when you configure glibc with the --enable-kernel option