mntf Монтирование и размонтирование гибкого диска
НАЗНАЧЕНИЕ
Монтирует и размонтирует устройство гибкого диска в каталоге как
файловую систему с возможностью записи/чтения или только чтения.
ФОРМАТ ВЫЗОВА
mntf [-d] [-h] [-l] [-r] [-s]
Опции:
-d размонтирование гибкого диска из корневой
файловой системы
-h использование устройства с высокой плотностью
записи (а не с низкой)
-1 использование устройства 1, а не устройства 0
-r монтирование гибкого устройства как файловой
системы с возможностью только чтения
-s использование имен устройств, принятых в System V
По умолчанию выполняется монтирование гибкого диска 0 в каталог
/mnt.
ПРИМЕР ВЫЗОВА
mntf -d -1
Размонтирование гибкого диска на устройстве 1.
ТЕКСТ ПРОГРАММЫ
1 :
2 # @(#) mntf v1.0 Mount floppies Author: Russ Sage
Монтирование гибких дисков
4 CMD="/etc/mount"
5 DIR="/mnt"
6 DRIVE="0"
7 DENSITY="48ds9"
8 SYSTEM="xenix"
10 if [ $# -gt 0 ]
11 then for ARG in $*
12 do
13 case $ARG in
14 -d) CMD="/etc/umount"
15 DIR="";;
16 -h) DENSITY="96ds15";;
17 -1) DRIVE="1"
18 if [ -d /mnt1 ]
19 then DIR="/mnt1"
20 else echo "the directory /mnt1 does not exist" >&2
нет каталога /mnt1
21 echo "using the directory /mnt instead" >&2
используется каталог /mnt
22 fi;;
23 -r) DIR="$DIR -r";;
24 -s) SYSTEM="sysv";;
25 *) echo "mntf: invalid argument $ARG" >&2
26 echo "usage: mntf [-d] [-h] [-1] [-r] [-s]" >&2
27 echo " -d dismount" >&2
28 echo " -h high density" >&2
29 echo " -1 use drive 1" >&2
30 echo " -r read only" >&2
31 echo " -s System V device" >&2
32 echo " default: mount XENIX drive 0 48 tpi to " >&2
33 echo " /mnt as a read/write filesystem" >&2
34 exit 1;;
35 esac
36 done
37 fi
39 case $SYSTEM in
40 sysv) $CMD /dev/fp${DRIVE}21 $DIR;;
41 xenix) $CMD /dev/fd${DRIVE}${DENSITY} $DIR;;
42 esac
ПЕРЕМЕННЫЕ СРЕДЫ ВЫПОЛНЕНИЯ
CMD Основная команда, подлежащая выполнению
DIR Каталог, в котором производится монтирование устройства
DENSITY Плотность записи в виде, указанном в имени устройства
DRIVE Номер устройства, начиная с 0
SYSTEM Тип имени устройства, принятый в UNIX'е
ОПИСАНИЕ
ЗАЧЕМ НАМ НУЖЕН КОМАНДНЫЙ ФАЙЛ mntf?
В машинах с гибким диском это устройство часто используется в
повседневных операциях. Оно применяется в качестве источника при
инсталляции системы и как обычный носитель для операций копирования.
Гибкие диски можно использовать в системе UNIX двумя способами.
Первый является неструктурированной последовательностью байтов, что
полезно для копирования магнитных лент и хранения архивов. Второй
способ - поблочный, ориентирован на поддержку файловой структуры. Для
второго способа существует мощная поддержка на уровне файловой систе-
мы, но некоторые функции мы должны реализовать самостоятельно.
Для того чтобы использовать гибкий диск как файловую систему в
UNIX, вам необходимо подготовить диск и смонтировать его как файловую
систему. Когда вы закончите работу, вы должны размонтировать гибкий
диск. Это отличается от системы DOS, в которой гибкие диски можно
вставлять и вынимать когда угодно, если только в этот момент на них не
идет запись.
Поскольку использование гибких дисков включает в себя взаимосвя-
занные шаги монтирования и размонтирования, то было бы вполне естест-
венным применять одну команду с соответствующими опциями для выполне-
ния монтирования и размонтирования. Однако UNIX так не делает. Наш ко-
мандный файл mntf объединяет эти две функции в одной команде для упро-
щения работы с гибким диском. Для того чтобы сделать нашу программу
более независимой, мы предусмотрели в ней поддержку устройств системы
XENIX наравне с устройствами System V. (Системы Berkeley (BSD) не так
часто используют гибкие диски, поэтому мы не пытались иметь с ними де-
ло.)
ЧТО ДЕЛАЕТ mntf?
Эта программа обеспечивает поддержку всех возможностей для монти-
рования и размонтирования гибких дисков. Она предоставляет все опции,
необходимые команде mount, акцентирует внимание на тех аспектах файло-
вой системы, которые относятся к гибким дискам, и уменьшает количество
нажатий на клавиши, необходимых для выполнения этой работы.
Действие программы по умолчанию заключается в монтировании гибко-
го диска низкой плотности записи, находящегося в устройстве 0, в ката-
лог /mnt. Имеется много опций, чтобы попросить программу mntf сделать
то, что вам нужно. Опция -h поддерживает диск высокой плотности (1.2
Мб). В машинах PC AT первое из устройств гибких дисков имеет 96 доро-
жек на дюйм, объем 1.2 мегабайта, но может также читать и писать гиб-
кие диски с более низкой плотностью. Второй гибкий диск является уст-
ройством низкой плотности с 48 дорожками на дюйм и объемом 360 кило-
байт.
Опция -1 (цифра один, а не буква l) выполняет монтирование гибко-
го диска в устройстве 1, а не 0. Опция -r монтирует файловую систему с
возможностью ТОЛЬКО ЧТЕНИЯ. Для РАЗМОНТИРОВАНИЯ диска вместо монтиро-
вания используется опция -d. Если применяется опция -s, имя устройства
изменяется таким образом, чтобы оно соответствовало системе System V,
а не XENIX. Это незначительная проблема, поскольку схемы именования не
очень отличаются. Данная программа создана для системы XENIX и обеспе-
чивает наилучшие возможности именно в ней.
Не все опции совместимы друг с другом, но проверка на совмести-
мость не выполняется. Например, команда "mntf -d -r" пытается размон-
тировать файловую систему с возможностью только чтения, а команда UNIX
unmount, которая выполняет эту операцию, отбрасывает ее, выдавая сооб-
щение об ошибке. В целях упрощения мы отказались от проверки соот-
ветствия опций, а вместо этого предоставили UNIX'у право выдавать
сообщения об ошибках для информирования пользователя о возникших проб-
лемах. Если вы хотите, чтобы эту программу мог применять относительно
неопытный пользователь, вам нужно вставить в нее выполнение таких про-
верок.
ПРИМЕРЫ
1. $ mntf -s
Монтирование гибкого диска как файловой системы с возможностью
записи-чтения и с использованием имен устройств, принятых в System V.
2. $ mntf -h -1 -r
Монтирование гибкого диска высокой плотности записи на устройстве
1 как файловой системы с возможностью только чтения и с использованием
формата имен устройств, принятого в XENIX. Эта команда должна закон-
читься неудачей (устройство 1 имеет низкую плотность).
3. $ mntf -d -h
Размонтирование файловой системы на устройстве 0 с высокой плот-
ностью записи и с использованием имен устройств, принятых в XENIX.
ПОЯСНЕНИЯ
Для того чтобы максимально упростить программу, все фактически
выполняемые команды помещены в текстовые строки. Это позволяет достичь
большей гибкости при написании программы. Результатом анализа команд-
ной строки является формирование команды, которая выполняется в конце
программы mntf.
В строках 4-8 инициализируются установки по умолчанию. Переменная
CMD содержит команду UNIX, которая в итоге должна быть выполнена, по
умолчанию это команда mount. Переменная DIR указывает каталог, в кото-
рый должно быть смонтировано устройство, по умолчанию это каталог
/mnt. Переменная DRIVE является номером устройства (по умолчанию 0) и
используется для формирования корректного имени устройства. Переменная
DENSITY по умолчанию установлена для носителя низкой плотности, т.е.
48 дорожек на дюйм, двусторонняя дискета с 9 секторами на дорожку
(48ds9).
В строке 10 проверяется, указаны ли в командной строке какие-либо
аргументы. Если количество аргументов больше нуля, последовательно
проверяется каждый аргумент. Если какой-либо из аргументов соот-
ветствует образцам в строках 13-35, то он изменяет содержимое команд-
ной строки.
Строка 14 управляет опцией -d для размонтирования гибкого диска.
Переменная CMD изменяется на umount вместо mount. После этого перемен-
ной DIR присваивается нулевое значение, поскольку команде umount тре-
буется не каталог, а только имя устройства. Переменная DIR должна быть
частью строки с командой для того, чтобы мы могли использовать одну и
ту же "заготовленную" командную строку для всех вариантов. В данном
случае мы устанавливаем эту переменную в нуль, а shell при синтакси-
ческом разборе удаляет ее из командной строки.
В строке 16 выполняется изменение плотности записи используемого
носителя. Обращение к различным типам носителей выполняется по именам
файлов устройств. Каждое имя указывает драйвер устройства, который ра-
основанную на утилите at, и возможность запуска еще одного командного
жет работать в режимах как высокой, так и низкой плотности записи. Од-
нако если вы укажете имя устройства с высокой плотностью записи, а на
самом деле оно имеет низкую плотность, то драйвер работать не будет
из-за ошибок чтения.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ ОБ ИМЕНАХ УСТРОЙСТВ
Ниже приводится список, полученный командой ls в каталоге dev для
машины XT, в которой нет устройств высокой плотности записи. Этот
список позволяет проиллюстрировать, каким образом осуществляется обра-
щение к именам устройств:
---------------------------------------------------------------------------
|
| 32 brw-rw-rw- 3 bin bin 2, 4 Jun 25 09:25 /dev/fd0
| 32 brw-rw-rw- 3 bin bin 2, 4 Jun 25 09:25 /dev/fd048
| 126 brw-rw-rw- 1 root root 2, 12 Feb 18 17:09 /dev/fd048ds8
| 32 brw-rw-rw- 3 bin bin 2, 4 Jun 25 09:25 /dev/fd048ds9
| 125 brw-rw-rw- 1 root root 2, 8 Feb 18 17:09 /dev/fd048ss8
| 127 brw-rw-rw- 1 root root 2, 0 Feb 18 17:09 /dev/fd048ss9
| 131 brw-rw-rw- 3 root root 2, 5 Feb 18 17:09 /dev/fd1
| 131 brw-rw-rw- 3 root root 2, 5 Feb 18 17:09 /dev/fd148
| 129 brw-rw-rw- 1 root root 2, 13 Feb 18 17:09 /dev/fd148ds8
| 131 brw-rw-rw- 3 root root 2, 5 Feb 18 17:09 /dev/fd148ds9
| 128 brw-rw-rw- 1 root root 2, 9 Feb 18 17:09 /dev/fd148ss8
| 130 brw-rw-rw- 1 root root 2, 1 Feb 18 17:09 /dev/fd148ss9
|
Крайнее слева число представляет собой номер индексного дескрип-
тора. Мы используем его как ссылку для определения уникального имени
файла. Как мы уже отмечали ранее, несколько имен устройств могут от-
носиться к одному и тому же файлу, рассматриваемому с различных точек
зрения. Например, в данном списке вы видите, что три устройства имеют
индексный дескриптор 32. Второе число слева представляет собой коли-
чество связей. Когда оно больше единицы, то это также указывает, что
несколько устройств являются на самом деле одним файлом, а следова-
тельно используют один и тот же индексный дескриптор. Следующие два
числа являются старшим и младшим номером. Старший номер относится к
драйверу устройства, а младший является уникальным номером одного из
устройств, управляемых одним и тем же драйвером.
Большинство из этих имен устройств соответствуют определенному
шаблону. Они состоят из символов fd (floppy disk - гибкий диск), цифры
0 или 1 (номер устройства), числа 48 (плотность, выраженная в виде ко-