LINUX.ORG.RU

Что нужно новичку для того, чтобы начать писать дрова?

 , ,


1

6

Здравствуйте! Решил начать познавать написание драйверов, помочь одному опен соурс проекту, ну и вообще программирование в kernel space. Гуглил и пришел к выводу, что мастхэв это книга Linux Device Driver, 3rd edition. Она вышла в 2005 году и описывает программирование для ядра 2.6. И у меня возник вопрос, стоит ли начинать вкладывать свои силы в понимание этой книги, актуальна ли там информация ? Может есть какие-то еще альтернативы, более современные, о которых мне следовало бы знать?

Дополнительный вопрос ) Я вооружился книгами в дополнение к ldd - Adison Wesley | Linux Kernel Development, 3rd Edition (Jun.2010) и Understanding the linux kernel, 3rd edition. Какие еще книги/онлайн ресурсы можете посоветовать ?

Буду благодарен любой помощи!

P.S. LDD, пока первые 70 страниц прочитал, отличная книга.

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

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

сорцы можно читать

...если это не какой-нибудь reiser4.

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

Да, но ведь я не могу прям сейчас начать следить за изменениями, мне нужно как-то въехать во всё это, начать с чего-то, так сказать ))

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

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

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

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

как правило, удел производителей

Точно. Есть риск сжечь железку.

Iron_Bug, вы прямо девушка мечты. Был в ноябре в Екатеринбурге, знал бы о вашем существовании, купил бы букет цветов/билеты на концерт. На ЛОРе уже были зарегистрированы под другим ником?

tlx ★★★★★ ()

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

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

надо в changelog смотреть. Я бы писал под самый имеющийся свежак, т.е. 3.15 ибо так в mainline протолкнуть проще.

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

Всё что касается конкретики реализации. Местами перепилили знатно. Общие идеи в основном остались теми же.

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

Ну это надо конкретные задачи решать, чтобы знать что именно пропускать.

Одной из такой конкретных задач для меня были таймеры ядра. В главе по таймерам в этой книге приведена старая система таймеров. Сейчас в ядре используются таймеры высокого разрешения. Это другая система.

Много всего. IOCTL в новых дровах не рекомендована, потому что там уже чисел для всех не хватает. Взамен кажется sysfs.

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

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

Точно. Есть риск сжечь железку.

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

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

вы прямо девушка мечты

я-то? да не, скорее, монстр: программист, басист, пауковод, фанат рептилий. ну и там электронщик и админ, по совместительству. такое счастье вряд ли кому-то нада. при том что я веду холостяцкий образ жизни, не запариваюсь насчёт особого порядка и уюта в доме, питаюсь довольно хаотично и мечтаю о домработнице. зато программировать или на басу играть могу ночами напролёт и дома у меня полно всякого хлама в виде старых компов, плат, клубков проводов и около десятка разных музинструментов. в общем, весьма сомнительная «мечта» :)

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

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

блин, только недавно врубился в эти таймеры) в старые получается) Так, а если я хочу создать - «блочный виртуальный девайс с надежным хранением данных в облаке.Данные будут предварительно шифроваться и сжиматься на клиенте.Сервер реализуется ядерным модулем используя кернельные сокеты.» (c)

При таком раскладе, не знаете случайно, что надо пропустить?))) Хотя бы намекнуть)

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

хлама в виде старых компов, плат, клубков проводов и около десятка

Помню однажды однокурсница пришла с перевязанным пальцем. На вопрос «Что случилось», ответила, «Порезалась, когда собирала комп». Это была самая прекрасная фраза, которую я слышал от девушки (ну еще однажды кто-то на работе спросил почему у меня установлена Mandriva а не Ubuntu) Не смотря на то, что специальность была «Программное обеспечение ВТ и АС», эта девушка единственная из группы способная что-то собрать.

я на ЛОР случайно забрела,

Будьте осторожны троллинг здесь весьма изощренный, особенно когда речь идет о девушках. Не ведитесь на оскорбления.

Удачи вам. Не буду больше надоедать.

tlx ★★★★★ ()
Последнее исправление: tlx (всего исправлений: 1)
Ответ на: комментарий от chocobo

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

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

Чувак, я не знаю, но может тебе просто drbd доработать?

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

Это идея одного человека с ЛОРа, я заинтересовался и решил ему помочь. Собственно поэтому я и начал изучать драйверописание. Чесно говоря, тоже не понимаю зачем так )

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

Будьте осторожны троллинг здесь весьма изощренный, особенно когда речь идет о девушках. Не ведитесь на оскорбления.

не боись! я ж столько лет проработала в коллективе мужиков-разработчиков. а уж там никогда за словом в карман не лезли, особенных реверансов не было: если заслужишь - уж пошлют так пошлют. всё было жёстко и сурово, без соплей. и это не говоря о том, что у меня за плечами ещё и более 10 лет брутал дэта, а там тоже отнюдь не нежные и чуйствительные дамы, в основном. да и я не из пугливых: к лести не привыкла, критику по делу уважаю, в спорах стараюсь быть объективной, по возможности. матом стараюсь не ругаться, войну по любому поводу не объявляю и морду никому без достаточных оснований не бью. я ваще очень добрый и позитивный человек :)

Iron_Bug ★★★★★ ()

Без описания конкретной микросхемы написать драйвер для неё не получится. Свяжитесь непосредственно с производителем, у него вполне может быть не только описание или applications notes для этой микросхемы, но и какой-нибудь reference design kit, в составе которого уже может быть готовый драйвер.

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

ПМСМ, там неграмотно сформулирована сама идея. Соответственно, путь решения намечен нерациональный. У самого руки чешутся до практики с ядром, но такой проект я не стал рассматривать.

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

Спасибо конечно за ссылку, но к чему она? «Это» надо пропустить мне ?)))

Включить мозг пробовал?

Он[модуль] позволяет пользователям без привилегий создавать их собственные файловые системы без необходимости переписывать код ядра.

Пример применения FUSE: https://en.wikipedia.org/wiki/SSHFS

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

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

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

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

Iron_Bug ★★★★★ ()

Есть такой чувак Олег Цилюрик, пишет книгу как раз про ядро линукс, причем весьма занятно и по-русски (можно бесплатно скачать). Кстати он же автор книжки «QNX/UNIX Анатомия параллелизма». Он же пишет статейки про ядро на IBM-чего-то там сайте.

yax123 ★★★★ ()

Что нужно новичку для того, чтобы начать писать дрова?

То, из чего будешь описывать.

Решил начать познавать написание драйверов

А оно тебе надо? Обычно это нужно лишь разработчикам всякого PCI'ного и т.п. железа (когда только модуль ведра — в юзерспейсе нельзя), либо реверсерам (которые пытаются заставить очередную говножелезку в линуксе работать).

Eddy_Em ☆☆☆☆☆ ()

Поддержу мнение - читать само ядро. Любые книги со временем устаревают (вспоминаем «stable API nonsence»), но они годятся только для понимания общего направления. Детали только в исходниках.

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

блочный виртуальный девайс с надежным хранением данных в облаке

encfs поверх webdav.

/thread

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

Короче решил поставить в свою генту последнее ядро. И теперь вопрос, как думаете, лучше уже mainline поставить или 3.15 сойдет (на первое время хотяб) ?

chocobo ()

Вспомнил восьмидесятые... ассемблеры, СМ ЭВМ, пересборка системы при подключении нового устройства... эх, ностальгия:)

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

Я этому человеку в той теме написал про nbd.

Собственно серверную часть в ядро тащить смысла нет.

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