Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Написание драйвера блочного устройства


Автор: chetr 14.10.2006, 11:36
Изучаю Linux Device Drivers. Пишу драйвер флеш диска , расположенного на PCI плате. Нужно сделать так, чтобы его можно было разбивать на разделы, располагать на нём файловую систему и т.д. Как это реализовать? Нужно ли представлять устройство как devfs? И вообще где можно почитать про devfs и devfs_fs_kernel.h?

Автор: MAKCim 14.10.2006, 11:42
А что, в книге не написано?
Хорошая книга Р. Лав "Разработка ядра Linux", но там - общие принципы и архитектура (зато есть целая глава с описанием принципов блочного ввода/вывода)

Автор: GrayCardinal 16.10.2006, 05:09
chetr
Угу, нашло значитца вдохновение, и вы стали писать драйвер флэш диска, чисто от нефиг делать, да ? Ну-ну.

ЗЫ
При регистрации девайса там указывается соклько разделов будет и их размеры, это я точно помню, для 2.6.x Про devfs читать не стоит, ибо устаревший мусор. Лучше читать про udev.

Автор: MAKCim 16.10.2006, 16:47
Цитата

Угу, нашло значитца вдохновение, и вы стали писать драйвер флэш диска, чисто от нефиг делать, да ? Ну-ну.

Ну а что, для повышения квалификации не вредно, вещь полезная (в смысле разработка драйвера)

Автор: chetr 16.10.2006, 21:26
smile Да это не вдохновение, УИР делаю. Видимо надо из флеш диска реализовать жёсткий диск, а вот какие именно методы в нём реализовать пока проблема. Реализовал пока open, release, read,write, ioctl-не полностью. А кто знает как в логе команды strace отследить, что она обращается к моему драйверу? или может ссылку подкинете? 

Автор: MAKCim 16.10.2006, 22:19
Цитата

А кто знает как в логе команды strace отследить, что она обращается к моему драйверу?

ну я так полагаю у тебя есть блочный спец. файл для устройства. ну дык в strace должно быть что-то типа
open("/dev/<твое устройство>", <flags>, <mode>);
это и есть обращение к твоему драйверу

Автор: GrayCardinal 17.10.2006, 07:10
Цитата

 Да это не вдохновение, УИР делаю

Ну и об чем дальше разговор ?! Хочешь потом всю жизнь бумбук курить и бабло зашибать ? Так и учись, млин. 
Тьфу, черт............  smile 

Опять у меня депрессняк.  smile 

Автор: chaos 17.10.2006, 10:35
а есть у кого книга  Лав Р. Разработка ядра Linux в электронном виде или может кто знает где скачать?

Заранне благодарне

Автор: MAKCim 17.10.2006, 17:11
Цитата

а есть у кого книга  Лав Р. Разработка ядра Linux в электронном виде или может кто знает где скачать?

Что-то мне кажется что нет
Попробуй google
Вообще книга стоющая, однако в русском варианте уж очень много очепяток и ошибок  smile 

Автор: bel_nikita 17.10.2006, 17:50
chetr,
копай в сторону RFD (Resident Flash Disk).

Автор: MAKCim 18.10.2006, 22:13
chaos
нашел книгу на английском
http://www.iakovlev.org/index.html?p=1021&m=1&l1=5

Автор: chetr 26.12.2006, 19:51
Разобрался, написал...теперь нужно сделать так, чтобы можно было её разбивать на разделы простым fdisk'ом. Реализовал, как сделано в hd.c. Но вот проблема...когда я вызываю mkfs /dev/myflash, то затирается MBR. Отсюда вопрос где связь между mkfs и номером minor? Как VFS понимает куда писать boot сектор? Почему я так решил, потому что если принудительно ставить условие 
if (minor == 1) offset+=512; то mkfs не затирает MBR.

Автор: bsa 26.12.2006, 21:27
/dev/sda != /dev/sda1 smile
ты же не пытаешься создавать файловую систему на /dev/sda, а делаешь ее на /dev/sda1, который является первым разделом /dev/sda smile Так же и с флешкой.

Автор: chetr 26.12.2006, 22:14
Извините опечаточка получилась,   smile конечно же mkfs /dev/myflash1. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)