Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с жесткими дисками, свойства, редактирование, поиск 
:(
    Опции темы
kdaemonv
Дата 21.10.2005, 21:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите начинающему! Дайте линки на доступную литературу по работе с жесткими дисками в Линухе. Язык лучше всего наверно будет С++.

Требуется описание и примеры кода о том как:
1) вывести список доступных дисков
2) узнать ихние свойства - производитель, размер (в секторах), режимы доступа
3) осуществить поиск строки или HEX значений на всем диске или посекторно (с определенным смещением)
4) записать данные в определенное место на диске
  Вверх
kdaemonv
Дата 21.10.2005, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Или может я не туда рою?
Может работа с жестким диском сводится к работе с файлом блочного устройства?

Тогда может ктото подскажет самый быстрый способ поиска строки или одного HEX значения с определенным смещением в блоке размером 512 байт!!!
PM MAIL   Вверх
bilbobagginz
Дата 23.10.2005, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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 диска написана на Ассембли.

конкретный код я тебе искать, как видишь не стал smile
пока.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Mayk
Дата 23.10.2005, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 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


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
libricon
Дата 23.10.2005, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.10.2005
Где: estonia, tallinn

Репутация: нет
Всего: нет



а просто читать файл устройства нельзя ?
PM MAIL ICQ Skype MSN   Вверх
Mayk
Дата 23.10.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 5
Всего: 134



Обычно - нет. Чтобы можно было можно
1) открыть доступ к диску (chmod 664 /dev/hda) со всеми вытекающими последствиями
2) запихнуть юзера в группу, котороя может читать и писать диск(создать такую, если такой еще нет) .
3) заSUID'ить екзежник проги.
4) и так далее и в том же духе

Это сообщение отредактировал(а) Mayk - 23.10.2005, 18:02


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 23.10.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 4
Всего: 317



Майк, hdparm, работает именно так как ты сказал... я не знаю как именно он обходит буффер-кеш, но работает он чисто через hdreg.h + ioctl()'s ... видимо ioctl()-у можно передать параметры для более низкого уровня драйвера... фиг его знает..



smile




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
kdaemonv
Дата 28.10.2005, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



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

Вы написали или очень простую информацию - Mayk, я про твой пост об открытии доступа к блочному устройству. Или же что-то для меня непонятное - hdreg.h + ioctl()'s!!!
Идея с чтением исходников ядра звучит заманчиво (хотелось бы стать кернел-хакером), но это темный лес - а мне нужна всего лишь светлая опушка.
Добавлено @ 01:46
Между прочим, может кто подскажет - в чем прикол, что KHexEditor не читает этих файлов блочных устройств.
Права у меня есть, но при открытии они оказываются нулевой длины. Я точно не помню, были они у меня смонтированы или нет - может это мне помешало???
PM MAIL   Вверх
Mayk
Дата 28.10.2005, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 5
Всего: 134



Цитата(kdaemonv @ 28.10.2005, 05:42)

Между прочим, может кто подскажет - в чем прикол, что KHexEditor не читает этих файлов блочных устройств.

Зато hexedit читает. Более того - даже пишет.

Цитата(kdaemonv @ 28.10.2005, 05:42)
Вы написали или очень простую информацию - Mayk, я про твой пост об открытии доступа к блочному устройству. Или же что-то для меня непонятное - hdreg.h + ioctl()'s!!!

Блин. В частности через ioctl можно узнать их
Цитата(kdaemonv @ 22.10.2005, 01:49)
свойства - производитель, размер (в секторах), режимы доступа

посмотри struct hd_driveid, struct hd_geometry. Найдешь много полезного. И много бесполезного даже.



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 28.10.2005, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.

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

Пока.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.