![]() |
|
Модераторы: xvr |
![]()
|
|
| kdaemonv |
|
|||
|
Unregistered |
Помогите начинающему! Дайте линки на доступную литературу по работе с жесткими дисками в Линухе. Язык лучше всего наверно будет С++.
Требуется описание и примеры кода о том как: 1) вывести список доступных дисков 2) узнать ихние свойства - производитель, размер (в секторах), режимы доступа 3) осуществить поиск строки или HEX значений на всем диске или посекторно (с определенным смещением) 4) записать данные в определенное место на диске |
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 21.10.2005 Репутация: нет Всего: нет |
Или может я не туда рою?
Может работа с жестким диском сводится к работе с файлом блочного устройства? Тогда может ктото подскажет самый быстрый способ поиска строки или одного HEX значения с определенным смещением в блоке размером 512 байт!!! |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
здавствуй начинающий кдемон В.
1) для того чтобы узнать какие блоковые устройства (жесткие диски, флешки и т.д.) есть в системе из пользовательского режима, ты можешь почитать документаьцию на тему /proc. там обычно посредством анализа файла /proc/partitions можно все выковырнуть. 2) чтобы узнать эту информацию нужно поискать код программы hdparm, и изучить как он это делает, вполне возможно он анализирует /proc 3) и 4) вопросы не имеют решения в режиме пользователя: в линухе, как и в юниксе, существует абстракция. все для нас - файлы. если хочешь обойти файловую систему, виртуальную память, бaффер-кеш и все остальные удобства жизни, тебе нужно в режим ядра. для ознакомления как именно это все работает, стоит порыться в коде линукса ( ядра ), там есть различные драйвера. тебя интересуют различные IDE и SCSI драйвера ... каждый работает по разному... ну хва воду лить, иди читай код. в принципе, все эти операции ( из-за конвенций - как и все ядро ) написаны не на Си++, а на Си, но не ANSI, а на каком-то диалекте... между Object C и просто Си. возможно что часть драйвера IDE диска написана на Ассембли. конкретный код я тебе искать, как видишь не стал пока. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Еще можно покопать в сторону ioctl. Подробности смотреть в ioctl(2), ioctl_list(2), /usr/include/ioctl/*, /usr/include/linux/hdreg.h и ежик с ними
Это сообщение отредактировал(а) Mayk - 23.10.2005, 08:42 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| libricon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.10.2005 Где: estonia, tallinn Репутация: нет Всего: нет |
а просто читать файл устройства нельзя ?
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Обычно - нет. Чтобы можно было можно
1) открыть доступ к диску (chmod 664 /dev/hda) со всеми вытекающими последствиями 2) запихнуть юзера в группу, котороя может читать и писать диск(создать такую, если такой еще нет) . 3) заSUID'ить екзежник проги. 4) и так далее и в том же духе Это сообщение отредактировал(а) Mayk - 23.10.2005, 18:02 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
Майк, hdparm, работает именно так как ты сказал... я не знаю как именно он обходит буффер-кеш, но работает он чисто через hdreg.h + ioctl()'s ... видимо ioctl()-у можно передать параметры для более низкого уровня драйвера... фиг его знает..
-------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 21.10.2005 Репутация: нет Всего: нет |
Спасибо большое за информацию, но самый важный вопрос остался без ответа - линки на литературу, где я могку почитать обо всем этом???
Вы написали или очень простую информацию - Mayk, я про твой пост об открытии доступа к блочному устройству. Или же что-то для меня непонятное - hdreg.h + ioctl()'s!!! Идея с чтением исходников ядра звучит заманчиво (хотелось бы стать кернел-хакером), но это темный лес - а мне нужна всего лишь светлая опушка. Добавлено @ 01:46 Между прочим, может кто подскажет - в чем прикол, что KHexEditor не читает этих файлов блочных устройств. Права у меня есть, но при открытии они оказываются нулевой длины. Я точно не помню, были они у меня смонтированы или нет - может это мне помешало??? |
|||
|
||||
| Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Зато hexedit читает. Более того - даже пишет.
Блин. В частности через ioctl можно узнать их
посмотри struct hd_driveid, struct hd_geometry. Найдешь много полезного. И много бесполезного даже. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
kdeamonv, вопрос не понятен - чтО именно тебе не понятно:
1) как работать с <hdreg.h> + ioctl()'s ? 2) что это такое ioctl() ? 3) где находятся 1) ? насчет литературы: Ядро линукса продокументировано самим ядром линукса. т.е. точная документация относительно данного релиза ядра растет в самом ядре, в папке Documentation насчет общих базовых понятий как ioctl() и т.д., это уже к книгам по Юникс обращайся - Морис Бах или Кирк Маккузик или какие-то новые книги. Просто Линукс это суперсет старого доброго Юникса, и обычно не является 1-м материалом по оперативным системам. Обычно есть вводный курс на XINU, MINIX, или еще чем, а потом когда освоил общую структуру, рассказывают о том, что все можно сделать элегантнее, навороченнее и эффективнее - как в Линукс или BSD. А если вопрос о строении диска, то это можно в любом мануале программера от любого диска прочитать - на сайте производителя самого диска. Пока. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |