Может ли Firefox 3.5 работать на Linux Kernel 2.4?

Я пытаюсь запустить Firefox внутри chroot Linux. В chroot есть копия Debian Etch, установленная через debootstrap. Если chroot запущен на машине с ядром 2.6, я могу нормально запускать Firefox 2.0, 3.0 и 3.5. Моя проблема возникает, когда я перемещаю chroot на компьютер с ядром 2.4.37, затем я могу нормально запустить 2.0, но 3.0 и 3.5 оба зависают без вывода сообщений и ошибок.

С Firefox 3.5 на компьютере с ядром 2.4, strace -f ./firefox выходы: (показаны только последние несколько строк перед зависанием)

[pid  8220] set_thread_area({entry_number:-1 -> -1, base_addr:0x41bef140, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = -1 ENOSYS (Function not implemented)
[pid  8220] modify_ldt(1, {entry_number:0, base_addr:0x41bef140, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, 16) = 0
[pid  8220] munmap(0x40019000, 11144)   = 0
[pid  8220] getpid()                    = 8220
[pid  8220] rt_sigaction(SIGRTMIN, {0x400241e0, [], SA_RESTORER, 0x416f58f8}, NULL, 8) =     0
[pid  8220] rt_sigaction(SIGRT_1, {0x40023cc0, [RTMIN], SA_RESTORER, 0x416f58f8}, NULL, 8) = 0
[pid  8220] rt_sigaction(SIGRT_2, {0x40023500, [], SA_RESTORER, 0x416f58f8}, NULL, 8) = 0
[pid  8220] rt_sigprocmask(SIG_BLOCK, [RTMIN], NULL, 8) = 0
[pid  8220] rt_sigprocmask(SIG_UNBLOCK, [RT_1], NULL, 8) = 0
[pid  8220] open("/proc/cpuinfo", O_RDONLY) = 3
[pid  8220] read(3, "processor\t: 0\nvendor_id\t: Genuin"..., 1024) = 422
[pid  8220] read(3, "", 1024)           = 0
[pid  8220] close(3)                    = 0
[pid  8220] readlink("/etc/malloc.conf", 0xbfffe47b, 4096) = -1 ENOENT (No such file or     directory)
[pid  8220] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  8220] rt_sigsuspend([]

set_thread_area сбой вызова с функцией "Не реализовано", а также тот факт, что, поскольку я работаю в chroot, между двумя моими работающими средами отличается только ядро, я полагаю, что Firefox не работает на ядре 2.4. Тем не менее, Mozilla перечисляет длинный список требований для запуска Firefox, и ядро ​​2.6 не является одним из них. Может кто-нибудь предложить обходной путь для того, как я могу это запустить?

5 ответов

Решение

Первое, что я попробую, это на самом деле скомпилировать его на компьютере с ядром 2.4, чтобы ваш компилятор не пытался использовать ABI с ядром 2.6. Если вы можете успешно скомпилировать под 2.4, он, вероятно, будет работать нормально. Если нет, то, вероятно, где-то скрытая зависимость.

Хотя эта функция действительно не реализована в 2.4, она, вероятно, не вызывается из самого Firefox. Я предполагаю, что, запустив - в 2.4 - двоичный файл, скомпилированный и связанный с 2.6, вы вызываете библиотеку, которая несовместима. Поскольку Firefox является переносимым компонентом, он либо ifdef, либо является частью отдельной библиотеки.

Вам нужно проверить версии glibc (не glib). Просто запустите /lib/libc.so.6 и опубликуйте результаты

Вы загружаете двоичные файлы или компилируете из исходного кода? для бинарного, вы уверены, что версия glibc совпадает с установленной вами?

Я действительно сомневаюсь в этом... LOT изменился в сети Linux (насколько это обеспечивает ядро) с 2,4 до 2,6 и даже с 2.6.20 до 2.6.24 +. Не только тривиальные изменения, целые структуры были полностью переименованы, некоторые полностью исчезли, другие перестроили своих членов.

Скорее всего, понадобится немало повозиться, прежде чем вы сможете его построить.

Другие вопросы по тегам