В настоящее время я разрабатываю модуль ядра, который будет работать в непривилегированном домене в Xen.Модуль должен вызвать
xen/grant_table.h: gnttab_grant_foreign_access()
Но когда я хочу вставить его, я получаю сообщение об ошибке:
Unknown symbol gnttab_grant_foreign_access (err 0)
Я проверил версии ядра, одну из которых я собрал, а другуюработает в непривилегированном домене, оба совпадают.Точнее, строки версий, сообщаемые uname -r
и modinfo MODULE
, равны./proc/kallsyms
содержит список функций / символов, которые должны быть экспортированы ядром:
ffff00000853d088 T gnttab_grant_foreign_access
Мне кажется странным, что при запуске
nm MODULE
я получаю, что gnttab_grant_foreign_access
неопределенный символ, но также printk
не определен.
U gnttab_grant_foreign_access
U printk
В этом посте я прочитал, что модуль ядра должен быть построен на ядре DOM0, а не на непривилегированном домене.Поскольку это был единственный источник, который я смог найти, и документация по этой теме несколько редкая, я хотел бы спросить здесь, так ли это на самом деле?Это показалось бы мне странным, потому что я хочу загрузить модуль в ядро версии A, но должен скомпилировать его для версии ядра B.