Учимся читать ntfs

Т.к. до перехода на FreeBSD на машине стояла Win2003 то соответственна вся немалая коллекция фильмов хранилась на ntfs-томах. Переводить все это дело под ufs не было никакого желания.

Для нормальной (чтение и запись) поддержки ntfs существует пакет ntfs-3g. Ставим из портов:

snake-hostel5# cd /usr/ports/
snake-hostel5# make search name='ntfs'
Port:   fusefs-ntfs-1.1004
Path:   /usr/ports/sysutils/fusefs-ntfs
Info:   Mount NTFS partitions (read/write) and disk images
Maint:  alepulver@FreeBSD.org
B-deps: fusefs-libs-2.7.0_1 libtool-1.5.24 libublio-20070103 pkg-config-0.22_1
R-deps: fusefs-kmod-0.3.9.p1_2 fusefs-libs-2.7.0_1 libublio-20070103 pkg-config-0.22_1
WWW:    http://www.ntfs-3g.org/Port:   ntfsprogs-1.13.1_3
Path:   /usr/ports/sysutils/ntfsprogs
Info:   Utilities and library to manipulate NTFS partitions
Maint:  farrokhi@FreeBSD.org
B-deps: libublio-20070103
R-deps: libublio-20070103
WWW:    http://www.linux-ntfs.org/

snake-hostel5#

Нам нужен пакет от fuse. После установки прописываем его в автозагрузку:

snake-hostel5#echo 'fusefs_enable="YES"' >> /etc/rc.conf

и запускаем:

snake-hostel5# /usr/local/etc/rc.d/fusefs start

Монтируем том:

snake-hostel5#ntfs-3g -o rw,locale=ru_RU.KOI8-R /dev/ad0s1 /media

Наступаем на первые грабли – ntfs для именования использует utf-кодировку. А пакет ntfs-3g тоже работает только с utf-8.
Значит, монтируем с utf:

snake-hostel5#ntfs-3g -o rw,locale=ru_RU.UTF-8 /dev/ad0s1 /media

В системной консоли по прежнему кракозябры 🙂 Но т.к. 95% всего времени мы работаем по ssh или samba, то делаем следующее:

 $ ee ~/.login_conf

Добавляем/редактируем:

me:snake:
:charset=UTF-8:
:lang=ru_RU.UTF-8:

Сохраняемся, выходим. В параметрах PuTTY или другого ssh клиента выставляем кодировку по умолчанию: UTF-8.
Коннектимся. Получаем нормально отображаемые русские буквы. (не забудьте при необходимости пересобрать mc с поддержкой utf-8).

Некоторые советуют пересобрать ядро со следующими опциями:

options LIBICONV
options NTFS
options NTFS_ICONV

Но как по мне, что с ними, что без них было одинаково приятно. На моей машине скорость записи на ntfs-том была примерно 20Мбайт/с, чтение – около 50Мбайт. Не ахти конечно, но пойдет 🙂

С добавлением в fstab так же есть небольшие проблемы, потому fuse стартует позже, чем проверяется fstab. Я вышел из положения, добавив в rc.local необходимые команды (синтаксис тот же, что и при монтировании в консоли):

#!/bin/sh
ntfs-3g -o rw,locale=ru_RU.UTF-8 /dev/ad4s1/ /mnt/media0
ntfs-3g -o rw,locale=ru_RU.UTF-8 /dev/ad1s5/ /mnt/media1
ntfs-3g -o rw,locale=ru_RU.UTF-8 /dev/ad0s1/ /mnt/media2
ntfs-3g -o rw,locale=ru_RU.UTF-8 /dev/ad3s5/ /mnt/media3

Leave a Reply