Тюнинг в стиле 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
Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75