Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #46, СЕНТЯБРЬ 2004 г.

Тюнинг в стиле X. Часть 2

Alexander S. Salieff

Спецвыпуск Xakep, номер #046, стр. 046-018-1


(salieff@mail.ru)

Автомонтирование, звук и framebuffer на Linux-десктопе

Если первая часть была посвящена исключительно X-серверу, то во второй мы рассмотрим вещи, имеющие к нему мало отношения, в том числе и призванные создать ему альтернативу.

Ты замучился писать mount и umount при вставке/вынимании диска из привода? Ядро из твоего дистрибутива не видит звуковую карточку или видит, но звуковуха молчит как партизан? Мы попробуем разобраться с этими проблемами. Также ты узнаешь, с помощью каких технологий из Pentium I-233 с 64 Мб памяти и 8-метровой 3DFX Voodoo2 делают графические Linux-десктопы.

Автоматическое монтирование

Ручное монтирование-демонтирование CD на линуксовом десктопе зачастую сильно утомляет. Понятно, что в случае многоаккаунтного сетевого сервера залочка диска, как общего ресурса, вполне оправдана, но на нашем десктопе, где ты всегда сидишь один и локально держишь все под контролем, это никому не нужно.

Но Linux - это ось-конструктор, и ее всегда можно модифицировать под конкретные задачи и требования. Нам потребуется система, которая автоматически монтировала бы требуемый ресурс при обращении и демонтировала при неиспользовании. Такая система в классическом варианте реализуется с помощью пары autofs+automount. Autofs является в этой схеме сервером для копий automount и смотрит в ядро; стабильно поддерживается ядрами начиная с 2.2.х. Automount - это клиент, имеющий много копий, каждая из которых следит за своей точкой монтирования и в случае необходимости дает серверу команду монтировать-демонтировать ресурс.

Вся эта схема управляется с помощью карты монтирования, как правило, реализованной в виде двух файлов. Первый (обычно это /etc/auto.master) задает общую директорию для автомонтируемых ресурсов и период неиспользования, после которого простаивающий ресурс будет автодемонтирован. К примеру, это выглядит так:

/autofs-mnt /etc/auto.misc --timeout=2

То есть все точки автомонтирования, описанные в /etc/auto.misc, будут монтироваться (в виде подкаталога) в каталог /autofs-mnt и автодемонтироваться при двухсекундном простое. В файле /etc/auto.misc (или любом другом - главное, чтобы он был прописан в auto.master) содержится описание конкретных точек монтирования (в нашем случае будет только одна - для CD), состоящее из ключа (это символьное имя, задающее подкаталог в общем каталоге из auto.master), аргументов монтирования и физического устройства, за которым надо следить. Наша запись для CD будет приблизительно такая:

cdrom -fstype=iso9660,ro,nosuid,nodev,iocharset=koi8-r :/dev/cdrom

При обращении к /autofs-mnt/cdrom будет произведена попытка монтирования туда девайса /dev/cdrom с соответствующими аргументами (у тебя они могут быть и другими, к примеру, не у всех локаль koi8-r), а если никто не будет к нему обращаться в течение двух секунд, он будет размонтирован.

Вроде бы все так, как задумывалось: всунули диск, обратились к нему - он сам и примонтировался, закончили работу - он сам и отмонтировался, можно вытаскивать. Но есть один неприятный момент: файловая система autofs виртуальная, то есть каталоги в ней создаются по факту обращения, что подразумевает неработающий таб-комплишн и прочие неприятности. Я предлагаю выходить из этой ситуации путем создания симлинков вроде ln -s /autofs-mnt/cdrom /mnt/cdrom. Теперь мы будем иметь стационарное имя для CD, при попытке чтения каталога /mnt будет дергаться automount, либо разыменовывая нашу ссылку, либо делая ее битой при невозможности монтирования (например, если в приводе нет диска).

Содержание  Вперед на стр. 046-018-2