У меня проблема с загрузкой модуля ядра, имеется большая структура данных, размером примерно 2 ГБ памяти - независимо от того, выделяю ли я таблицу заранее (чтобы она отображалась в .bss, когда я выполняю size -A module.ko
или пытаюсь vmalloc ()
это во время загрузки, загрузка модуля не выполняется с помощью insmod: ошибка при вставке 'module.ko': -1 Невозможно выделить память
.
Я попытался отладить проблему в пользовательском режиме Linux, но Я получаю кучу ошибок segfaults (которые можно продолжить в gdb, но в конечном итоге консольное сообщение переполнение в типе перемещения 10 val <значение в парке мячей 6G>
и 'module' вероятно не скомпилирован с -mcmodel = kernel
. Я предполагаю, что с Kbuild
-mcmodel
должно быть правильным, верно?
Итак, вопросы следующие:
-mcmodel = large
для модуля ядра и ожидать, что он будет работать? Я пробовал это на debian squeeze, 64-bit, 2.6.32-5-amd64 (host) с 8 ГБ памяти и 2.6.32 в uml с памятью 4G,так что это не должно быть не обычной проблемой нехватки памяти.
Дополнительная заслуга за обход лимита, если такой лимит существует :)