Обзор дистрибутивов для флэш-накопителей
Оригинал: Comparing Linux USB flash disk distros
Автор: Gary Sims
Дата: 22 мая 2008
Перевод: Н. Глущенко
Дата перевода: 29 мая 2008
Недавний успех Asus Eee PC показал, что загрузка Линукс с флэш-памяти на данный момент является востребованной среди пользователей. Даже если у вас нет Eee PC, иметь под рукой простую USB-флэшку, на которой помимо Линукс имеются и ваши данные, зачастую бывает полезно. В этой статье мы рассмотрим несколько дистрибутивов, которые можно запускать с флэшки.
Есть дистрибутивы, которые специально разработаны для работы с флэшки, например Mandriva Flash. Некоторые предлагают специальный установщик для переноса дистрибутива на USB-брелок. Есть и такие, которые не предназначены для запуска с флэшки, но при помощи небольших модификаций это удаётся исправить. Я протестировал 5 дистрибутивов Линукс: Damn Small Linux (DSL), Puppy Linux , Pendrivelinux , Ubuntu и Mandriva Flash — чтобы узнать, насколько хорошо они справляются со своими обязанностями, работая с флэшки.
Из всех рассмотренных дистрибутивов, только у Ubuntu нет родной поддержки запуска с флэшки, в то время как Pendrivelinux и Mandriva Flash были специально для этого разработаны. Эту пятёрку можно разделить на два класса: лёгкие и компактные (DSL и Puppy Linux), которые занимает менее 100Mb, и полноценные дистрибутивы (Mandriva, Pendrivelinux и Ubuntu).
Damn Small Linux
DSL и Puppy Linux занимают мало места и не предъявляют высоких системных требований. DSL может запуститься даже на 486DX c 16Мб оперативной памяти, другое дело — где вы найдёте старый-добрый 486-й с возможностью загрузки с USB. Главными достоинствами этих дистрибутивов являются малый размер, универсальность, гибкие настройки загрузки и установки. К тому же DSL и Puppy Linux очень быстры, потому что работают полностью из оперативной памяти.
Для установки DSL вам необходимо скачать образ диска весом всего 50Мб, прожечь его на болванку и загрузиться с неё. После этого вы можете установить DSL на USB-флэшку при помощи специального помощника (Apps->Tools->USB-HDD Pendrive), который представляет собой консольный установщик. DSL определил мою флэшку и установился на неё без проблем.
DSL удобно использовать в качестве инструмента для восстановления «умершего» компьютера или для того, чтобы скопировать ценную информацию с такой машины. Этот дистрибутив использует легковесный оконный менеджер JWM, который будет просто освоить тем пользователям, которые привыкли к кнопке «Пуск» (здесь она подписана «DSL»). DSL содержит много стандартных приложений, например, музыкальный проигрыватель, пара веб-браузеров, текстовый редактор и электронные таблицы. Возможности практически всех программ можно расширить при помощи myDSL Extension Browser . В DSL также можно установить дополнительное программное обеспечение, включая OpenOffice.org. Но несмотря на расширяемость DSL не так силён, как альтернативные мобильные операционные системы.
Puppy Linux
Как и DSL, Puppy Linux занимает немного места (менее 100Мб), и его можно загрузить с LiveCD. При загрузке вся система полностью записывается в оперативную память. Для инсталляции на флэшку используется универсальный установщик. Поддерживаются любые флэшки, даже те, на которых не было создано ни одной файловой системы. Но тем не менее процесс установки достаточно сложен. Установщик отлично справляется с тем, что постоянно даёт вам знать, что происходит в данный момент, но умение работать с дисками и разделами вам пригодятся. Например, если загрузочный диск определен неправильно, то установщик вместо того, чтобы исправить ошибку автоматически, откроет GParted, где вам предстоит всё сделать вручную.
Последняя версия 4.0 имеет много улучшений по сравнению с прошлыми релизами. В качестве оконного менеджера используется JWM, текстовый редактор — AbiWord 2.4.6, Gnumeric 1.7.13 — для работы с электронными таблицами, Sylpheed 2.4.7 — для работы с почтой и Mozilla SeaMonkey 1.1.8 l — веб-браузер. В Puppy Linux также имеется свой менеджер пакетов PETget, который автоматически подключается к официальному репозиторию Puppy и предлагает установить дополнительное программное обеспечение. На данный момент репозиторий 4.0 не предоставляет OpenOffice.org, но мне удалось установить его из репозитория 3.0.
Проблема, которая может возникнуть при работе с Puppy Linux, заключается в том, что вся ваша информация сразу не сохраняется на флэшку. Во время работы, все файлы, которые вы создаете или редактируете хранятся в оперативной памяти. Эти файлы периодически переносятся на флэшку при работе системы, а также в процессе выключения. На рабочем столе расположена кнопка «Save», с её помощью вы можете в любой момент сохранить свою информацию из ОЗУ на флэшку. Но всё же такой непостоянный способ сохранения данных может привести к их потери.
Pendrivelinux — одновременно и дистрибутив для флэшек, и содержательный сайт , на котором собрано огромное количество статей о том, как адаптировать популярные дистрибутивы для работы с USB-брелка.
На сайте также можно найти информацию о том, как установить Pendrivelinux на флэшку как в Линукс , так и в Windows . У Pendrivelinux нет LiveCD, вместо этого вам надо просто загрузиться в Windows или Линукс. Сама установка заключается в следующем: скачиваете zip-архив с дистрибутивом, распаковываете его на флэшку и делаете её загрузочной (в Windows — при помощи специального bat-файла, в Линукс — при помощи пакета syslinux).
Pendrivelinux — полноценный дистрибутив, занимает 500Mb и включает большинство популярных приложений, например, KDE. Этот дистрибутив основан на Mandriva 2007.1, содержит в себе KDE 3.5.6 и Firefox 2.0.0.3. Вместо OpenOffice.org здесь установлен KOffice. Включена поддержка 3D-эффектов: куб рабочего стола, гибкие окна, прозрачность и т.п.
Конечно, недостаток OpenOffice.org ограничивает возможности, так как KOffice не обладает такой хорошей поддержкой форматов Microsoft и OpenOffice.org. Но тем не менее, Pendrivelinux — замечательный дистрибутив для USB-флэшки, который подходит для ежедневного использования.
Ubuntu по умолчанию не поддерживает инсталляцию на флэшку, но на сайте Pendrivelinux имеется подробная статья , при помощи которой самый популярный ( по данным Distrowatch ) дистрибутив можно установить на USB-брелок. Вся процедура разбита на 22 шага. Вам придётся использовать консольные приложения такие, как syslinux, mkfs.ext2 и apt-get, так что это дело не для новичков. Если же вас эти слова не пугают, то стоит попробовать.
После установки вы получаете полноценную систему Ubuntu. Занимает она 750 Mb, поэтому требуется флэшка объёмом минимум 1Gb. Объясняется такой размер очень просто: это Ubuntu, а эта система поставляется вместе с последними версиями GNOME, OpenOffice.org, Firefox и других приложений.
Есть только одна проблема и она заключается в том, что Ubuntu не заточен для работы с флэш-накопителя. Например, у меня через некоторое время безо всяких причин система перестала загружаться с USB, и мне пришлось её переустанавливать. После этого вроде бы всё было нормально, но потом GNOME стал через раз запускаться, а некоторые файл попросту не хотели считываться. Вот тогда я сдался.
Тем самым я не пытаюсь принизить Ubuntu, а лишь хочу указать на возможные трудности, которые могут возникнуть в случае, если использовать программное обеспечение не по назначению.
Mandriva продаёт специальную версию своего Mandriva Linux One дистрибутива, которая называется Mandriva Flash. Это прекрасный дистрибутив для работы с флэшки. Единственный недостаток — он платный. Цена — $69, но за эти деньги вы получаете не только дистрибутив, но и флэшку на 4Gb, месячную техподдержку Mandriva, бесплатную доставку и доступ к CD, при помощи которого можно восстановить вашу флэшку в случае сбоя системы.
Mandriva Flash — полноценный Линукс на USB-брелоке. Он предоставляет вам KDE 3.5.7, OpenOffice.org 2.2.1, Firefox 2.0.0.8, Skype и Java 6. Как и Pendrivelinux, Mandriva Flash порадует вас 3D эффектами рабочего стола и программой, которая поможет вам перенести документы и настройки из Windows. Также это дистрибутив предлагает стандартный менеджер rpm-пакетов, а это означает, что вы сможете установить массу дополнительных приложений, скачанных из интернета.
Mandriva Flash проста в использовании, особенно если вы уже сталкивались с системой Линукс. Я без проблем скачал и установил Google’s Picasa. И смог перебросить фотографии с моей цифровой камеры.
Ещё одна особенность Mandriva Flash — все ваши документы на флэшке доступны в Windows. А всё что вы скопируете на USB-брелок будет также доступно и в Линукс. После первой загрузки Mandriva Flash попросит вас выделить место на флэшке для системных файлов и место для пользовательских данных.
Наличие такого важного продукта как OpenOffice.org делает Mandriva Flash лидером среди дистрибутивов для загрузки с флэш-накопителя. Вы можете брать вашу операционную систему вместе со всеми данными куда угодно.
Из двух мини-дистрибутивов мне больше приглянулся DSL, благодаря дружелюбному интерфейсу и простой установке. В качестве полноценного дистрибутива лучше всех подходит Mandriva Flash. Но если же вы не хотите тратить деньги на операционную систему, то Pendrivelinux к вашим услугам.
Гари Симс имеет степень Информационных Бизнес-Систем Британского университета. В течение десяти лет работал разработчиком программного обеспечения, а теперь он свободный Линукс-консультант и писатель.
Источник
Linux и USB-устройства
(C) В.А.Костромин, kos @ rus-linux dot net
1. Общие сведения о шине USB.
У любого компьютера, выпущенного в последнее время, вы обязательно обнаружите либо на лицевой панели, либо на задней стенке разъем USB. Шина USB (Universal Serial Bus) первоначально была разработана для обеспечения легкого подключения компьютера к телефонным линиям и расширения числа портов. Первая версия стандарта (версия 1.0) была выпущена в январе 1996 года. Сейчас в основном используется версия 1.1. Устройства этой версии обычно помечены значком, изображенным на рис.1. Стандарт USB 1.1 вполне удовлетворяет всем требованиям при работе с низко-скоростными устройствами, вроде мышей и клавиатур, и даже с устройствами, работающими на средних скоростях, вроде Ethernet-адаптеров (10 Mbit/sec) или устройств бытовой электроники (таких, как цифровые камеры и MP3-плейеры), которые пересылают только несколько мегабайт данных. Но если на периферийное устройство или в обратном направлении необходимо пересылать большие объемы информации (примеры — жесткие диски, видеокамеры высокого разрешения, или одновременное использование нескольких сетевых адаптеров стандарта 100BaseT), то скорости, обеспечиваемые USB 1.1, уже недостаточны. Поэтому в 1999 году была разработана версия 2.0 стандарта USB, обеспечивающая более высокие скорости обмена данными. Значок, которым помечаются USB-устройства версии 2.0, изображен на рис. 2.
Рис. 1. Эмблема USB-устройств версии 1.1
Рис. 2. Эмблема USB-устройств версии 2.0
Современные компьютеры обычно имеют контроллер USB-шины, установленный на материнской плате. Для USB версии 1.1 было разработано два типа таких контроллеров, отличающихся интерфейсом взаимодействия с USB-устройствами: OHCI (Open Host Controller Interface) фирмы Compaq и UHCI (Universal Host Controller Interface) фирмы Intel. Оба типа имеют примерно одинаковые возможности и USB-устройства работают с обоими типами контроллеров. Аппаратная часть UHCI-контроллеров проще, а значит, они дешевле, но зато требуют более сложных драйверов, что увеличивает нагрузку на процессор. Версия 2.0 стандарта USB использует улучшенный вариант интерфейса — EHCI (Enhanced Host Controller Interface).
Стандарт USB предусматривает строгую иерархию устройств, управляемых основным хостом, и использование протокола master/slave для управления подключаемыми устройствами. На один USB-разъем могут быть последовательно подключены до 127 устройств. Но непосредственно подключать одно устройство к другому нельзя, поскольку питание таких устройств осуществляется по той же шине. Поэтому для подключения дополнительных устройств используются специальные хабы, обеспечивающие снабжение этих устройств необходимой энергией. В результате USB-устройства образуют как бы дерево, каждая не конечная вершина которого является хабом. Поскольку любой обмен данными инициируется только хостом, и периферийные устройства не могут начать взаимодействие, исключена возможность коллизий, вследствие чего снижается стоимость устройств. Правда, такое решение приводит к некоторому снижению производительности. В результате USB-устройства версии 1.1 могут работать в двух режимах: так называемом low speed, обеспечивающем скорость передачи данных до 1.5 Mбит/сек, и full speed, в котором скорость передачи данных может составлять 12 Мбит/сек. Это только теоретический предел, а реально производительность шины даже в идеальных условиях не превышает 8,5 Мбит/сек., а в среднем составляет около 2 Мбит/сек.
Интерфейс EHCI, используемый в устройствах версии 2, обеспечивает режим работы high speed, для которого скорость передачи данных может достигать 480 Мбит/сек. Для того чтобы USB-устройства могли обмениваться данными с такой скоростью, и хост-контроллер и само устройство должны соответствовать стандарту USB 2.0 и обеспечивать работу с интерфейсом EHCI. Однако хост-контроллеры 2.0 успешно работают с устройствами версии 1.1. И наоборот, вы вполне можете подключать устройства USB 2.0 к хосту (и к хабам) версии USB 1.1 и они будут прекрасно работать, но . со скоростью не более 12, а не 480 Мбит/сек.
В настоящее время разработан широкий спектр устройств, подключаемых по шине USB. Это клавиатуры, мыши, джойстики, игровые приставки, сканеры, модемы, принтеры, цифровые камеры, устройства хранения информации – дисководы гибких и жестких дисков, дисководы Zip, LS120 и CD-ROM. Очень перспективный и интересный класс таких устройств образуют накопители на основе Flash-памяти. Объем статьи не позволяет рассказать о каждом из этих типов устройств, так что ограничимся рассмотрением USB-накопителей (в частности Flash-дисков и цифровых фотокамер). Но вначале рассмотрим общие вопросы, что, надеюсь, позволит вам справиться и с другими типами устройств.
2. Поддержка USB-устройств в Linux
Для того чтобы работать с USB-устройствами под Linux, должны выполняться несколько условий. Во-первых, USB-устройства должны поддерживаться на аппаратном уровне, то есть на материнской плате должен быть установлен USB-контроллер. Определить его наличие можно по характерным разъемам, обычно расположенным на задней стенке системного блока. Тип интерфейса этого контроллера вы можете определить с помощью команды
[user]$ /sbin/lspci –v
Направьте вывод этой команды в файл и просмотрите результат. Для каждого из установленных у вас контроллеров вы найдете примерно такие строки:
00:1f.2 USB Controller: Intel Corp. 82801BA/BAM USB (Hub (rev 05) (prog-if 00 [UHCI])
Subsystem: Intel Corp. 82801BA/BAM USB (Hub
Flags: bus master, medium devsel, latency 0, IRQ 11
I/O ports at d000 [size=32]
Как видите, в моем компьютере стоит USB-контроллер с интерфейсом UHCI, а следовательно, версии 1.1.
Теперь перейдем к программной части. Как и для любой другой аппаратуры, у вас должна быть реализована поддержка USB в ядре. Если вы используете ядро, скомпилированное разработчиком, то такая поддержка, скорее всего, обеспечена. Полноценная поддержка USB версии 1.1 включается в ядро, начиная с версии 2.2.18. Если хост-контроллер вашего компьютера соответствует версии 2.0 стандарта USB, вы должны иметь ядро, версия которого не ниже 2.4.19, и использовать драйвер EHCI.
Если же вы сами компилируете ядро для своей системы, вы должны включить поддержку USB либо непосредственно в ядро, либо в подключаемые модули ядра. Для этого при компиляции надо задать следующие опции в секции поддержки USB (либо подключить соответствующие модули):
Поддержка USB (CONFIG_USB, usbcore.o)
Подключение USB-драйверов (выберите нужный драйвер из следующего списка):
ECHI HCD (CONFIG_USB_EHCI_HCD, ehci-hcd.o)
UHCI (CONFIG_USB_UHCI, usb-uhci.o)
OHCI (CONFIG_USB_OHCI, usb-ohci.o)
Поддержка USB-накопителей (CONFIG_USB_STORAGE, usb-storage.o).
Во-вторых, поскольку взаимодействие с USB осуществляется путем эмуляции SCSI, должны быть включена и поддержка SCSI-устройств, для чего должны быть включены следующие опции в секции поддержки SCSI (либо подключены указанные модули):
Поддержка SCSI (CONFIG_SCSI, scsi_mod.o)
Поддержка SCSI-дисков (CONFIG_BLK_DEV_SD, sd_mod.o)
SCSI generic support (CONFIG_CHR_DEV_SG, sg.o)
Включен опрос всех LUN на каждом SCSI-устройстве (CONFIG_SCSI_MULTI_LUN).
В третьих, в секции файловых систем должна быть включена поддержка файловых систем, используемых USB -устройствами:
DOS FAT (CONFIG_FAT_FS, fat.o)
MSDOS (CONFIG_MSDOS_FS, msdos.o)
VFAT (CONFIG_VFAT_FS, vfat.o)
Ну, и наконец, для конкретных типов устройств должна быть включена поддержка соответствующих устройств. Например, для клавиатуры, мыши, джойстика необходимо включить поддержку USB Human Interface Device (HID) , для сканера включить опцию USB Scanner support , для модема — USB Modem (CDC ACM) support , для принтера — USB Printer support , и так далее.
Для работы с USB-устройствами динамически генерируется виртуальная файловая система, являющаяся частью файловой системы /proc , и располагающаяся в каталоге /proc/bus/usb. Генерация такой системы выполняется из инициализационных скриптов при загрузке системы. В дистрибутиве Red Hat версии 9, например, такая генерация происходит при выполнении скрипта /etc/rc.d/rc.sysinit, в котором имеется следующая команда:
mount -t usbdevfs none /proc/bus/usb
Одновременно загружаются модули usbcore, usb-uhci, hid и производится инициализация usb-контроллеров.
В некоторых случаях монтирование может осуществляться путем прописывания в файле /etc/fstab строки вида:
none /proc/bus/usb usbdevfs defaults 0 0
или же путем выполнения от имени root-а команды:
[root]# mount -t usbdevfs none /proc/bus/usb
и запуска необходимых модулей командой modprobe.
Теперь давайте посмотрим, как в работающей системе проверить, обеспечена ли поддержка USB. Существует несколько точек, в которых отображаются такие сведения (я не могу гарантировать, что сумею перечислить все такие точки, но упомянутых достаточно для того, чтобы убедиться, что USB работает).
Начнем с файла /var/log/dmesg, содержащего протокол начальной загрузки. Проведите в нем поиск по шаблону “usb”. Я, например, увидел там строки, говорящие, что загружены драйверы usbdevfs и usb-uhci, поддерживаются два порта и драйвер hid (хотя у меня и мышь и клавиатура обычные, не-USB).
Запустив далее команду /sbin/lsmod, я увидел, что загружены модули usb-storage, usbcore, usb-uhci и hid.
Теперь давайте заглянем в каталог /proc/bus/usb. Его содержимое должно выглядеть примерно так:
dr-xr-xr-x 1 root root 0 Jan 26 10:40 001
-r—r—r— 1 root root 0 Jan 26 10:40 devices
-r—r—r— 1 root root 0 Jan 26 10:40 drivers
Если у вас более одного USB-контроллера, вы увидите соответствующее число подкаталогов с цифровыми именами 002, 003 и так далее. Если каталог /proc/bus/usb пуст, это означает, что виртуальная файловая система поддержки USB не смонтирована или смонтирована не в тот каталог. В каждом из каталогов 001, 002 и так далее у вас пока (до подключения к шине каких-то устройств) должно быть всего по одному файлу, имя которого тоже представлено трехзначным числом. Эти числа являются уникальными номерами USB-устройств, и пока что задают только номера контроллеров. Содержимое этих файлов нас пока не интересует.
Файл /proc/bus/usb/drivers содержит список зарегистрированных на данный момент драйверов (даже если драйвер не используется никаким устройством). Я у себя увидел в этом файле три строки:
Прежде чем рассматривать содержимое файла /proc/bus/usb/devices, давайте посмотрим, что происходит при подключении к USB-шине какого-то устройства. В Linux имеется программа /sbin/hotplug, основное назначение которой состоит в том, чтобы уведомлять приложения о существенных изменениях в системе, в первую очередь – об изменениях в составе аппаратных средств. Программа эта запускается из инициализационных скриптов (конкретно, в скрипте /etc/rc.sysinit). Когда вы подключаете USB-устройство к какому-либо порту, ядро обнаруживает это событие и изменяет файл /proc/bus/usb/devices. Соответственно, и при удалении устройства этот файл тоже изменяется. Следовательно, в нем в каждый момент времени содержится информация о каждом устройстве, подключенном в текущий момент времени к USB-шине.
Каждому конкретному устройству соответствует группа строк в файле /proc/bus/usb/devices , начинающаяся со строки, обозначенной буквой T:.
Отдельные строки содержат следующую информацию:
Строка, начинающаяся с буквы T:, задает топологию.
Bus указывает, к какой шине подключено устройство.
Lev указывает уровень устройства, начиная с уровня 00 для корневого хаба (root hub). Уровень 01 соответствует любому устройству, подключенному к корневому хабу, уровень 02 соответствует устройствам, подключенным к хабу уровня 01, и так далее.
Prnt указывает на устройство, являющееся родительским по отношению к данному (всегда 00 для корневого хаба и 01 для устройств, подключенных к корневому хабу).
Port — порт на родительском устройстве, начиная с 00 для первого порта каждого устройства.
Значения Prnt и Port уникальны в пределах одной шины.
Cnt показывает, какой номер имеет данное устройство на своем уровне в соответствии с порядком перечисления устройств данного уровня, начиная с номера 01 для первого устройства.
Dev# указывает номер устройства безотносительно к уровню. Этот номер уникален в пределах одной шины.
Spd указывает, с какой скоростью работает устройство в Мбит/сек. (возможные значения для версии 1.1 USB — 1.5 или 12).
MxCh показывает, сколько устройств может быть подключено к данному устройству; это число равно 00 для всех устройств, кроме хабов.
Driver показывает, какой драйвер используется для этого устройства; если указано none, значит никакого драйвера не используется.
Строки, начинающиеся с букв D: и P:, содержат информацию из спецификации устройства и сведения о производителе.
Самые интересные для нас строки (таких строк может быть несколько) начинаются с буквы S:. Эти строки содержат наименование известных системе устройств и имена их производителей.
Другие строки мы здесь подробно разбирать не будем, при желании вы можете найти такое описание в USB Guide, либо в файле linux/Documentation/usb/proc_usb_info.txt .
Для примера приведу вид файла /proc/bus/usb/devices на одном из компьютеров, у которого имелся один USB-порт, и никаких USB-устройств подключено не было:
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
После подключения flash-диска в этом файле появились следующие дополнительные строки:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 9 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0ea0 ProdID=6803 Rev= 1.00
S: Product=Solid state disk
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 2 Ivl=1ms
Как видите, содержимое файла /proc/bus/usb/devices позволяет достаточно точно определить, о каких USB-устройствах известно вашей системе. Однако, понять записи в этом файле без дополнительных разъяснений довольно сложно. Помочь в их расшифровке вам может программа usbview (разработчик — Greg Froah-Hartman, сайт программы — http://usbview.sourceforge.net). На рисунке 3 приведен вид окна этой программы. Как видите, прочитать информацию о подключенном к системе flash-диске с ее помощью несколько проще. Причем, устройство обнаруживается этой программой сразу после его подключения.
Рис. 3. Окно программы usbview
На этом изложение общих вопросов закончено, и можно перейти к рассказу о конкретном опыте работы с некоторыми из USB –устройств. Я расскажу здесь о своем опыте работы в Linux с тремя типами устройств: мышью, цифровым фотоаппаратом и накопителем на основе flash-памяти.
3. USB-мышь в Linux
После подключения USB-мыши к разъему в файле /proc/bus/usb/devices появились строки
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=046d ProdID=c002 Rev= 1.20
S: Product=USB-PS/2 Mouse M-BA47
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 50mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID) Sub=01 Prot=02 Driver=hid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
Курсор сразу же начал реагировать как на перемещения основной мыши, так и дополнительной, подключенной через USB. Никаких дополнительных усилий для обеспечения работоспособности USB-мыши не потребовалось. Причем в OpenOffice даже работало колесико, прокручивая страничку. На случай, если у вас все же возникнут какие-либо сложности, приведу некоторые дополнительные сведения о настройке USB- мышей, заимствованные мной из литературных источников.
Во-первых, проверьте, что ссылка с именем /dev/mouse указывает на правильный порт. Если у вас USB-мышь, то /dev/mouse должна указывать на /dev/input/mice.
Далее убедитесь, что существует файл /etc/sysconfig/mouse, и что в нем записано что-то вроде:
Первые две строки определяют, какой протокол будет использоваться, соответственно, в текстовом и графическом режимах. Третья строка нужна в случае, когда у вас двух-кнопочная мышь и третья кнопка эмулируется одновременным нажатием двух имеющихся кнопок.
Протокол — это чисто программная характеристика мыши. У мышей, подключаемых через последовательный порт, обычно работает протокол “Microsoft” а мыши типа PS/2 используют протокол »PS/2». Для USB- мыши в качестве протокола можно тоже указать »PS/2».
В последнее время появились мыши с колесиком, которые обеспечивают скроллинг (прокрутку) при вращении колесика и в силу этого очень удобны при работе с некоторыми программами (например, с текстовым редактором из пакета OpenOffice или браузером Mozilla). Колесико мыши заменяет одновременно 3-ю, 4-ую и 5-ую кнопки мыши (нажатие на колесико равносильно нажатию 3-ей кнопки, вращение в одном направлении – 4-ая кнопка, в другом – 5-ая). Использоваться скроллинг может только в графическом режиме, причем пакет XFree86 должен быть версии не ниже 3.3.2, и то скроллинг будет работать не в каждом приложении. Для USB- мышей с колесиком надо выбирать протокол “IMPS/2”.
Чтобы мышь корректно работала в графическом режиме, необходимо правильно задать секцию InputDevice в файле XF86Config-4. Вот пример соответствующей секции для мыши с колесиком, подключаемой через USB- порт:
Option «Device» «/dev/mouse»
Option «Protocol» «IMPS/2»
Option «ZAxisMapping» «4 5»
Option «Emulate3Buttons» «no»
Отмечу, что для мыши с колесиком последняя строка («Emulate3Buttons» «no») является обязательной.
После этого в графических средах KDE и GNOME скроллинг будет работать по умолчанию в большинстве приложений, например, в браузере Mozilla и офисном пакете OpenOffice.org. В отдельных приложениях (например, в текстовом редакторе Nedit) для использования скроллинга требуется произвести некоторые изменения в конфигурационных файлах приложения. Подробнее о том, какие дополнения и куда необходимо вписать, вы можете узнать на страничке Colas Nahaboo — http://koala.ilog.fr/colas/mouse-wheel-scroll/ .
4. Flash-диски
Вторым устройством, которое я попытался подключить через USB-разъем, был накопитель на основе энергонезависимой flash-памяти. Такие устройства часто называют flash-дисками, что, конечно, не верно, но думаю, что такое название приживется. Как оказалось, работа с такими устройствами в Linux осуществляется достаточно просто. После подключения flash-диска к разъему USB светодиод на нем начинает периодически мигать. После этого (если поддержка USB ядром имеется) можно просто смонтировать flash-диск командой:
[root]# mount –t vfat /dev/sda1 /mnt/usb
А если в файле fstab прописать строку вида
/dev/sda1 /mnt/usb vfat users,codepage=866, iocharset=koi8-r 0 0
то монтировать USB-диск смогут все пользователи простой командой
[user]$ mount /mnt/usb
Когда происходит обращение к этому диску, частота мерцания светодиода на нем повышается.
Внимание! Имейте в виду, что вынимать смонтированный flash-диск из разъема нельзя – после этого он может сразу перестать читаться. Необходимо предварительно размонтировать устройство, дождаться, пока мерцание снова станет более редким, и только после этого flash-диск можно отключать от разъема. Если вы все же умудрились «испортить» ваш flash-диск некорректным отключением, то имейте в виду, что его работоспособность можно восстановить с помощью специальных утилит, поставляемых разработчиком flash-диска (только обычно такие утилиты предназначены для использования под ОС Windows).
5. Цифровые фотоаппараты
Третьим типом USB-устройств, с которыми мне довелось поработать, был цифровой фотоаппарат Olympus C120. Я полагаю, что на сегодняшний день цифровые фотоаппараты вообще являются одним из самых распространенных типов устройств, подключаемых к компьютеру по шине USB. Существует три типа подключения таких устройств к компьютеру. Некоторые аппараты имеют кабель, подключаемый к USB-порту компьютера. Второй конец такого кабеля подключается непосредственно к фотоаппарату посредством специального разъема. Второй тип фотоаппаратов не имеет на корпусе разъема для подключения кабеля, зато снабжаются специальным адаптером, в который вставляется извлеченная из фотоаппарата карта памяти. Адаптер уже подключается к компьютеру и производится перенос файлов изображений на жесткий диск (или их отправка по электронной почте и так далее). И, наконец, третий тип подключения – это PCMCIA-адаптеры, которые тоже служат для переноса изображений с извлеченной из фотоаппарата карты памяти. Такие адаптеры обычно применяются только для работы с лэптопами. Поскольку мне приходилось иметь дело только с аппаратом, имеющим USB-разъем, то я буду рассматривать только случай камеры первого типа.
После того, как вы убедитесь, что ваше ядро поддерживает стандарт USB, подключите камеру к компьютеру через USB-порт (питание аппарата должно быть включено!) и убедитесь в том, ядро «видит» камеру. Судить об этом можно по тому, что в файле /proc/bus/usb/devices появятся строки, аналогичные тем, которые вы видите ниже:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 7 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07b4 ProdID=0105 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
Если камера не обнаружилась, необходимо проверить настройки «/proc/bus/usb» и «usbdevfs» (смотри раздел 2 выше). Если же ядро обнаружило камеру, то ее можно смонтировать точно так же, как монтировался flash-диск.
Некоторые дополнительные сложности могут возникнуть в том случае, если вы работаете попеременно с flash-диском и с цифровым фотоаппаратом. Если вначале была подключена камера, то даже после вполне корректного ее отключения подключить flash-диск у меня вначале не получалось. Как ни старался, команда mount выдавала такую ответную реакцию:
mount: /dev/sda1 is not a valid block device
Проблема разрешилась, когда я стал монтировать первое устройство как /dev/sda1, а второе — как /dev/sdb1. Найти такое решение мне помог файл /etc/sysconfig/hwconf. Этот файл формируется утилитой kudzu на этапе загрузки системы и содержит информацию об имеющемся в системе оборудовании. После одной из очередных перезагрузок я заметил, что устройство определилось как sdb, после чего мне удалось его смонтировать (в режиме суперпользователя). Ну а дальше уже нашлись и способы облегчения процедур монтирования.
В заключение раздела приведу два коротких замечания.
Первое: в состав некоторых дистрибутивов (например, ASPLinux версии 7.3) входит программа gPhoto, которая позволяет организовать работу с цифровыми фотоаппаратами и теми коллекциями фотографий, которые у вас накопятся вскоре после приобретения такого аппарата. Но осваивать работу с этой программой вам придется самостоятельно.
Второе: учитывая, что в имевшемся у меня цифровом фотоаппарате использовалась съемная карта flash-памяти, я полагаю, что с подключением к Linux-компьютеру выпускаемых для работы с такими картами специальных устройств, – картоводов, проблем тоже не возникнет, ибо подключение таких устройств к компьютеру производится обычно тоже по шине USB.
Если у вас имеются поправки и дополнения к этой статье, я готов опубликовать их здесь после получения от вас письма на адрес kos (at) rus-linux (dot) net.
Замечания и дополнения от читателей.
Здравствуйте. В своей статье вы рекомендуете, отмонтировать usb-накопители прежде чем вытаскивать их из разъёма, чтобы не были потеряны данные и испорчен накопитель. Но не сказали об опции монтирования «sync», которая, в общем-то, позволяет работать с такими устройствами более свободно и безопасно (с точки зрения забывчивости).
—
Лучшие пожелания, Андрей
Источник