Создание системного вызова в Linux - PullRequest
4 голосов
/ 07 октября 2010

Мы только что получили среднесрочный проект для моего курса «Операционные системы», нам предложили реализовать системный вызов (и я предполагаю, что нам придется написать кусок кода для его вызова).

Я понимаю, что мне нужно обновить таблицу системных вызовов (не могу вспомнить имя, но не важно), а также создать модуль ядра, на который будет указывать таблица, но означает ли это, что я 'Придется ли перекомпилировать все ядро, чтобы ядро ​​знало о моем модуле?

Я видел, что можно перехватить текущий системный вызов, но я подозреваю, что я не получу кредит за свое назначение, если ясделай это таким образом.

Просто хотел почувствовать размер усилий, которые я буду прилагать.

ОБНОВЛЕНИЕ: Ну, это вроде как было хлопотно, они меняют некоторые вещиЯ верю в 2.6.32, поэтому, когда я вернулся к предыдущей версии ядра, относящейся к учебным пособиям в Интернете, это было действительно легко понять.Если кто-то поймает это онлайн и будет следовать учебному пособию, сначала я бы рекомендовал сначала загрузить то же ядро ​​в учебное пособие, а затем двигаться дальше, как только вы поймете, что делаете.Если вы действительно знакомы с компиляцией ядер и т. Д., У вас может не быть проблем, но это был мой первый раз, когда я собирал ядро, так что было сложно собрать 2 часа, а потом выяснить, что что-то не работает, инужно делать это снова, особенно когда я не был уверен, что я делаю / не делаю неправильно.

Ответы [ 3 ]

4 голосов
/ 07 октября 2010

Вы хотите прочитать:

  • Программирование ядра Linux, третье издание (Мягкая обложка), Майкл Бек (Автор), Харальд Боме (Автор), Мирко Дзядзка (Автор), Ульрих Куниц (Автор), Роберт Магнус (Автор), Дирк Verworner (Автор), Клаус Шротер (Автор), опубликовано Addison-Wesley (Pearson Education), ISBN-10: 0201719754 , ISBN-13: 978-0201719758

и, возможно, также для более подробной информации:

  • Понимание ядра Linux, третье издание Даниэль П. Бове, Марко Чезати, опубликовано O'Reilly, ISBN 10: 0-596-00565-2 , ISBN 13: 9780596005658
  • Драйверы устройств Linux, третье издание Джонатан Корбет, Алессандро Рубини, Грег Кроа-Хартман, опубликовано O'Reilly, ISBN 10: 0-596-00590-3 , ISBN 13: 9780596005900
3 голосов
/ 07 октября 2010

но означает ли это, что мне придется перекомпилировать все ядро, чтобы ядро ​​знало о моем модуле?

Да, вам нужно будет перекомпилировать ядро.

2 голосов
/ 07 октября 2010

Я так понимаю, мне нужно обновить таблицу системных вызовов

Это /usr/src/linux/arch/i386/kernel/syscall_table.S

означает ли это, что мне придетсяперекомпилировать все ядро, чтобы ядро ​​узнало о моем модуле?

Да, действительно.

Just wanted to get a feel for the size of the effort I'll be making.

Если вы знаете, какой код вы собираетесь написать как частьСистемный вызов, вы уже сделали.Вам нужно только переждать время перекомпиляции ядра.Вот набор инструкций:

Реализация системного вызова в Linux

...