Основная информация была взята отсюда.
Как известно, на DNS-313 раздел, используемый под хранение пользовательских данных, имеет тип NTFS. А так как на самом устройстве используется операционная система Linux, то это, по меньшей мере, нелогично, ибо NTFS не является для Линукса «родной» файловой системой. Проявляемые недостатки — неевозможность манипулировать правами доступа (сервер Samba, встроенный в устройство, может лишь регулировать доступ к папке как к сетевому ресурсу), невозможность создания символических ссылок и т.д.
Предлагаемый способ в общих чертах заключается в следующем:
1) Взаимное изменение размеров NTFS-раздела и одного из Ext2-разделов (увеличение Ext2-раздела за счет уменьшения NTFS-раздела).
2) Подмена точек монтирования — устройство выставляет в качестве разделяемого ресурса Ext2-раздел, который ранее имел чисто служебное предназначение
Недостатки способа:
1) При копировании на устройство больших файлов (размером более 500 Мбайт) могут иметь место сбои, влекущие за собой неправильное копирование файлов (потери содержимого), останов штатного Web-сервера, прекращение функционирования служб SSH, Transmission и др., а также утрату функционала аппаратной кнопки. Источники советуют заменить сервер Samba на версию 3.0.28a, но нигде не дают информацию о том, как именно это сделать. Со своей стороны предлагаю вместо копирования больших файлов через Samba копировать их через FTP-сервер.
2) Состояние диска (в том числе отображаемое через штатный Web-сервер и рассылаемое по SMTP) указывается применительно к NTFS-разделу.
Итак, приступим:
Для начала необходимо сделать резервную копию всех данных с NTFS-раздела /mnt/HD_a2 — потому что все будет уничтожено.
Если использовались утилиты FFP, то надо сохранить копию папки /mnt/HD_a4/ffp (а лучше — всего раздела).
Нам еще понадобится вариант утилиты FDISK, отличный от штатного (который глючит) — качаем его отсюда.
Заходим на устройство Telnet’ом (а еще лучше — SSH) от имени root’а.
Помещаем fdisk куда-нибудь (например, в /tmp):
cp /mnt/HD_a2/fdisk /tmp
Выполняем команду:
/tmp/fdisk /dev/sda
Появится приглашение fdisk’а.
Даем команду (каждый раз после ввода команды нужно нажимать клавишу Enter)
p(Enter)
Видим разметку диска:
Удаляем разделы 2 и 4:
d(Enter)
2(Enter)
d(Enter)
4(Enter)
Добавляем новый первичный раздел:
n(Enter)
p(Enter)
2(Enter)
Оставляем предложенный начальный цилиндр
(Enter)
а затем задаем размер создаваемого раздела. Это будет раздел NTFS, и он нам по идее вообще не нужен. Тем не менее, он должен существовать. Кроме того, его можно использовать для передачи данных на устройство при USB-подключении к Windows-компьютеру, который может не уметь работать с Ext2-разделом.
В-общем, я задал размер 500 Мбайт. Думаю, что для практических целей хватит:
500M(Enter)
Затем создаем на оставшемся месте еще один первичный раздел — на нем будут храниться наши данные:
n(Enter)
p(Enter)
Номер раздела уже не спрашивают — ибо это последний (4-й) из максимально возможного числа первичных разделов.
Соглашаемся и с начальным цилиндром, и с предлагаемым размером, нажимая:
(Enter) и еще раз (Enter)
Меняем тип 2-го раздела на NTFS:
t(Enter)
2(Enter)
7(Enter)
сохраняем изменения и выходим из fdisk’а:
w(Enter)
q(Enter)
Теперь выключаем устройство и подсоединяем его через USB к компьютеру с операционной системой Linux (я использовал Ubuntu 8.10). В принципе можно использовать и Windows, но для этого необходимо установить драйвер поддержки файловой системы Ext2, а также программу, способную выполнить форматирование раздела в Ext2.
Под Ubuntu нам понадобится установить недостающие утилиты-модули gparted (редактор-разбивальщик дисков) и набор утилит для работы с NTFS:
sudo apt-get install gparted
sudo apt-get-install ntfsprogs
Запускаем gparted и форматируем на нашем диске (он подключен как USB-устройство) разделы:
2-й — в Ext2
4-й — в NTFS
Здесь надо заметить, что форматирование в Ext2 — процесс чрезвычайно долгий. Мой почти терабайтный раздел (за вычетом трех небольших по объему служебных разделов) форматировался почти полчаса.
Еще будет не вредным задать вновь отформатированным разделам метки:
2-му (который большой и который Ext2) — DATA_BASE
4-му (который маленький и который NTFS) — USER_DATA
Я не знаю, обязательно ли это или необязательно, но хуже не будет — это точно.
Следующая операция (пока еще не отключаем USB-подключение) — создание на новых разделах нескольких файлов:
На NTFS-разделе (в корне) создаем файл fun_plug со следующим содержимым:
#!/bin/sh
#
cp /mnt/HD_a2/remount_disks.sh /
/remount_disks.sh &
Там же создаем еще один файл — remount_disks.sh
#!/bin/sh
while ( [ ! -f /tmp/boot_finished ] )
do
sleep 5
done
sleep 5
kill `pidof smbd`
kill `pidof nmbd`
umount /dev/sda2
umount /dev/sda4
mount -t ext2 /dev/sda4 /mnt/HD_a2
mount -t ufsd /dev/sda2 /mnt/HD_a4
# make sure we can telnet into the device
xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid&
#this is the real fun plug now
/mnt/HD_a2/initialize_environment.sh
smbd -D
nmbd -D
Если мы до начала нашей операции использовали набор утилит FunPlug, то:
1) восстанавливаем из резервной копии папку (вместе с содержимым, естественно) ffp, поместив ее в корень свежеотформатированного раздела Ext2
2) редактируем файл fun_plug, заменив в нем строчку:
FFP_PATH=/mnt/HD_a4/ffp
на строчку:
FFP_PATH=/mnt/HD_a2/ffp
3) переименовываем файл fun_plug в initialize_environment.sh и под этим именем сохраняем его в корне свежеотформатированного раздела Ext2
Теперь можно отключать USB (только сначала отмонтируйте все разделы средствами Ubuntu), выключать устройство, подключать его к сети и запускать.
В принципе, все сразу должно заработать. Возможно также придется отредактировать файл запуска Transmission (/ffp/start/transmission.sh), чтобы он указывал на другой раздел (вместо /mnt/HD_a4 -> /mnt/HD_a2_.
Как было сказано в самом начале, возможны глюки с остановкой части служб.
Лечение такое:
Заходим на устройство через Telnet (теперь он работает всегда благодаря команде в одном из вышеупомянутых файлов) и даем следующие команды:
/web/webs &
fancontrol &
ubutton&
/usr/sbin/HDFullCheck&
/usr/sbin/mailalert&
/usr/sbin/SyncMms&
Но лучше всего, конечно — это перезагрузка устройства:
reboot
Вот, собственно говоря, и все дела.
Удачи всем!
А вот и новость: появилась новая версия Samba, лишенная недостатков, упомянутых в этой статье.
Как и что — читаем здесь.