Вследствии неопределенности правового статуса для использования драйверов для доступа к "родным" разделам Windows'2k/XP - NTFS, их поддержка обычно не включается в дистрибутивы Linux, хотя, начиная с версии 2.0.х, в ядро Linux такая возможность включена. Чтобы воспользоваться этой возможностью требуется перекомпиляция ядра, что является довольно нетривиальной задачей. Можно пойти немного другим путем - подключить соответствующие драйверы. Рассмотрим все по порядку.
Для начала, посмотрим файл /proc/filesystems, который содержит список всех файловых систем, понимаемых ядром, набрав команду cat /proc/filesystems. Если вы не увидите строчки ntfs, то посмотрите можно ли подключить модуль NTFS, набрав команду
modprobe ntfs. Если вы получите сообщение: "modprobe: Can't locate module ntfs", то модуль поддержки NTFS не включен. Что ж поправим.
Включение поддержки NTFS перекомпиляцией ядра
Если вас не пугают неизбежные сложности с перекомпиляцией ядра, тогда с сайта
http://prdownloads.sourceforge.net/linux-ntfs/linux-2.4.19-ntfs-2.1.0a.patch
качаем патч с изменениями. Патчи выпускаются на каждый официальный релиз
ядра Linux. Распаковав исходники ядра, перейдите в директорию с исходниками и выполните команду:
patch -p1 < path/to/patchname, где
path/to/ - путь к патч файлу
patchname - имя патч файла
Эта операция модифицирует ядро, после чего останется только его сконфигурировать, включив поддержку NTFS и скомпилировать.
Включение поддержки NTFS при помощи драйверов
Включение поддержки NTFS при помощи драйверов менее сложно. Итак, приступим. Рассмотрение проведем на примере дистрибутива RedHat. Определимся с релизом, набрав следующую команду: cat /etc/redhat-release. В ответ получим одну из следующих строк:
Red Hat Linux release 7.3 (Valhalla)
Red Hat Linux release 8.0 (Psyche)
Далее определимся с версией ядра: uname -r Возможны следующие варианты ответа системы:
2.4.18-3
2.4.18-10
2.4.18-14
2.4.18-17.7.x
2.4.18-17.8.0
2.4.18-18.7.x
2.4.18-18.8.0
Наконец, нужно знать какой у Вас процессор и их количество. Это достигается при помощи следующей команды: cat
/proc/cpuinfo. Но эту информацию вы, вероятно, знаете и так.
Теперь, в зависимости от полученных данных, скачивается соответствующий драйвер с сайта
http://prdownloads.sf.net/linux-ntfs/. Структура названия требуемого файла следующая -
kernel-ntfs-2.4.18-14.i686.rpm, где: 2.4.18-14 - версия ядра (если сразу после цифр версии ядра стоит smp, то это для многопроцессорной версии),
i686 - процессорная группа.
Вы должны войти в систему как root, чтобы продолжить установку. Набираем
rpm -uhv kernel-ntfs-2.4.18-14.i686.rpm
На экране видим следующее:
Preparing... ####################### [100%]
1:kernel-ntfs ###################### [100%]
Это единственная команда, которая действительно необходима, но мы пойдем далее и посмотрим, что же получилось. В зависимости от версии ядра вводимые вами команды могут незначительно отличаться.
Загружаем модуль ядра modprobe ntfs, здесь ничего не должно выводиться, кроме сообщений об ошибках . Далее - dmesg | grep NTFS и:
NTFS driver v1.1.22 [Flags: R/O MODULE]
Теперь мы можем проверить, что ядро действительно понимает NTFS:
cat /proc/filesystems. Дальнейший вывод уже может отличаться очень сильно, но для нас важно, чтобы присутствовала строка ntfs
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev tmpfs
nodev shm
nodev pipefs
ext3
ext2
nodev ramfs
nodev devpts
ntfs
Наконец-то можно монтировать файловую систему. Для этого вам необходимо знать где физически размещается NTFS раздел. Это определяется командой fdisk -l, которая выведет таблицу разделов.
...
По умолчанию только пользователь с правами root может читать из смонтированного раздела. Для изменения разрешений, следует воспользоваться дополнительными опциями "uid" и "gid", например, так:
mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0227,uid=flatcap,gid=winuser
ls -l /mnt/windows
...
Надеюсь, у вас все заработало.
Доступ к FAT32 разделам
Доступ к FAT32 разделам реализовать несколько проще. Сначала определим, как Linux называет наши разделы. В Linux имена не-SCSI винчестеров распределяются так: hda - Primary Master, hdb -Primary Slave, hdc - Secondary Master и hdd - Secondary Slave. SCSI диски именуются в порядке обнаружения как sda, sdb и так далее. Номер в каждом идентификаторе - это порядковый номер какой - либо файловой системы в пределах данного винчестера. Также при помощи команды fdisk -l -x /dev/hda можно вывести таблицу разделов:
Device Boot Start End Blocks Id System
/dev/hda1 * 1 255 2048256 b Win95 FAT32
/dev/hda2 256 2491 17960670 f Win95 Ext'd (LBA)
/dev/hda5 256 2108 14884191 b Win95 FAT32
/dev/hda6 2453 2491 313236 82 Linux swap
/dev/hda7 2109 2452 2763148+ 83 Linux
В приведенном примере один физический диск, на котором раздел "dev/hda1" в терминологии Linux - это раздел C для Windows, а в расширенном разделе "/dev/hda2" размещены "/dev/hda5" -раздел D для Windows, а также разделы Linux "/dev/hda6" и
"/dev/hda7".
Теперь, зная как из Linux видны разделы, отредактируем файл "/etc/fstab", добавив в него следующие строки:
/dev/hda1 /mnt/wfat32_c/ vfat conv=b,iocharset=koi8-r,rw 0 0
/dev/hda5 /mnt/wfat32_d/ vfat conv=b,iocharset=koi8-r,rw 0 0
И, наконец, заходим в директорию "/mnt" и создаём директории "wfat32_c" и "wfat32_d". После перезагрузки ("reboot") в директории "/mnt/wfat32_c/" вы увидите ваш диск C из Windows.
Вместо заключения.
Теперь у вас будут доступны все разделы винчестера, только, на мой взгляд, работать нужно в родных. А возможности, описанные в статье использовать только в случае крайней необходимости для считывания или копирования данных в
другие разделы.