LINUX.ORG.RU

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

 , , ,


0

0

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

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

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

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

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

Я так понял, что эта статья СПЕЦИАЛЬНО именно список неинтересных деталей, чтобы студент мог побыстрее их учесть и после этого заняться интересными.

www_linux_org_ru ★★★★★ ()

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

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

kost-bebix ★★ ()

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

Старый свод правил:
>§ 111. Одними строчными буквами пишутся:

>

>1. Все сложносокращённые слова, например: рабкор, спецодежда, культработа.

>

>2. Аббревиатуры, читаемые по звукам (а не по названиям букв) и

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

>Источник: «Правила русской орфографии и пунктуации», М., Учпедгиз, 1956 г.


Новый:
>§ 205. Звуковые инициальные аббревиатуры пишутся прописными буквами,

>напр.: ООН, МИД, НОТ, ОМОН, ГАИ, СПИД, ГЭС, ГРЭС.

>По традиции пишутся строчными буквами некоторые (немногие) звуковые

>аббревиатуры: вуз, втуз, дот, дзот. <...>

>Источник: Правила русской орфографии и пунктуации.

>Полный академический справочник / Под ред. В. В. Лопатина. — М.: Эксмо, 2007. — 480 с.


Хоть тресни, но «вуз» надо писать строчными.

anonymous ()

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

Рязанова и Крищенко? :D Это же легендарные преподы с 7-й кафедры!

anonymous ()

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

Меня удивил совет создавать копии исходного дерева и пользоваться для создания патчей командой diff.

Git настолько проще в использовании, удобнее и быстрее, что не рекомендовать использовать с ядром именно git - это почти садизм :)

yoush ()

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

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

Не трогать, если не уверен. Для курса оно не нужно.

> Тейлганнер ксати пишет дело...

Что именно имеется в виду?

> может вместо этого рассказать как тестить ядра под KVM?

Рассказ "как тестить ядра" страниц в 100 уложиться? >_<

Про KVM наверное надо упомянуть.

sv75 ★★★★★ ()

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

> Что именно имеется в виду?

Что не надо мучить собранными ядрами реальную машину, а пускать их в qemu или KVM. Заодно и быстрее будет, и рут не нужен.

tailgunner ★★★★★ ()

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

> Меня удивил совет создавать копии исходного дерева и пользоваться для создания патчей командой diff.

> Git настолько проще в использовании, удобнее и быстрее, что не рекомендовать использовать с ядром именно git - это почти садизм :)

Тут сложная ситуация:

- студенты не знают и не понимают понимают команд diff и patch, как раз стоит им рассказать про них;

- допустим, мы хотим использовать сурсы дистрибутивного ядра или ядра, похаканного (заранее) преподавателем;

- системы контроля версий они тоже не знают, но рассказывать в этом курсе/курсовом про них нет желания;

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

Кроме того, не всё ли равно, что хакать? Патч создаётся один раз -- отдать преподавателю/подшить к сурсам курсового проекта.

Возможно, я заблуждаюсь, прошу пояснить суть "садизма".

sv75 ★★★★★ ()

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

> Что не надо мучить собранными ядрами реальную машину, а пускать их в qemu или KVM. Заодно и быстрее будет, и рут не нужен.

Это у меня есть, добавил. С поправкой (для qemu) -- если не нужны устройства, а с kvm я дела не имел (исправлюсь). Кроме того, у 70% студентов линукс уже был в виртуалке, поэтому виртуализацию и не упомянул в начале, поскольку совет малоактуален.

sv75 ★★★★★ ()

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

> - системы контроля версий они тоже не знают, но рассказывать в этом курсе/курсовом про них нет желания;

O_O

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

Git отнюдь не подарок, но трафика ему не нужно - при желании, всё работает локально.

tailgunner ★★★★★ ()

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

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

Ok, я буду считать, что "технический ВУЗ" -- это не нарицательное, а МГТУ. Или, лучше, MIT. В общем, не нарицательное типа "поступить в вуз" ;)

sv75 ★★★★★ ()

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

> С поправкой (для qemu) -- если не нужны устройства

Ну, там эмулируется сетевая карта, диск, клава - формально и в qemu можно писать драйверы... хотя это, наверное, извращение.

tailgunner ★★★★★ ()

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

>> - системы контроля версий они тоже не знают, но рассказывать в этом курсе/курсовом про них нет желания;

> O_O

Ага, лень. Им хватает шока от make. Там есть пререквизиты, на практике они выполняются на 50% от силы, а тут еще git.

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

> Git отнюдь не подарок, но трафика ему не нужно - при желании, всё работает локально.

А откуда им ставится в первый раз, Мне раздавать свою локальную копию?

Хорошо, я подумаю. Лично я просто не вижу разницы на учебных задачах.

sv75 ★★★★★ ()

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

> Я так понял, что эта статья СПЕЦИАЛЬНО именно список неинтересных деталей, чтобы студент мог побыстрее их учесть и после этого заняться интересными.

Именно так.

sv75 ★★★★★ ()

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

>>> - системы контроля версий они тоже не знают, но рассказывать в этом курсе/курсовом про них нет желания;

>> O_O

> Ага, лень

Это ж базовая вещь.

> Им хватает шока от make.

/me скорбит над судьбой бедных детишек

> Мне раздавать свою локальную копию?

Да.

tailgunner ★★★★★ ()

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

>> Ага, лень

> Это ж базовая вещь.

Безусловно. Так пусть её включат в базовый курс, я просил об этом руководство. Но мы тут причём? Это пособие для курсового проекта. Авторы к базовому курса отношения не имеют. Люди за два первых года не знакомятся c контролем версий (может и знакомятся, но к третьему -- ничего не помнят почему-то).

> Мне раздавать свою локальную копию?

Зачем? Пусть наступают на разные грабли.

sv75 ★★★★★ ()

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

> - системы контроля версий они тоже не знают, но рассказывать
> в этом курсе/курсовом про них нет желания;


Git - это не только и не столько система управления версиями. Это система управления кодом.

Даже если не пользоваться средствами хранения истории и работы с ней, при помощи git можно легко и непринуждённо выполнять операции, существенно облегчающие работу. Такие как быстрый (очень!) просмотр изменений и их откат.

> - допустим, мы хотим использовать сурсы дистрибутивного ядра или

> ядра, похаканного (заранее) преподавателем;

>

> - нормальный интернет есть не у всех (ага, есть жители

> ближнего подмосковья с оплатой за трафик).


Развернуть архив
cd linux-source
git init .
make mrproper
git add .
git commit -m "Import initial kernel sources"

Это конечно не сделает доступной всю историю ядра, но такие вещи как git diff станут доступными.
Я всегда так делаю, когда надо быстренько что-нибудь сделать с vendor kernel и нету времени или желания корректно интегрировать вендоровские изыски в основное дерево linux-2.6

> Патч создаётся один раз -- отдать преподавателю/подшить к сурсам

> курсового проекта.


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

Опять же, вы советуете использовать scripts/checkpatch.pl
Сколько раз бедным студентам придётся ожидать окончания выполнения команды diff, пока они исправят все сообщения этого замечательного скрипта? :)
А git diff работает секунды (а то и миллисекунды).
И он прямо создан для 'git diff | scripts/checkpatch.pl -' :)

yoush ()

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

<quote> Ядро состоит из следующих основных составляющих: планировщик процессов, мене
джер памяти, подсистема ввода
ввода и драйверы устройств, сетевая подсистема, вирту
альная файловая система, подcистема межпроцессного взаимодействия и других (рис. 1). </quote>

Надо:

Ядро состоит из различных компонентов. Основными являются подсистема управления процессами (планировщик процессов), подсистема управления памятью (менеджер памяти), подсистема ввода/вывода, подcистема межпроцессного взаимодействия, виртуальная файловая система, драйвера устройств и.т.д (рис. 1).

Рисунок соответсвенно подредактировать.

<quote> С точки зрения программной организации, ядро является монолитным. Часть кода
ядра обычно находится в подключаемых модулях, которые могут загружаться и выгру
жаться динамически, без перезагрузки системы.</quote>

Тут было бы лучше дать четкие определения "монолитному ядру", "загружаемым модулям" и.т.д.

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

В целом неплохо, но:

1) Обозначить четкую структуру представления информации. Системный подход при написании приветстуется (не для гуманитариев методичка, на 3ем курсе пора бы студентам привыкать к четкому и структурированному представлению информации). Поработать над определениями всех специфических терминов использующихся в методичке.

2) Раскрыть недостающие темы и дать пособию адекватное название (программировать я могу в комнате, в офисе, но никак не в ядре).

anonymous ()

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

> Это очень плохой стиль - прямо способствующий каше и в коде, и в голове. Патч надо видеть как можно чаще, чтобы держать в голове, а что именно делается, и поддерживать чистоту.

Ok. Переходим на git. Несмотря на обычно килобайтный патч.

> Опять же, вы советуете использовать scripts/checkpatch.pl Сколько раз бедным студентам придётся ожидать окончания выполнения команды diff, пока они исправят все сообщения этого замечательного скрипта? :)

Пускай диффят один файл. Впрочем, уже убедили.

sv75 ★★★★★ ()

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

> Тут было бы лучше дать четкие определения "монолитному ядру", "загружаемым модулям" и.т.д.

Вычеркнуты, чтобы спокойно отослать к Таненбауму, см. введение. Лучше уж точно рассказать про систему контролю.

sv75 ★★★★★ ()

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

>Ok, я буду считать, что "технический ВУЗ" -- это не нарицательное, а >МГТУ. Или, лучше, MIT. В общем, не нарицательное типа "поступить в >вуз" ;)
Не выдумывайте. Имя либо собственное, либо нарицательное. Третьего не дано.
ВУЗ — это название конкретного учебного заведения (напр. Волгоградский университет звероводства).

anonymous ()

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

Тогда по этому вопросу я проявлю волюнтаризм: ВУЗ и всё тут. Тем более, эти академические грамотеи уже убили язык в 1917-ом, с чего бы я должен им верить, так? >_<

Желающие получить о меня менее баранистую реакцию могут критиковать само пособи.

sv75 ★★★★★ ()

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

Про 1917 это Вы зря. Реформа затевалась чуть ли не с конца XIX в. И не надо путать язык с его орфографией. Язык можно убить, только убив всех его носителей. Реформы орфографии ему не страшны.

По логике нового свода правил вуз должен писа́ться прописью. Но... оставили традиционное написание. Dura lex, sed lex (в русском значении слова «dura»). :)

anonymous ()

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

Русский язык убивается сейчас тем количеством жаргонов и изменение значения слов, на пример, Параша женское имя от Прасковья). а в каком значении оно используется большинством?

AleX ★★★ ()

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

Постоянные изменения лексического состава языка — это естественный процесс. Ему подвержены все языки, в том числе и русский. Язык имеет те средства выражения, какие нужны его носителям. Если сейчас много жаргонизмов, значит они востребованы. Пропадёт в них нужда — выйдут из употребления.

anonymous ()

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

> Тогда по этому вопросу я проявлю волюнтаризм: ВУЗ и всё тут.

ВУЗ заглавными буквами -- буквосочетание без грамматических форм, как и и все остальные, записываемые заглавными буквами (ГЭС, НОТ, ООН и т.п.). Слово "вуз" маленькими буквами -- существительное 2 склонения, изменяемое обычным образом. Это дихотомия: либо запись заглавными буквами, либо изменяемость. Думаю, то Вы не сможете использовать его в таком ключе: "учусь в ВУЗ" и т.п. Так что лучше Вам волюнтаризм не проявлять и не коверкать язык.

Orlusha ★★★★ ()

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

Так себе, слабоватенько..

MiracleMan ★★★★★ ()

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

Резюме.

Не считая мелочей и правки стилистики, будут внесены следующие существенные изменения:
-- переход на git (с кратким описанием ~пяти его команд, но без ликбеза по SCM);
-- debian-way установки своего ядра (вероятно, будет параллельно с имеющимся текстом);
-- расширены существующие примеры и добавлен еще один простой пример.

Кстати, пособие уже вне лимита объёма печати, так что в печать пойдет обрезанный донельзя вариант (без рисунков и одного из примеров, как минимум). Но поскольку его читать никто не будет, то всё равно.

sv75 ★★★★★ ()

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

> debian-way не нужен,

Поздно. Уже убедили. Там всего пол-страницы, как добавление.

> ИМХО - его лучше заменить описанием запуска полученного ядра на qemu.

А что именно там писать? Если архитектуры одинаковые -- scp *.deb и dpkg -i, ну ещё про запуск qemu немного. Если разные -- то это другая тема, кросс-компиляцию именно в этом труде точно не будет рассматриватьcя.

sv75 ★★★★★ ()

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

> Тогда по этому вопросу я проявлю волюнтаризм: ВУЗ и всё тут.

Поддерживаю волюнтаризм. А если есть у вас вузовский корректор, можно переложить ответственность на него (99% что он из старой школы :-)

Насчет гит-а -- ИМХО это лишняя сущность, в пособии не нужная.

www_linux_org_ru ★★★★★ ()

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

> (без рисунков и одного из примеров, как минимум).

Рисунки не нужны (для сборки первого модуля). Пример жалко, но и без него можно прожить.

А еще можно шрифт уменьшить... и межстрочный интервал :-)

www_linux_org_ru ★★★★★ ()

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

> debian-way не нужен, ИМХО - его лучше заменить описанием запуска полученного ядра на qemu.

Моя позиция:

+ либо debian-way
+ либо qemu
- но ни в коем случае не объяснять, как (утрирую) испортить систему кривой установкой ядра

www_linux_org_ru ★★★★★ ()

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

>> ИМХО - его лучше заменить описанием запуска полученного ядра на qemu.

> А что именно там писать? Если архитектуры одинаковые -- scp *.deb и dpkg -i, ну ещё про запуск qemu немного

Ну да. Я же не говорю, что писать нужно много.

Впрочем, если хочется написать побольше, можно описать процедуру раскрутки Debian в chroot и создания из chroot образа для запуска в qemu :)

tailgunner ★★★★★ ()

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

> Насчет гит-а -- ИМХО это лишняя сущность, в пособии не нужная.

Поздно, я только что расписал все радости scm вообще и локального git в частности ошеломлённой публике.

> Рисунки не нужны (для сборки первого модуля). Пример жалко, но и без него можно прожить.

Печатный вариант *никто* читать не будет. Nevermind.

> А еще можно шрифт уменьшить... и межстрочный интервал :-)

Низя, стандарт.

sv75 ★★★★★ ()

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

>> Тогда по этому вопросу я проявлю волюнтаризм: ВУЗ и всё тут.

> Поддерживаю волюнтаризм. А если есть у вас вузовский корректор, можно переложить ответственность на него (99% что он из старой школы :-)

Да этого термина в пособии нет вообще. Нет там ни "вуза", ни "ВУЗ", ни "ВУЗа". Кто-то придрался к моему сообщению здесь, и понеслась. Это же lor.

sv75 ★★★★★ ()

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

> Впрочем, если хочется написать побольше,

Когда захочется -- я рассмотрю параллельно еще три ядра и подамся на гриф (хотя бы на УМО).

sv75 ★★★★★ ()

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

> То есть половина треда пошла на смарку?

*Только* половина треда. Это потрясающе высокий КПД. Заметьте, сейчас мы его *понижаем*.

sv75 ★★★★★ ()

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

>> Впрочем, если хочется написать побольше,

> Когда захочется -- я рассмотрю параллельно еще три ядра

Это будет уже _намного_ больше ;) А я говорю о скриптике на страничку, и паре абзацев текста.

tailgunner ★★★★★ ()

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

Во-первых если выкладывать пособие, то лучше одну законченную главу, а не всё[пособие] незаконченное, Во-вторых, если пишется для студентов, то где комментарии в коде?.. или это пособие не расчитано на практику? В общем сложилось впечатление, что автор пишет пособие для себя

anonymous ()

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

> Во-первых если выкладывать пособие, то лучше одну законченную главу, а не всё[пособие] незаконченное,

Незаконченность связана с переделками, высказанными здесь. Они предполагались изначально, поэтому выложить сюда что-либо *законченное* невозможно by definition.

> Во-вторых, если пишется для студентов, то где комментарии в коде?

Они режутся (скриптом) при добавлении кода в пособие. Причина -- архив с полным исходным кодом будет выложен отдельно, а печатный лист -- увы, не резиновый. Но я переделаю makefile, чтобы в электронный вариант он тащил сурсы с комментариями, а в печатный -- без, пожалуй это разумно.

> В общем сложилось впечатление, что автор пишет пособие для себя

Особенности восприятия реальности отдельными анонимусами обсуждать, к сожалению, возможности не имею.

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