Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. Linux-инструменты для Windows-программистов
Назад Консольные команды Вперед

Устройства

Все имена в каталоге /dev соответствуют устройствам системы. Каждое устройство (кроме имени в /dev) однозначно характеризуется двумя номерами: старший, major — родовой номер класса устройств, младший, minor — индивидуальный номер устройства внутри класса. Номера не произвольные. Все известные номера устройств описаны в документе devices.txt (лежит в дереве исходных кодов ядра 2):

$ cd /usr/src/linux/Documentation

$ ls -l devices.txt
-rw-rw-r-- 1 olej olej 118626 Мар  8 01:05 devices.txt

$ cat devices.txt
                    LINUX ALLOCATED DEVICES (2.6+ version)
             Maintained by Alan Cox <device@lanana.org>
                      Last revised: 6th April 2009
...

Все устройства делятся на символьные и блочные (устройства прямого доступа, диски). Они различаются по первой литере в выводе содержимого каталога /dev:

$ ls -l /dev | grep ^c 
crw-------  1 root video      10, 175 Июл 31 10:42 agpgart 
crw-rw----  1 root root       10,  57 Июл 31 10:43 autofs 
crw-------  1 root root        5,   1 Июл 31 10:42 console 
...

$ ls -l /dev | grep ^b 
...
brw-rw----  1 root disk        8,   0 Июл 31 10:42 sda 
brw-rw----  1 root disk        8,   1 Июл 31 10:42 sda1 
brw-rw----  1 root disk        8,   2 Июл 31 10:42 sda2 
brw-rw----  1 root disk        8,   3 Июл 31 10:42 sda3 
...

Старшие (major) номера символьных и блочных номеров могут совпадать: они принадлежат к разным пространствам номеров. Но вот внутри класса полной идентичности двух номеров (major+minor) не может быть.

Создание нового имени устройства в каталоге /dev:

# mknod -m 0777 /dev/hello c 200 0

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

$ pwd
/home/olej

$ sudo mknod -m 0777 ./hello c 200 0

$ echo $?
0

$ ls -l hello
crwxrwxrwx 1 root root 200, 0 Мар 19 16:27 hello

$ sudo rm ./hello

$ echo $?
0

Самые разнообразные устрйства представляются в /dev. Часто задаваемый вопрос: как представлены, например, последовательные линии связи RS-232 (RS-485)? Вот они:

$ ls -l /dev/ttyS*
crw-rw---- 1 root uucp 4, 64 Апр 27 06:19 /dev/ttyS0
crw-rw---- 1 root uucp 4, 65 Апр 27 06:19 /dev/ttyS1
crw-rw---- 1 root uucp 4, 66 Апр 27 06:19 /dev/ttyS2
crw-rw---- 1 root uucp 4, 67 Апр 27 06:19 /dev/ttyS3

Причём, представлены как терминальные линии все 4 (максимально возможные) каналы RS-232, но откликаться на команды (например, конфигурироваться командой stty) будут только линии, реально представленные в аппаратуре компьютера (часто /dev/ttyS0 и /dev/ttyS1COM1 и COM2 в терминологии MS-DOS).


2. Когда говорят о исходных кодах Linux, нужно иметь в виду, что они не присутствуют в системе изначально, и не загружаются из репозитариев вашего дистрибутива менеджером пакетов — их нужно загрузить самостоятельно с адреса http://www.kernel.org/. Вы должны выбрать оттуда архив вашей версии ядра (архив вида linux-2.6.37.3.tar.bz2), разархивировать его в каталог /usr/src (это потребует около 500Mb) и, обычно, на полученный каталог устанавливают ссылку /usr/src/linux — это и есть дерево исходных кодов Lnux, наслаждайтесь...


Предыдущий раздел: Оглавление Следующий раздел:
Архивы   Подсистема udev