Свързване на камери за предаване на данни към компютри с операционни системи от семейство POSIX

Съвсем не - ще отговорим със сигурност. Тъй като един от принципите на общността „Отворени източници“ е „Работата по спасяването на давещите се е работата на самите давещи се хора“. И ако производителите на хардуер не проявяват склонност да се грижат за свободолюбивите потребители, те ще се погрижат за себе си. И как го правят - ще се опитаме да демонстрираме в тази статия.

Като обект за упражненията избрахме доста рядка операционна система от семейство POSIX - DragonFlyBSD (информация за нея на английски може да бъде намерена на уебсайта на проекта, а на руски - тук). Защо е толкова екзотично? Първо, както би казал другарят Сталин, нямахме друга операционна система под ръка. И второ, ние се опитахме да покажем, че дори в такава млада и малко широко разпространена ОС, ако я погледнете, не възниква и най-малка трудност при работа с цифрови фотографски материали. Така че не бива да ги очаквате на FreeBSD, още по-малко на която и да е ориентирана към потребителите Linux дистрибуция. По принцип характеристиките, специфични за всяка операционна система, при необходимост ще бъдат отбелязани отделно по пътя.

Едва ли ще сгрешим, ако приемем, че почти всеки цифров фотоапарат, току-що закупен в магазин, осигурява връзка с компютър чрез USB интерфейс. Така че първата задача, пред която е изправен фотопотребителят на безплатна POSIX система, е достъпът до кадрите. И за да го разрешите, трябва да знаете няколко прости неща.

Първият е мястото, където се записват заснетите кадри, е вградено или (което се случва по-често напоследък) сменяемо SSD устройство от типа Compact Flash и т.н. - сега името им е legion. Подробностите за тяхното изпълнение не ни притесняват - достатъчно е, че те по същество не се различават по никакъв начин от флашка с USB конектор. Така че в следващото ще ги наречем просто "камерни" задвижвания.

Устройството за "камера", независимо от неговия тип, носи файлова система - и това ще бъде някакъв вид FAT (VFAT за до 2 GB и FAT32 за по-просторен носител). Така че проблемът с достъпа до носителя за съхранение "камера" се свежда просто до монтиране на неговата файлова система в общата файлова йерархия на нашата операционна система - независимо дали е Linux или някой представител на семейството BSD.

Разбира се, има камери с устройства без файлова система, но това е относително рядко явление. А впечатлението за липсата на файлова система е само привидно. В крайна сметка, докато заснетите кадри в крайна сметка се представят под формата на файлове със съответните графични формати, файловата система ще се проведе във всеки случай. Просто изпълнението на USB интерфейса на определен модел камера може да бъде такова, че да не дава на потребителя директен достъп до файловата система на неговия носител. Това обаче не е причина за отчаяние и по-долу ще разгледаме методите за справяне с подобно възмущение.

Междувременно влиза в сила втората точка: по исторически причини в системите POSIX всички устройства за съхранение, които не са IDE/ATA интерфейс, се показват като SCSI твърди дискове - включително всички USB устройства. Съответно те трябва да бъдат монтирани като обикновени SCSI дискове - тоест блокират устройства, които съответстват на файлове като/dev/sda # (в Linux) или/dev/da # (в BSD).

Да предположим, че успешно сме решили проблема с идентифицирането на името на файла на устройството, съответстващо на устройството "камера" и да бъде монтирано (повярвайте ми, на практика е много по-лесно, отколкото с думи). И сега пристъпваме към действителното монтиране. В Linux ще изглежда така: $ mount -t vfat/dev/sda/mnt_point

където стойността на опцията -t указва типа на файловата система,/dev/sda е името на файла на неговото хост устройство (в примера, не е отбелязано като дисков дял), и/mnt_point е съществуващ (и за предпочитане празна) директория - така наречената точка на монтиране (например/mnt/dc - именно в поддиректориите на директорията/mnt е обичайно да се монтират всякакви сменяеми устройства).

BSD системите нямат една команда за монтиране на различни типове файлови системи - всяка има своя собствена програма. И следователно процедурата за монтиране ще бъде малко по-различна: $ mount_msdos/dev/da0/mnt_point

където mount_msdos е командата за монтиране на файлови системи от семейство FAT, а/dev/da0 е името на файла на SCSI устройството (от Direct Access). Възможна е и друга форма: $ mount -t msdos/dev/da0/mnt_point

Тук опцията -t на общата команда за монтиране извиква програмата за монтиране на съответната файлова система.

И в двата примера устройство, което не е картографирано като дисков дял (сурово устройство), се появява като носител на файловата система. Ако на него е създаден дял, тогава името на съответния файл ще бъде като/dev/sda1 в Linux и/dev/da0s1 в BSD. Числото 1 като идентификатор не е задължително - вграденото устройство може да бъде маркирано като 4-то, например основния дял (защо - това е голяма загадка).