2010-10-07 4 views
4

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

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

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

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

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

+0

Для перекомпиляции части ядра, я бы порекомендовал вам взять исходный код и .config из дистрибутива вместо того, чтобы Ваше собственное .config с источником из kernel.org. Это должно вызывать меньше головных болей, если вы не получите .config для вашего оборудования. – jonescb

ответ

3

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

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

+0

Пока это выглядит хорошо, я посмотрю его ближе, когда я пойду в школу, и похоже, что это решено! - Вы когда-нибудь делали это раньше, по вашему мнению, это очень сложно? Это не похоже на мою перспективу, но я никогда не пытался это сделать, поэтому я не уверен. – onaclov2000

+0

Думаю, все должно быть хорошо. Компиляция ядра занимает около 5 минут, если вы не находитесь на старом оборудовании. – dbyrne

+0

Хммм Я делал yestoallconfig (или что-то в этом роде), а затем make, и его было goign в течение как минимум 30 минут, я на 3,2 ГГц машине с двумя процессорами, и я думаю, что вокруг 4 ГБ бара ... то снова я компилирую с нуля, если это помогает – onaclov2000

2

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

Это /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. 

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

Implementing a System Call in Linux

+0

Это лучше, чем мой ленивый ответ. Я повышаю твою. – haylem

4

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

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

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

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

У меня есть 2-е издание книги драйверов устройств, а 3-я онлайн-бесплатная, очень интересная книга! – onaclov2000

+0

Первое, что я упомянул, является лучшим, если вы хотите попасть в разработку ядра Linux. Он хорошо охватывает дизайн самой ОС и позволяет вам взломать его. – haylem

Смежные вопросы