Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QNX 4 Руководство пользователя.doc
Скачиваний:
248
Добавлен:
02.05.2014
Размер:
1.02 Mб
Скачать

Глава 8. Установка второй файловой системы

В этой главе...

Разделение пространства полных имен

Установка файловой системы DOS

8.1. Введение

Файловая система, определяемая корнем (/), может состоять из

одной или более физических файловых систем, скомпонованных вместе.

Физическая файловая система - это отдельный диск или раздел. Одна

из физических файловых систем, естественно, должна быть корнем (/),

тогда как другие файловые системы устанавливаются, как подкаталоги.

Эти подкаталоги могут существовать или на диске, как в случае с

символическими связями, или в независимом пространстве, названном

деревом префиксов. Дерево префиксов отображает полные имена адми-

нистраторам ввода/вывода, которые в свою очередь устанавливают со-

ответствие с дисками и устройствами. Во всех примерах в этой главе

дерево префиксов используется для разделения пространства полных

имен. Для получения дополнительной информации о дереве префиксов

смотрите в "Архитектуре системы" главу "Пространство имен ввода/вы-

вода".

8.2. Разделение пространства полных имен

Следующие примеры должны помочь разъяснить, как разметить

пространство имен маршрутов. Мы рассмотрим следующие конфигурации:

- жесткий диск и флоппи-дискета; - два жестких диска; - два или бо-

лее QNX-разделов; - локальные и удаленные жесткие диски.

ВНИМАНИЕ. В этих примерах, мы предполагаем, что Fsys также,

как и соответствующие драйверы, запущены и что ко-

манда mount -p была выдана на Ваш жесткий диск.

8.2.1. Жесткий диск и флоппи-дискета

Жесткий диск монтируется, как наклонная черта вправо_(/), и

формируется корень файловой системы. Флоппи-дискета устанавливает-

ся, как /fd0:

mount /dev/hd0t77 /

mount /dev/fd0 /fd0

- 89 -

Любая ссылка на полное имя, начинающееся с /fd0, будет направ-

ляться к файловой системе QNX на флоппи-дискету. Например, команда:

ls -aR /fd0

отображает все файлы на флоппи-дискете.

8.2.2. Два жестких диска (на одном узле)

Первый жесткий диск смонтирован, как наклонная черта впра-

во (/), и формируется корень файловой системы. Второй жесткий диск

установлен, как /home2:

mount /dev/hd0t77 /

mount /dev/hd1t77 /home2

Любая ссылка на полное имя, начинающееся с /home2, будет нап-

равляться к файловой системе QNX на втором жестком диске. Например,

команда:

ls -aR /home2

отображает все файлы на втором жестком диске.

8.2.3. Два или более разделов QNX

Вы можете иметь три раздела QNX на одном жестком диске. Первый

раздел должен иметь тип 77 (смотрите утилиту fdisk в "Utilities Re-

ference"). Второму разделу должен быть назначен тип 78 и третьему -

тип 79.

Например:

mount /dev/hd0t77 /

mount /dev/hd0t78 /home2

Любая ссылка на полное имя, начинающееся с /home2 будет нап-

равляться к файловой системе QNX во втором разделе. Например, ко-

манда:

ls -aR /home2

отображает все файлы во втором разделе.

- 90 -

8.2.4. Локальные и удаленные жесткие диски

В сети Вы можете иметь диски с файловой системой QNX в более

чем одной машине. Вы можете скомпоновать их так, чтобы они были:

- независимыми;

- первичными/вторичными;

- связно-независимыми.

ВНИМАНИЕ. В следующих примерах локальные файловые системы свя-

зываются с блочными специальными файлами (например,

/dev/hd0t77), а удаленные файловые системы связыва-

ются с отображениями префиксов полных имен. Этот

префикс переназначает запросы к удаленной файловой

системе, которая будет связана с удаленным блочным

специальным файлом.

Независимая

В этой конфигурации Вы рассматриваете каждую машину, как неза-

висимую, с замкнутой файловой системой. Для того, чтобы управлять

файлом в удаленной машине, Вы должны в начале полного имени указать

номер узла удаленной машины. Например:

/etc/motd файл локальной файловой системы

//10/etc/motd файл удаленной файловой системы (узел_10)

Определение файловой системы для конкретного узла работает

всегда, как наиболее общий механизм для доступа к удаленным файлам.

Первичная/вторичная

В этой конфигурации Вы рассматриваете одну файловую систему,

как первичную, и устанавливаете вторую файловую систему, как подка-

талог в первичной. Например, предположим, что узел 1 имеет первичную

файловую систему, а узел 2 - вторичную, установленную, как /home2.

Узел 1 загружен с жесткого диска и имеет корень, установленный на его

локальном диске утилитой mount и построенный в образе операционной

системы (с Fsys и драйвером). Его файл системной инициализации вы-

зывает утилиту prefix, чтобы установить удаленную файловую систему

следующим образом:

prefix -A /home2=//2/home2

Узел 2 загружается через сеть из узла 1 и имеет корень файло-

- 91 -

вой системы, установленный /=//1/, используя утилиту sinit с опцией

-r операционной системы. Его файл системной инициализации вызывает

утилиту mount, чтобы установить локальную файловую систему следую-

щим образом:

mount /dev/hd0t77 /home2

Администратор файловой системы (Fsys) и его драйвер могут быть

включены в образ, но более предпочтительно запускать их из файла

системной инициализации. Другими словами, узел 2 загружен, как

простая бездисковая рабочая станция, которая стартует со своей фай-

ловой системой после загрузки. Оба узла 1 и 2 будут иметь доступ к

файловой системе на узле 1, как /, а на узле 2, как /home2.

Связно-независимая

В этой конфигурации Вы рассматриваете каждую машину, как неза-

висимую, с замкнутой файловой системой, но Вы компонуете их вместе

через утилиту prefix. Например, допустим, что файловая система на

узле 1 имеет каталог /home1, а файловая система на узле 2 имеет ка-

талог /home2. Вы могли бы отобразить каждый каталог home в область

другой файловой системы следующим образом:

В узле 1: В узле 2:

prefix -А /home2=//2/home2 prefix -A /home1=//1/home1

Вместе с тем, каждая файловая система автономна со своими

собственными копиями /bin и т.п. Преимущество - большая избыточ-

ность: если один отдел использует узел 2, и узел 1 отключается, от-

дел, используя узел 2, может продолжать работу (кроме файлов из

/home1, которые не будут доступны).

ВНИМАНИЕ. Вместо использования префиксов в разделении прост-

ранства полных имен, Вы можете использовать символи-

ческие связи. Более полное описание смотрите в "Ар-

хитектуре системы" в главе 5 "Администратор файловой

системы".

8.3. Установка файловой системы DOS

Администратор файловой системы Dosfsys обеспечивает полностью

прозрачный доступ к файлам DOS и каталогам, которые находятся на

диске DOS. Dosfsys может поддерживать до восьми накопителей. Вы мо-

- 92 -

жете создавать файлы на дисках DOS, читать, записывать и удалять их

c использованием большинства программ QNX. Вы можете также созда-

вать, читать и удалять каталоги на дисках DOS стандартными утилита-

ми QNX, такими как, например, mkdir, ls и rmdir. Большинство стан-

дартных утилит QNX будут работать с файлами DOS при условии, что

структура файлов DOS соответствует функциональному запросу утилиты.

Ваши собственные программы также смогут обрабатывать файлы DOS точ-

но так же, как они обрабатывают файлы QNX, используя стандартные

функции ввода/вывода open(), read(), write(), close(), seek() и

т.п. Когда Вы читаете каталоги DOS, они представлены в формате QNX.

8.3.1. Режимы вызова

Dosfsys имеет четыре режима вызова:

Dosfsys [-S|s] [-e] [-m] [-t] [dos_drive=qnx_drive[,R]]... &

Dosfsys -i [-n node] [dos_drive_path]...

Dosfsys -o [-n node]

Dosfsys -x [-n node]

Опция -i позволяет Вам получать информацию о накопителях DOS,

установленных в настоящее время. Опция -o позволяет Вам увидеть

имена любых файлов, открытых к настоящему времени на каждом уст-

ройстве. Опция -x завершает работу сервера Dosfsys. Если Вы не за-

даете -i, -o или -x, Dosfsys будет запускаться и пытаться настро-

иться на определенные накопители. Для того, чтобы запустить сервер

Dosfsys или завершить его работу, Вы должны войти в систему, как

суперпользователь (root).

8.3.2. Запуск Dosfsys

Когда Вы запускаете Dosfsys, он:

- открывает определенный накопитель(накопители);

- принимает имя /dos, как корень DOS;

-регистрирует имя qnx/dosfsys в локальном Администраторе про-

цессов.

Если никакие опции не были определены или если было задано

-S или -s, Dosfsys просматривает каталог /dev для настройки на за-

данные накопители DOS. Если в командной строке ничего дополнительно

не указано, Dosfsys настраивается максимум на восемь накопителей.

Первичные разделы DOS (/dev/hd0t1, /dev/hd0t4, /dev/hd0t6,...) и

разделы расширения (/dev/hd0t1.1, /dev/hd0t1.2,...) монтируются,

начиная с накопителя C (/dos/c). Накопители на гибких дисках монти-

руются следующим образом:

- 93 -

/dev/fd0 ---> /dos/а

/dev/fd1 ---> /dos/b

8.3.3. Восприятие имен Dosfsys

Dosfsys может настраиваться максимум на восемь накопителей.

Как отмечалось выше, Dosfsys принимает имя /dos, как системный пре-

фикс. Он также будет управлять каждым специфическим именем накопи-

теля, таким как /dos/а, /dos/b и т.п. Эти имена не регистрируются в

системном префиксном дереве, но содержатся непосредственно в Dosf-

sys. Это обеспечивает прозрачный доступ пользователю за исключением

того, что пользователь не может создавать файлы или каталоги в кор-

не /dos.

8.3.4. Устройства DOS

Устройством DOS может быть одно из следующих:

- раздел DOS на жестком диске;

- флоппи-дискета;

- образ раздела DOS или дискеты.

Для того, чтобы создать образ дискеты DOS или раздела DOS, ис-

пользуйте утилиту cp QNX. Например, для того, чтобы скопировать об-

раз флоппи DOS на Ваш накопитель на гибких дисках, используйте сле-

дующее:

cp /dev/fd0 /usr/qnx/dosa

и затем вызывайте Dosfsys следующим образом:

Dosfsys a=/usr/qnx/dosa &

То же самое можно сделать с разделом жесткого диска. Dosfsys

будет оперировать с этими образами также, как и с фактическими уст-

ройствами. Для всех несменных устройств Dosfsys немедленно читает

блок параметров загрузки DOS (BPB), а также начальную часть таблицы

размещения записей файла (FAT). Для сменных устройств BPB и FAT чи-

тается только тогда, когда накопитель доступен. Когда Dosfsys имеет

открытое несменное устройство, устройство блокируется на запись

так, что никакой другой процесс не может ничего записать на это

устройство, минуя Dosfsys. Сменные устройства остаются открытыми и

блокированными только в момент обращения (например, в течение чте-

ния или записи на диск). Имейте в виду, что если Вы не задали оп-

цию R, все накопители имеют доступ на чтение/запись.

- 94 -

8.3.5. Поддерживаемые версии DOS

Администратор Dosfsys поддерживает все разделы DOS, форматиру-

емые в DOS 2.1 или выше, включая стандартные начальные разделы DOS,

большие разделы DOS (DOS 4.0 и DOS 5.0 >32M), и расширенные разделы

DOS (тип 5). Поддержаны жесткие диски, флоппи-дискеты 5 1/4 дюйма и

3 1/2 дюйма.

Типы разделов DOS

Стандартные типы разделов жесткого диска DOS:

-------------------------------------------------------------------

Тип раздела: Описание:

-------------------------------------------------------------------

1 Начальный раздел DOS (12-бит FAT)

4 Начальный раздел DOS (16-бит FAT; _7,_032M)

5 Расширенный раздел DOS (DOS 3.3 или старше)

6 Начальный раздел DOS (DOS 4.0 или старше; >32M)

-------------------------------------------------------------------

8.3.6. Текстовые файлы DOS

Структура текстовых файлов DOS отличается от структуры, ис-

пользуемой в QNX (под текстовым файлом понимаются строки AS-

CII-текста, разделяемые последовательностями разделителей строк). В

DOS каждая строка текстового файла завершается последовательностью

возврат каретки/перевод строки (CR/LF), в то время, как в QNX каж-

дая строка завершена символом перевода строки (LF).

Администратор Dosfsys не преобразует эти файлы. Все файлы

рассматриваются "так, как есть".

Таким образом, Вы должны использовать утилиту textto QNX, что-

бы преобразовать Ваши текстовые файлы перед копированием их на (или

из) QNX и DOS-диски.

Имейте также в виду то, что текстовые файлы, создаваемые неко-

торыми программами DOS могут содержать символ (^z), как последний

символ файла. Это также рассматривается так, как есть.

8.3.7. Двоичные файлы DOS

Т.к. Dosfsys не преобразует содержимое файлов, двоичные файлы

будут скопированы на (или из) QNX/DOS разделов без изменения.

- 95 -

8.3.8. Преобразование символов и имен из QNX в DOS

В DOS Вы не можете включить никакой из этих символов в имя

файла:

/ \ [ ] : * | + = ; , ?

Также Вы не можете использовать следующие имена файлов:

CLOCK$ CON PRN

NUL AUX COM1

COM2 COM3 COM4

LPT1 LPT2 LPT3

Если Вы пытаетесь создать файл, который содержит один из недо-

пустимых символов DOS или он имеет запрещенное имя файла, то Ваша

попытка будет отвергнута. Т.к. все имена файлов и все символы в

имени файла в QNX допустимы, никаких разрешений на эти имена файлов

не требуется. DOS также отображает все алфавитные символы на верх-

нем регистре, поэтому при создании имени файла Dosfsys отображает

эти символы на верхнем регистре; DOS при возврате в приложение QNX

имя файла отображает на нижнем регистре.

Преобразование имен файлов QNX

Если Вы задаете -t при запуске Dosfsys, сервер переведет и/или

исключит любые имена файлов QNX, которые не соответствуют правилам

присваивания имен в DOS. Следующая таблица описывает, как преобра-

зовываются имена:

-------------------------------------------------------------------

Если имя файла QNX: Dosfsys будет:

-------------------------------------------------------------------

начинается с точки: . точка изменяется на $

содержит несколько точек изменяются все точки на $, кроме

последней

имеет префикс длиннее преобразует префикс в восемь символов

восьми символов

имеет суффикс длиннее преобразует суффикс в три символа

трех символов

-------------------------------------------------------------------

- 96 -

Вот некоторые примеры:

-------------------------------------------------

Имя файла QNX: Имя файла DOS:

-------------------------------------------------

.profile $profile

a.b.c.d $a$b$c.d

longfilename longfile

longfilename.extension longfile.ext

a..b..c.def.g.h a$$b$$c$.h

-------------------------------------------------

8.3.9. Метки тома DOS

DOS использует понятие метки тома, которое является фактичес-

ким входом в корневой каталог файловой системы DOS. Для того, чтобы

отличать метки тома от фактического файла DOS, Dosfsys устанавлива-

ет знак равенства (=) первым символом в имени метки тома. Dosfsys

рассматривает эту метку тома, как файл с нулевой длиной, который

открыт только на чтение и доступ к которому не может быть изменен.

8.3.10. Преобразование атрибутов доступа DOS/QNX

DOS не использует все биты доступа, которые имеются в QNX. DOS

рассматривает биты доступа следующим образом:

READ_ONLY - только для чтения

HIDDEN - скрытый

SYSTEM - системный

VOLUME_LABEL - метка тома

DIRECTORY - каталог

ARCHIVE - архивный

Преобразование битов-атрибутов

Dosfsys использует следующую логику, чтобы преобразовать би-

ты-атрибуты из QNX в DOS: - если на входе - каталог, устанавливает-

ся бит DIRECTORY DOS - если на входе - файл и, если все биты записи

QNX отсутствуют, то устанавливается бит READ_ONLY

Преобразование битов доступа

Используется следующая логика, чтобы преобразовать биты досту-

- 97 -

па из DOS в QNX:

- в QNX устанавливается бит "чтение" для пользователя, группы

и других пользователей;

- если на входе не метка тома и если обращение не только на

чтение, в QNX устанавливается бит разрешения записи для пользовате-

ля, группы и других пользователей;

- если на входе каталог, в QNX устанавливаются биты "каталог"

и "выполняемый" для пользователя, группы и других пользователей;

- если на входе файл, в QNX устанавливается бит "регулярный

файл".

ВНИМАНИЕ. Если файл записывается, в DOS устанавливается бит

"архивный". Если Dosfsys стартовала с опцией -e,

все файлы и каталоги DOS будут иметь в QNX бит "вы-

полняемый", установленный для группы/владельца/дру-

гих пользователей.

8.3.11. Владелец файла

Хотя файловая система DOS не поддерживает идентификаторы поль-

зователя и группы, Dosfsys не возвращает код ошибки, если была сде-

лана попытка изменить ID группы или ID пользователя утилитой chown

или библиотечной функцией chown(). Поэтому много утилит, использую-

щих библиотечную функцию chown(), которая могла бы в результате

дать много сообщений об ошибке, работают без выдачи ошибок. Все

файлы под Dosfsys, принадлежащие суперпользователю (uid=0, gro-

up=0), доступны всем.

8.3.12. Завершение Dosfsys

Опция -x завершает работу сервера Dosfsys. Если Вы задаете

-x, никакие новые запросы open() приниматься не будут, и сервер

закрывает все активные файлы (то есть файлы, которые все еще оста-

ются открытыми).

8.3.13. Коды ошибок, возвращаемые Dosfsys

Если запрос, сделанный приложением, не поддерживается Dosfsys,

возвращается код ошибки EOPNOTSUPP. Примеры запросов, не поддержи-

ваемые Dosfsys, приведены ниже:

- 98 -

LINK

BLOCK_READ

BLOCK_WRITE

MOUNT_PARTITION

MOUNT_RAMDISK

PIPE

DISK_GET_ENTRY

RECORD LOCKING

SYMBOLIC LINK

Если Dosfsys обнаружит искажения файловой системы, он возвра-

щает код EBADFSYS, после чего Вы можете выполнить утилиту CHKDSK

под DOS, чтобы скорректировать искажения. Структура файловой систе-

мы DOS такая, что размер корневого каталога фиксируется во время

форматирования и не может меняться. Если корневой каталог перепол-

няется, выдается ошибка (ENOSPC).

.

- 99 -