Может ли 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 +. Не только тривиальные изменения, целые структуры были полностью переименованы, некоторые полностью исчезли, другие перестроили своих членов.
Скорее всего, понадобится немало повозиться, прежде чем вы сможете его построить.