То, чего нет в LSK-help

Описываемые тут команды не присутствут в help по очень простой причине - они относятся к области системного администрирования и требуют некоторого введения для тех, кто ранее с UNIX дела не имел.

Управление файловыми системами. mount/umount

Q:
После старта LSK "видит" только тот FAT-раздел, на который она устанавливалась. Можно ли получить доступ к другим разделам, возможно, не FAT?

Конечно. Для этого сначала нужно уяснить, как обозначаются разделы винчестера в Linux. Мнемоника может показаться непривычной, но проста и логична. Первый IDE (а можно подключить и SCSI) диск у нас будет hda, второй - hdb и так далее (hdc...). Разделы на винчестере именуются так: основные - это с 1 по 4, расширенные - с 5 (6, 7 и так далее - сколько есть, у меня счет доходит до 11 :-). Причем для основных разделов важно понять, что номер зависит не от числа вообще, а от конкретной позиции в таблице MBR, где имеется место для 4 записей. Например, для MBR такого вида имеем:

+----+------+-----+-----+-----+----+----+----+-------+
|Boot|System|Start|Begin|Begin|End |End |End |Size   |
|flag|  Id  | head| sec | cyl |head|sec |cyl |sec    |
+----+------+-----+-----+-----+----+----+----+-------+
|   0|     6|    1|    1|    0|   9|  17| 549|  93483| hda1
|  80|    83|    0|    1|  567|   9|  17| 868|  51340| hda2
|   0|     0|    0|    0|    0|   0|   0|   0|      0| hda3
|   0|     5|    0|    1|  550|   9|  17| 566|   2890| hda4
+----+------+-----+-----+-----+----+----+----+-------+

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

Чтобы посмотреть на свой винчестер глазами Linux, достаточно сказать 'fdisk -l' (по-умолчанию будет показан первый диск, для второго и последующий надо указать параметр /dev/hdb и т.д.)

Для того, чтобы продвинуться дальше, нужно сначала разобраться с очень специальными файлами - файлами устройств, которые находятся в каталоге /dev и про которые сказал нам fdisk (/dev/hda1, ...). Что же в них особенного? Ну, например, команда такого вида отправит файл filename на принтер:

$ cat filename > /dev/lp1
$

Т.е. получается, что каждое доступное устройство присутствует как некий файл в каталоге /dev . Но, если мы туда заглянем, то окажеться, что файлов там что-то очень уж много. Явно больше, чем устройств в самом навороченном компьютере. В чем тут дело? Разобраться нам поможет команда такого вида:

$ ls -l /dev/cua0
crw-rw-rw-   1 root     uucp       5,  64 Nov 30  1998 /dev/cua0
$

Значит, это все-таки файл, но первый симол в первой колонке ('c' в crw-rw-rw-) как раз и показывает, что этот файл особенный: для обычных файлов первый символ '-', для каталогов 'd', а вот 'c' говорит системе о том, что cua0 - это символьное устройство (вроде консоли или последовательного порта) типа 5 с номером 64. Для блочных устройств (например, дисковых накопителей) первый символ 'b'.

Таким образом, /dev - это что-то вроде телефонного справочника, в котором против каждой фамилии находятся некие загадочные (для пользователя, не ядра) номера. Сходство тем большее, что часть ядра, которая превращает запрос к устройству с именем, положим, /dev/tty в вызов драйвера консоли, так и называется - коммутатор, где тип устройства определяет выбор драйвера.

Типы устройств пронумерованы, т.е. тип определяет номер строки во внутренней системной таблице установленных драйверов устройств. Номер устройства передается драйверу в качестве параметра, так как в ОС UNIX драйверы спроектированы в расчете на обслуживание нескольких устройств одного типа.

Таким образом, в большом количестве файлов каталога /dev нет ничего странного - как и всякий справочник, он должен быть на все случаи. Если же чего всеж не хватает, то лекарство - mknode, которая создаст файл устройства с требуемыми именем и атрибутами.

Вооружившись такой информацией, мы теперь смело можем воспользоваться командой mount.

Монтирование и размонтирование.

Для того, чтобы можно было использовать раздел на дисковом накопителе, его (точнее, файловую систему, которая расположена на нем) нужно смонтировать. Операция монтирования заключается в следующем: в корневой файловой системе выбирается некоторый существующий каталог, в данном примере - каталог /mnt.

После выполнения монтирования выбранный каталог /mnt становится корневым каталогом добавленной файловой системы. Через этот каталог смонтированная файловая система подсоединяется как поддерево к общему дереву. При этом нет логической разницы между основной и монтированными файловыми системами.

$ mount /dev/hda2 /mnt
$

Команда mount требует двух аргументов. Первый - это имя файла устройства, соответствующее разделу, содержащему монтируемую файловую систему. Второй - это каталог, под которым будет смонтирована файловая система (еще это называется "mount point").

"Точка монтирования" (каталог) может быть не пустым, но он обязательно должен существовать. Файлы, которые находились в этом каталоге, никуда не исчезнут, а просто станут недоступны до отключения смонтированной файловой системы командой umount:

$ umount /mnt
$
Корневая директория монтируемой файловой системы появится вместо старого старого содержимого /mnt.

Linux поддерживает файловые системы многих типов. Как пример, для монтирования MS-DOS дискеты используется следующая команда, где с помощью ключа -t указывается тип файловой системы (хотя современные ядра обычно самостоятельно определяют его, все же бывает нужно уточнить, к примеру, какую разновидность FAT вы имеете ввиду - vfat, umsdos или традиционный fat):

$ mount -t msdos /dev/fd0 /floppy
$

Чтобы выяснить, какие файловые системы поддерживаются в данный момент, нужно заглянуть в файл /proc/filesystems:

$ cat /proc/filesystems
         ext2
         msdos
         vfat
  nodev  proc
$

Почему я говорю в "данный момент"? Дело в том, что Linux поддерживает динамически загружаемые (и выгружаемые) драйверы - модули, в том числе и файловых систем. Например, для LSK можно загрузить драйвер NTFS и подключить ее (пока - только на чтение):

$ cd /lib/modules
$ insmod ntfs.o
$ mount /dev/hda7 -t ntfs /mnt

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

$ umount /mnt
$

Монтирование можно выполнять группой. Для этого служит файл /etc/fstab (описан далее) и ключ -a.

Если монтируется устройство, такое как CD-ROM, то указывается ключ "только для чтения" ( -r).

Монтирование и размонтирование требуют привилегий суперпользователя (по понятным причинам), но как быть простому пользователю, если ему нужно нечто на дискете? Есть несколько возможностей:

Например, так:

/dev/fd0            /floppy      msdos   user,noauto      0     0

Здесь колонки:

noauto говорит, что при выполнении mount с ключом -a (auto) устройство реально смонтирвано не будет, но ВСЕГДА и ВСЕ смогут сделать это:

$ mount /floppy
$

Если нужен доступ к разным типам файловых систем, можно сделать так:

/dev/fd0    /dosfloppy    msdos   user,noauto  0  0
/dev/fd0    /ext2floppy   ext2    user,noauto  0  0