Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Железо в Linux (http://forum.oszone.net/forumdisplay.php?f=29)
-   -   Несколько ламерских вопросов (http://forum.oszone.net/showthread.php?t=73135)

xy 18-10-2006 19:26 499718

Несколько ламерских вопросов
 
1) Пусть меня установлен пакет с известнам названием. Где мне искать помощь к нему?
2) Как в линуксе устанавливаются драйвера? Какой формат они имеют? Где их взять?
3) Где можно найти FAQ для СОВСЕМ ламеров, вроде меня (линукс 3 дня назад поставил)

fossil 19-10-2006 07:14 499875

Цитата:

1) Пусть меня установлен пакет с известнам названием. Где мне искать помощь к нему?
www.google.com
Цитата:

2) Как в линуксе устанавливаются драйвера? Какой формат они имеют? Где их взять?
В линуксе драйверов нет. Есть так называемые модули которые подгружаются к ядру.
Цитата:

3) Где можно найти FAQ для СОВСЕМ ламеров, вроде меня (линукс 3 дня назад поставил)
www.google.com

must die 19-10-2006 07:49 499882

1. man "имя пакета"

ruslandh 19-10-2006 07:50 499883

1 Пр справке :
man ИМЯ_ПРОГРАММЫ
info ИМЯ_ПРОГРАММЫ
/usr/share/doc/имя_пакета
для некоторых больших или важных пакетов надо ещё установить пакет ИМЯ_ПАКЕТА.doc
2 Как таковых (в Windous понимании) , драйверов в Linux нет, a есть :
Стандартные драйвера :
- модули ядра, для поддержки аппаратуры (входят в ядро) (расширение .o или .ko)
http://kernel.org
- модули графического сервера (например, модули Xorg) (динамические библиотеки -.so)
http://x.org
- модули поддержки системы печати для конкретного принтера (в зависимости от того, какая система печати установлена - наиболеее часто установленная - cups) (расширение .ppd)
- модули поддрежки сканеров для системы поддержки сканеров (sane) (*.usb и *.fv)
http://www.meier-geinitz.de/sane/index_ru.html
Впрочем всё это уже есть в нормальном дистрибутиве Linux

Проприетарные драйвера для отдельных модемов, принтеров и видеокарт - ищутся на сайте производителя,
например :

http://www.nvidia.ru/object/linux_ru.html
https://support.ati.com/ics/support/...ge&folderID=27


FAQ

hasherfrog 20-10-2006 18:46 500677

ruslandh
>> .o .ko .so
А может ли быть файл драйвера вообще без расширения? Я почему спрашиваю. Вот всякое "о" по сути - ELF'овский файл. ЕНМИП, в виндах, в COFF-файлах, есть разница между файлами-драйверами и файлам-екзешниками (вообще-то не кажется, а точно есть), в словах заголовка и т.п. А в ELF? Ведь загрузчик ОС определяет тип файла не по расширению, а по словам заголовка. Тогда
1. если разница в заголовке ELF (драйвер-недрайвер) есть, загрузчик должен игнорировать расширение файла.
2. если разницы в заголовке ELF (драйвер-недрайвер) нет, загрузчик должен уметь загрузить что угодно, как драйвер - значит, загрузчик должен игнорировать расширение файла.
Тогда получается, что расширение может быть вообще любое.
Я понимаю, что расширения .ko приделывается скорее для красоты, нежели в обязательном порядке. Но всё-так, можно ли обозвать файл драйвера как угодно, или есть какие-то ограничения (например, modprobe не будет работать, или ещё что-то страшное произойдёт)?

P.S. Под словом "загрузчик ОС" подразумевалась та часть ОС, которая отвечает за запуск программ: считку файла в память, загрузку и проверку библиотек модуля, выделение памяти, создание контекста процесса и прочих всяких таких премудростей. А не кто-то типа grub.

xoomer 20-10-2006 23:11 500788

hasherfrog
Да ты вроде сам сказал в чем ограничения. Я так понял, главное чтобы начинка была соответствуущая. Ведь также можна привести пример в Win среде. Да и в юникс тоже. Измени расширение bmp файла на png, например. Открой во вьювере. Открывается само-собой. А если бы например txt переименивать в png, то оно не открылось бы. Мне кажется что в этом примере и в твоём причины одинаковые. Мне кажется расширение не имеет значение. Но я могу ошибаться, ведь в Линуксе я только начинающий. ИМХО.

hasherfrog 20-10-2006 23:25 500795

>> А если бы например txt переименивать в png, то оно не открылось бы.
А почему? Потому что расширение txt не проассоциировано с вьювером или потому что вьювер не смог открыть файл из-за неизвестного формата? Тут запутанный вопрос (точнее, мы его ещё больше запутываем сейчас своими примерами :]).

Вот если с файла драйвера убрать "executable" через chmod -x , он будет грузится? Предполагаю, что не будет.

Тут вопрос про то получается, на каком уровне (в каком месте) идёт определение того, что это файл "выполняемый" и что это "файл драйвера". Ведь если, например, ELF-заголовки драйверов (kernel?-библиотек?) и обычных динамических библиотек (so) не отличаются внутренним форматом, то можно ли драйверы (эти файлы) использовать в обычных программах для линковки? Или нет?

mar 21-10-2006 00:00 500807

hasherfrog
xoomer
Цитата:

Тут запутанный вопрос
вопрос как раз не запутанный, а очень даже понятный (хотя детали про драйвера для linux пусть лучше объяснит ruslandh :))
windows работает с файлом, исходя их его расширения, причем использует данные, хранящиеся в реестре (можете добавить туда ассоциации с расширениями, или убрать и проверить :))
unix и unix-оподобные системы для идентификации типов файлов используют сигнатуры - признаки типов файлов (обычно занимающие первые байты фалойв). Так работает программа file и остальное (часто, кстати через нее). Опять-таки, имеется база данных сигнатур - очень полезная для того же программирования.
Чтобы сделать файл исполняемым в *nix надо выставить признак исполнения. Но ничто не мешает снять этот признак и запустить, скажем perl-овый скрипт так :
Код:

perl наш_скрипт
По поводу elf-библиотек файлов. Опять-таки, unix-подобная среда смотрит на то, что там внутри. Очень хорошо это видно при запуске linux-бинарников под FreeBSD - иногда (когда все признаки на лицо) они распознаются, как linux-ячьи и запускаются (если это разрешено в установках FreeBSD-ой среды), а иногда - нет и тогда надо объяснять системе, что мы имеем дело с linux-ым эльфом :) при помощи команды brandelf.

Это по части запутывания, - не знаю, удалось ли распутать, или запутать еще больше :)

А вот формат драйвера linux - это вопрос отдельный. Тут я боюсь наврать при теоретизировании, благо проверить сейчас не на чем :)



xoomer 21-10-2006 02:17 500844

mar
Цитата:

скажем perl-овый скрипт так :
Тоисть ты имеешь ввиду запускать коммандой не perl script.pl , а запустить, например, perl script.vasya_petya . Сорри за каламбур, я имею ввиду, что тут-же расширение не имеет значения?

mar 21-10-2006 02:23 500849

xoomer
Цитата:

расширение не имеет значения
да, совершенно верно. Расширение в unix не имеет никакого значения, да и строго говоря не являются расширенями (в DOS-овском понимании).
скрипт perl script.vasya_petya запустится.
Запустится и просто script.vasya_petya , если он будет исполняемым (атрибут x от exequite - исполнять, 755 например) и если (это же скрипт) в нем будет правильный шебанг (например #!/usr/bin/perl).
Расширения в unix используются скорей для собственного удобства, а не для системы. В отличие от windows, понимающей тип файла только по расширению.

ruslandh 21-10-2006 02:43 500863

Цитата:

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

Вот всякое "о" по сути - ELF'овский файл
не обязательно, просто могут совпадать расширения.

В данном случае :
Модуль ядра :

file bpa10x.ko
bpa10x.ko: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped

file gscd.ko
gscd.ko: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped

Исполняемый файл :
file arch
arch: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), stripped

Динамическая библиотека :

file libdes425.so.3.0
libdes425.so.3.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped


xoomer


Файл с таким заголовком ядро само запустит через перл, даже если в нём нет никакого расширения

#!/usr/bin/perl5

ruslandh 21-10-2006 03:01 500872

Т.е. файл с таким заголовком можно запустить командой
>petya


[hasherfrog]
Цитата:

Тут вопрос про то получается, на каком уровне (в каком месте) идёт определение того, что это файл "выполняемый" и что это "файл драйвера". Ведь если, например, ELF-заголовки драйверов (kernel?-библиотек?) и обычных динамических библиотек (so) не отличаются внутренним форматом, то можно ли драйверы (эти файлы) использовать в обычных программах для линковки? Или нет?
Файл выполняемый или нет хранит файловая система (один из атрибутов файла).
Модуль ядра не имеет атрибута "выполняемый"
Формат как вы видите чуть-чуть отличается.
Для линковки - а почуму бы и не попробовать ? Только не будет работать, т.к. в модулях ядра используется "API" ядра, а не функции glibc (модули предназначены для работы в области ядра, а не пользовательской области), другое дело, если вы пишите свой модуль ядра.

Цитата:

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

mar 21-10-2006 21:07 501112

ruslandh
Цитата:

для некоторых программ типа файловых менеджеров имеют, например - браузеры, мс и т.п
ну, я вам не скажу за всю Одессу :) но konqueror (который и то, и другое) плюет на расширение и совершенно правильно показывает файл с именем bar1_php, как рисунок и при показе иконок в файловом мененджере и по "открыть" , а вот (неиспользуемый, правда мной) Xfce fast file manager xffm действительно ориентируется на расширение, - забавно. Так что, прав ты - от программы зависит, но в целом ничто не мешает создателям программы ориентироваться на unix-way, благо и средства (тот же file) для этого имеются.

hasherfrog 22-10-2006 00:27 501164

>> тот же file

Да, меня всегда удивлял этот способ, и я всегда про него забываю. :] dos-windows, трудное детство.
Всё, мой вопрос снят, как решённый (что расширение файлу драйвера всё-таки нужно).

hasherfrog 22-10-2006 00:39 501169

И всё-таки нет.
Надежда умирает последней.

Всё дело в том, что я хотел задачку одну решить однообразно под виндами и в *nix (мне ещё солярка требуется, не только разные linux'ы). Смысл такой - программа-сервер (в виде 1 файла )запускается либо как служба, либо как драйвер, либо как просто программа. И вроде в Windows это у меня вышло (во всяком случае, ы теории - точно решено, даже кое-что реализовнао и в коде). А вот в *nix, видимо, так вообще не получится, да? Просто драйвер этот мне нужен для повышения... как бы это... для затруднения реверс-инжениринга.

ruslandh 22-10-2006 01:20 501179

Цитата:

драйвер этот мне нужен для повышения... как бы это... для затруднения реверс-инжениринга
а смысл под Linux - если код открытый ?
Если закрытый, то не нарушаю лицензию GNU, надо внимательно подбирать средства разработки (что можно использовать из открытого кода, что нет).

hasherfrog 22-10-2006 21:43 501361

>> а смысл под Linux - если код открытый ?
Код не открытый, с какой стати? Сервер лицензирования ПО.


ruslandh 23-10-2006 09:16 501456

А что в его коде может быть закрытого ?

hasherfrog 23-10-2006 10:26 501487

ruslandh
Алгоритмы формирования (расшифровки) ключа, например.

kim-aa 23-10-2006 10:27 501488

Цитата:

мне ещё солярка требуется, не только разные linux'ы
Что именно требуется от Solaris?
Версия? Платформа?

hasherfrog 23-10-2006 10:46 501504

На например 5.8 sparc. Мне ничего не требуется :] Вопрос такой: можно ли так организовать файл (через ELF-хидер али ещё как), чтобы его можно было грузить как драйвер и в тоже время запускать как обычное приложение в *nix. Я думаю, ушёл далеко за рамки темы...

kim-aa 23-10-2006 10:59 501511

hasherfrog
А аллах-его-знает. Пробовать то мы (у себя в конторе) можем что угодно, только вот системных программеров у меня в штате нет :sorry:
Опять же, гм. 5.8 - уже малехо устарела ,особенно по сравнению с 10й.

ruslandh 23-10-2006 11:42 501529

hasherfrog
Я уже вроде ответил, что нельзя :)

hasherfrog 23-10-2006 12:02 501541

ruslandh
Надежда умирает последней...
Увы мне :-)

mar 23-10-2006 15:05 501633

hasherfrog
кстати, вполне можно использовать opensolaris для i386 (если sparc-ов нет)


Время: 23:15.

Время: 23:15.
© OSzone.net 2001-