LINUX.ORG.RU

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

 , , ,


0

0

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

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

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

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

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

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

www_linux_org_ru ★★★★★
()

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

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

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

>

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

>

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

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

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


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

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

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

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

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

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


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

anonymous
()

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

anonymous
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

O_O

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

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

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

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

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

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

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

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

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

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

> O_O

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

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

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

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

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

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

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

Именно так.

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

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

>> O_O

> Ага, лень

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

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

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

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

Да.

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

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

А что еще.

Кажется надо было багзилллу сделать...

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

>> Ага, лень

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

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

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

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

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

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


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
()

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

Надо:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пожалуйста, подробнее. Можно пример *сильного* и краткого ликбеза привезти.

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

Резюме.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Моя позиция:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tailgunner ★★★★★
()

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

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

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

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

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

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

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

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

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