LINUX.ORG.RU

Пособие по системному программированию в ядре Linux

 , , ,


0

0

Вашему вниманию предлагается пособие начального уровня, посвящённое вопросам программирования в ядре Linux и предназначенное для студентов технического ВУЗа.

Выложен завершённый в целом черновик, опечатки пока устраняются. Замечания по существу прошу высказывать, не стесняясь.

>>> Подробности

Ответ на: комментарий от sv75

> В частности, "настройка ядра" не годится (это процесс получается), как и "состав ядра", а ещё варианты не приходят в голову.

Слово "настройка" не всегда обозначает процесс. Оно может означать и его результат -- например configuration file это "файл настройки". В данном случае это именно то, что нужно.

Транслитерация "конфигурация" в этом контексте не означает ПРОСТО НИЧЕГО -- типа прочитайте английский текст и поймите его, как можете. В русском языке слово "конфигурация" означает геометрическую форму, и только. В данном случае (и в большинстве других) не подойдёт; иногда подходит только для сетей.

Orlusha ★★★★
()

> Демонстрация работы модуля при помощи команд типа tail -F /proc/test может не произвести должного впечатления (замечание Крищенко В. А.).

Это понравилось, похоже, автор не согласен сам собой, иначе бы просто не написал эту фразу :)

Присоединяюсь к мнению, что статья должна вызывать интерес у студента, чтобы от неё остался какой-то след. Боюсь, для выбранной темы это сделать трудно: слишком уж обширная. А рассматривать только несколько кусочков темы, как это сделано в методичке, - у студента в конце останется справедливое ощущение, что он теперь не знает ещё больше, чем не знал до начала чтения.

Это очень пессимистичный взгляд :) на самом деле всё может оказаться намного лучше. Зависит от того, на каких специальностях будет предложена эта методичка и какие курсы уже прочитаны студентам...

const86 ★★★★★
()
Ответ на: комментарий от const86

> Присоединяюсь к мнению, что статья должна вызывать интерес у студента, чтобы от неё остался какой-то след.

Это *ликбез*. Вызывать интерес должна тема курсового или лабы. :)

> Это очень пессимистичный взгляд :) на самом деле всё может оказаться намного лучше. Зависит от того, на каких специальностях будет предложена эта методичка и какие курсы уже прочитаны студентам...

Из относящихся к: Си, типы и структуры данных, сиспрог (семафоры и всё прочее), дискретка.

sv75 ★★★★★
() автор топика

Да уж, html сверстан так, чтобы никто никогда его не читал. Еще бы больше вложенность сотворили, а то кликов маловато.

jackill ★★★★★
()
Ответ на: комментарий от jackill

Да, читать нужно пдф -- там же написано.

Но можно подсказать мне, как заставить latex2html ничего не разбивать.

sv75 ★★★★★
() автор топика

sv75, спасибо!

anonymous
()

что она представлена в редакторах кода восьмью пробелами. -> что она представлена в редакторах кода восемью пробелами.

gapsf2
()

>$ # Создание двух копий исходных текстов ядра >$ tar xf /usr/src/linux-source-$VER.tar.bz2 >$ mv linux-source-$VER linux-source >$ tar xf /usr/src/linux-source-$VER.tar.bz2 >$ mv linux-source-$VER linux-source.orig

зачем антарить 2 раза не проще ли cp и mv по одному разу

AleX ★★★
()

>После установки ядра и образа загрузочногго диска следует создать в файлt загруз-

на 8 странице

AleX ★★★
()
Ответ на: комментарий от AleX

Лучше будет: После установки ядра и создания образа первоначальной загрузки следует внести изменения в конфигурационный файл загрузчика.

AleX ★★★
()
Ответ на: комментарий от anonymous

Спасибо, sv75.

Студенты вас не забудут.

anonymous
()

> изучение исходных текстов ядра или его _модифиация_

> но для описанных в пособии задачах исходные тексты проще всего взять архив исходников из используемого дистрибутива.

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

> это позволит быстро перемещаться к объявлениям и _определением_ функций

определениям?

anonymous
()

> при внесение изменений в исходный текст ядра

внесении?

> архитектуры i386 и amd64 _рассматривалсь_ как ...

> но делать это следует с большой _осторожнотстью_

> загрузочногго

> файлt

решето :-)

anonymous
()

1) "cat /proc/kmsg" в момент запуска ничего не выводит, поэтому логично наверное было бы заменить на "tail -f /proc/kmsg" (так как читать это будут начинающие, по манам можно разобраться чем cat от tail отличается).

2) опять же если документ расчитан на начинающую аудиторию, то в него просто необходимо добавить ссылки с описанием, это ссылку на kernel janitors проект (хотя есть сам kernelnewbies, но janitors позиционируется именно для начала разработки, в отличие от старшего брата) и ссылки на отечественные ресурсы посвященные linux, например тот же LOR (ftw!) где в разделе development можно задавать вопросы о программировании ядра и драйверов и вообще всего остального.

anonymous
()
Ответ на: комментарий от anonymous

3) ну и в список рекомендуемой литературы обязательно добавить Робачевского "Операционная система UNIX"

anonymous
()
Ответ на: комментарий от sv75

Очень приятно видеть работу таких уважаемых людей, у которых когда-то был на занятиях, сдавал лабораторные, и т.п. (Алексей Брагин, ИУ7).

anonymous
()

В главе "3.1 Служебные функции ядра", (страница 13), linux/string.h упоминается в и в пункте "1) Строки", и в пункте "2) Память".

По-моему, ошибка!

anonymous
()

Про вуз в капсе совершенно правильно поправили, очень частая ошибка. Откройте любой словарь.

anonymous
()
Ответ на: комментарий от sv75

> Аббревиатуры пишуться большими, даже если они не имена собственные. Или пруфлинк.

Пожалуйста -- gramota.ru/spravka/rules/?rub=sokr

§ 111, пункт 2:

Одними строчными буквами пишутся:

<...>

2. Аббревиатуры, читаемые по звукам (а не по названиям букв) и обозначающие имена нарицательные, например: вуз, роно, дзот.

anonymous
()

Системное ядро по программированияю пособий Linux

anonymous
()
Ответ на: комментарий от sv75

Вот эту херь уберите. Бесят такие педагоги, вы типа тупое ламье - студенты, а мы счаз вас будем учить. Поменьше пафоса - побольше дела. Техническое пособие - только технические темы, а эту хрень нафик.

<a> Создание программного кода, работающего в ядре операционной системы, является достаточно своеобразной задачей. Причиной этому является как непривычный для сту- дента характер работы, заключающейся в интеграции его кода в уже существующую про- грамму ядра, так и невозможность использовать привычные средства разработки, отлад- чики и программные библиотеки, предназначенные для прикладных программ. В результате первый месяц или даже два студент пытается понять, что к чему, а времени на курсовой проект выделено немного (замечание Крищенко В. А.). </a>

anonymous
()
Ответ на: комментарий от anonymous

> Вот эту херь уберите. Бесят такие педагоги, вы типа тупое ламье - > студенты, а мы счаз вас будем учить. Поменьше пафоса - побольше > дела. Техническое пособие - только технические темы, а эту хрень > нафик.

Вы бы пообщались со студентами в качестве преподавателя, провели бы несколько семестров занятий (а до этого ещё бы получили кандидата наук), тогда имели бы более-менее реальную картину, что представляют собой студенты, и как надо писать методички, статьи, монографии, и т.п.

fireballrus
()

Прочитав пособие, я примерно понял его цель как русское how-to "я знаю С и имею представление о ядре, как мне написать модуль?". Соответственно будут и мои замечания.

0. Орфорграфию не правлю -- вычитка будет потом (как я понял).

1. Если дебиан, то почему не указан debian-way компиляции ядер? Тем более, что патченное ядро надо как-то запускать, а дебиановский способ сразу создает пакет, который легко установить в текущий загрузчик.

2. ЕМНИП не "лучше брать дебиановское ядро" а "ванильное ядро не запуститься в дебиане, так как там нет патча под initrd FS".

3. ЕМНИП в KDevelop есть готовый пример модуля ядра, вместе в мейкфайлами и всем чем надо. Это надо указать.

4. Лучше всего разбирать *именно этот пример модуля* из KDevelop, если хочется разбирать свой пример -- засабмитить его в пакет KDevelop или хотя бы отдавать в архивчике. Таким образом методичка будет не бессвязным набором рецептов, а будет иметь стартовую точку, откуда можно начинать патчить.

5. С версиями ядра неконсистентность -- лучше их вообще не указывать, и для переменной версии выбрать одно и то же название по всему тексту

6. От "(указано Хххххх Х.Х.)" рябит в глазах, лучше это выносить в ссылочку цифиркой.

7. У дебиана на суффикс ядра (test в методичке) есть ограничения по использованию -_

8. В одном из примеров дважды объявлена переменная -- опять о том же: примеры лучше всего проверять компилятором, т.е. иметь в виде готового, хотя и тупого, модуля(-ей).

9. В примере с нитями вызываемой нити надо поставить хоть sleep и пару printk для приличия.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

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

Студент тут в общем не при чем. Речь фактически идет о том, что вот кто-то знает С и имеет представление о ядре, но чтобы сделать модуль, нужны куча технических подробностей, специфичных именно для организации этого процесса, и вот они в методичке изложены, чтобы сразу можно было скомпилить тестовый модуль и начать его патчить.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

И еще -- в случае ограниченности объема пособия можно убирать текст примров и давать ссылку на архивчик, где лежит тупейший модуль, который запускает нити/создает мьютексы/... Я надеюсь, что эти примерчики можно понадергать с какого-нить ресурса для ньюбов и положить к себе на сайт sevik.ru

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> 6. От "(указано Хххххх Х.Х.)" рябит в глазах, лучше это выносить в ссылочку цифиркой.

Это временные ремарки для потенциальных критиков, будут просто убраны.

Debian-way всё-таки не хотелось бы трогать.

Остальное учтём (или проверим, есть сомнения) в той или иной мере, спасибо большое.

>. В одном из примеров дважды объявлена переменная -- опять о том же: примеры лучше всего проверять компилятором, т.е. иметь в виде готового, хотя и тупого, модуля(-ей).

Именно по этой причине код большинства примеров тягается из сурсов при сборке, но с мелкими изменениям типа выкидывания коментариев и прочего. Но значит я где-то накосячил или этот пример всё-таки не тащится, на какой странице эта ошибка?

sv75 ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

> И еще -- в случае ограниченности объема пособия можно убирать текст примеров

По ряду причин это плохо подходит, но...

> и давать ссылку на архивчик, где лежит тупейший модуль, который запускает нити/создает мьютексы/... Я надеюсь, что эти примерчики можно понадергать с какого-нить ресурса для ньюбов и положить к себе на сайт sevik.ru

... полный архив примеров, из которых надёрганы фрагменты в тексте, будет выложен. Просто надо дойти получить страничку на сайте ВУЗа, чтобы не давать ссылку на личные странички -- а лень (с другой стороны, вдруг там будет жуткий редизайн и ссылки грохнуться?).

sv75 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

> Техническое пособие - только технические темы, а эту хрень нафик.

Это объективные факты по практике этого курсового, которые не войдут в основной текст пособия, но оставлены для пояснения его актуальности (собсно, пособие и призвано эту проблему *решить*) и некоторых решений на период его обсуждения. Сейчас еще добавлю примечание про нити vs потоки, например, а то меня заклюют с нитями.

А адекватные студенты на это реагируют адекватно, так шо не палитесь.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

> Debian-way всё-таки не хотелось бы трогать.

Почему??????

Без этого методичка не полна. Допустим я пропатчил ядро, скомпилил, а как дальше мне перезагрузиться под него? И если мы уж взяли дебиан, так надо сказать как это там сделать, а не заставлять рыть инет.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

> Пожалуйста -- gramota.ru/spravka/rules/?rub=sokr

> 2. Аббревиатуры, читаемые по звукам (а не по названиям букв) и обозначающие имена нарицательные, например: вуз, роно, дзот.

Спасибо за пруфлинк, но это видимо поост-пеерстроечное правило и я с этим не согласен. "иа" (истребительный авиаполк) вместо ИА? В если оно в анчале предложения -- "Вуз"? Нет, спасибо.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

> Но значит я где-то накосячил или этот пример всё-таки не тащится, на какой странице эта ошибка?

Из меня таки не слишком хороший компилятор, так что может лучше использовать GCC?

int function()
{
int result = ERROR;
other_resource or;
some_resource *sr = create_some_resource();
if (sr == NULL)
goto out;
other_resource or; <------

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

> Про вуз в капсе совершенно правильно поправили, очень частая ошибка. Откройте любой словарь.

Нет уж, если меня заставят писать иа, дзот, ур (укреп. район), вуз, но ПТУ (оно же не по буквам!!) -- то я лучше эммигрирую или хотя бы не буду писать пособия. >_<

sv75 ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

Да, это скопипастил руками и не синхронизировал с рабочим вариантом, перевожу и это на автоматический makefile :(

sv75 ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

> Почему??????

> Без этого методичка не полна. Допустим я пропатчил ядро, скомпилил, а как дальше мне перезагрузиться под него?

Так там же написано -- (sudo) make install, затем grub/menu.lst руками. Грубо, но универсально. (sudo вот только надо добавить)

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

> Debian-way всё-таки не хотелось бы трогать.

Тогда уж расскажи как сделать bz-image, куда его положить, какие сделать симлинки, как пропатчить конфиг grub-а, как пропатчить конфиг lilo если там все-таки лило... и все равно это будет верно только для дебиана.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от sv75

> Грубо, но универсально.

Универсальность я только приветствую, но очень сильно подозреваю, что это НЕ универсально. А точно тебе могут сказать только любители остальных дистров.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> Грубо, но универсально.

Вообще-то я не специалист по всем деталям... но у меня в корне лежат симлинки на ядро и инитрд.имж, а в твоем процессе про них что-то не сказано.

Кстати: а почему нужна осторожность с make menuconfig, и какого типа осторожность? (я не знаю и из текста не понял)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> А про подвох при редактировании этого файла руками рассказал?

Про наличии списка вариантов загрузки, куда не нужно вписываться, а то дистр прибъёт -- да, упомянул.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

> Кстати: а почему нужна осторожность с make menuconfig, и какого типа осторожность? (я не знаю и из текста не понял)

Не загрузится :)

sv75 ★★★★★
() автор топика

Если дети не пишут драйверов, лучше бы им ползоваться qemu (или KVM), как взрослым.

tailgunner ★★★★★
()
Ответ на: комментарий от sv75

> Грубо, но универсально

Если оно и правда окажется универсально, то надо это написать в явном виде, для каких дистров подходит и упомянуть наличие debian-way (который imho проще).

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от sv75

> Про наличии списка вариантов загрузки, куда не нужно вписываться, а то дистр прибъёт -- да, упомянул.

Там не только этот подвох.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от sv75

>> Кстати: а почему нужна осторожность с make menuconfig, и какого типа осторожность? (я не знаю и из текста не понял)

> Не загрузится :)

так *какую* же осторожность? вообще не использовать? не использовать в выходные и новолуние?

Тейлганнер ксати пишет дело... может вместо этого рассказать как тестить ядра под KVM?

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

s/вместо этого/вместо рассказа об инсталяции ядра в grub/

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от anonymous

Это НЕ ОШИБКА. ВУЗ - аббревиатура, и плевать, что звучная и устоявшаяся, правила разрешают писать как угодно.

anonymous
()
Ответ на: комментарий от jackill

> Да уж, html сверстан так, чтобы никто никогда его не читал. Еще бы больше вложенность сотворили, а то кликов маловато.

html сделан по моей и еще чей-то просьбе, и я читал именно ЕГО а не пдф.

www_linux_org_ru ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.