Консультация № 182457
10.03.2011, 17:21
49.34 руб.
0 9 1
Здравствуйте, уважаемые эксперты!

Есть такое задание: Скомпилировать и загрузить модуль ядра Linux, но для этого нужен исходник.
Подскажите пожалуйста где его взять и в каком расширении файл сохранять? Я новичок в этом...

Компилятор gcc. Дистрибутив ASP, ниже на рисунке версия:


Спасибо Вам большое

Обсуждение

Неизвестный
10.03.2011, 17:26
общий
И вообще существует ли на данный момент русскоязычная литература по этому вопросу? Мне порекомендовали книгу: Джонатан Корбет, Алессандро Рубини "Linux Device Driver", но она к сожалению англоязычная. Я английский хорошо понимаю, но для изучения предмета в короткие строки это не вариант
давно
Академик
20764
1861
10.03.2011, 17:45
общий
Ядра живут на kernel.org. Там же и инструкции. Всё на английском - достаточно простом.
Насчёт русскоязычной документации - сомневаюсь, что такая есть. По ядру с документацией тяжело и на английском.
Неизвестный
10.03.2011, 18:04
общий
Адресаты:
Тот дистрибутив, что у меня установлен имеет ядро версии 2.6.17, на kernel.org я этой версии не вижу... Или не обязательно ИМЕННО ЭТУ версию скачивать?
Неизвестный
10.03.2011, 19:18
общий
здравствуйте
не совсем понятна суть задания
вам нужно сделать загрузчик ядра?
Неизвестный
10.03.2011, 21:20
общий
Нужно создать рабочий модуль ядра Linux. Дали вот такой пример:
Код:


#include <linux/module.h>
#include <linux/kernel.h>

int init_module(void)
{
printk("<1>Hello world!\n");

return 0;
}

void cleanup_module(void)
{
printk(KERN_ALERT "Goodbye world!\n");
}


Но в методичке написано, что для этого нужен код ядра текущей версии установленного дистрибутива Linux. С чего начать я вообще не знаю Вот я и спрашиваю по поводу кода ядра и где его взять, а по поводу уже самого модуля - это уже совсем другой разговор... Если сам не разберусь буду наверное вопрос задавать
давно
Академик
20764
1861
10.03.2011, 22:47
общий
Собрать модуль можно под любое ядро, но работать он будет только со "своим", так что если хотите с этим модулем потом работать - собирайте под текущее.
Для сборки модуля ядро собирать не надо. Ну, не совсем так: надо установить кое-что из исходников сконфигурированного ядра в каталог /lib/modules/`uname -r`/build. В дистрибутивах такие пакеты имеются готовые. Я знаю, в каком пакете всё нужное для Fedora (kernel-devel), но с ASP дела не имел.
Сама сборка и установка простая. Вот инструкция (опять -на английском). Кстати, ваш пример взят оттуда, только комментарии убраны.
Неизвестный
11.03.2011, 00:14
общий
Адресаты:
Завтра обязательно попробую и напишу о результатах. Спасибо
Неизвестный
12.03.2011, 18:53
общий
Адресаты:
Все работает. При загрузке модуля получаю Hello World!, при выгрзуке Goodbye world! Спасибо большое за внимание
давно
Академик
20764
1861
12.03.2011, 21:09
общий
это ответ
Здравствуйте, Мироненко Николай Николаевич!
После уточнений выяснилось, что вам нужно собрать модуль ядра.
Собрать модуль можно под любое ядро, но работать он будет только со "своим", так что если хотите с этим модулем потом работать - собирайте под текущее.
Для сборки модуля ядро собирать не надо. Ну, не совсем так: надо установить кое-что из исходников сконфигурированного ядра в каталог /lib/modules/`uname -r`/build. В дистрибутивах пакеты с этими файлами имеются уже готовые, только их, возможно, надо установить. Я знаю, в каком пакете всё нужное для Fedora (kernel-devel), но с ASP дела не имел.
Сама сборка и установка простая. Вот инструкция (на английском. Она - с полезного сайта The Linux Documentation Project). Кстати, ваш пример целиком взят оттуда, только комментарии убраны.

5
Только 5))
Форма ответа