Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Eugene Grosbein                      2:5006/1       21 Apr 2007  14:40:57
 To : Vlad Gnatov
 Subject : Re: копирование
 -------------------------------------------------------------------------------- 
 
 20 апр 2007, пятница, в 13:15 KRAST, Vlad Gnatov написал(а):
 
  EG>>>>> Оно в настоящее время неживое по нескольким причинам:
  EG>>>>> 1. Дистфайл от версии 1.0 (что в портах) не скачивается.
  EG>>>>> 2. Версия 1.417, что скачивается - требует удаления всех патчей из
  EG>>>>> files/ (интегрированы).
  EG>>>>> 3. Версия 1.417 не собирается.
  EG>>>> Точнее, собирается, если один патч все-таки оставить, не все
  EG>>>> интегрировано.
  EG>> Хм, это я слишком много патчей поудалял, нифига оно там не интегрировано.
  EG>> Hо видимо, патчей еще надо написать, 1.417 все равно не работает.
  VG> 1.0 работает. Hайдите distfile в гугле.
  VG> Тормоза на запись космические. Чтение нормально.
 
 Я сделал по-другому. Обновил таки порт до 1.417, добавив недостающий
 патч (PR: ports/111979). Заодно порт ставит симлинк mount_ntfs-3g.
 Кроме того, пропатчил mount(8) (PR: bin/111978), чтобы ему можно
 было задавать путь для поиска команд mount_XXX переменной среды SYSPATH
 (сейчас путь поиска жестко вкомпилирован, /sbin:/usr/sbin).
 
 Теперь можно делать так:
 export SYSPATH=/sbin:/usr/sbin:/usr/local/sbin
 mount -t ntfs-3g /dev/ad6s4 /dos/g
 
 Если хочется иметь возможность в /etc/fstab вставлять монтирование
 ntfs-3g, чтобы монтировало при загрузке (и не хочется отдельные
 скрипты для этого в rc.d совать), нужно еще:
 
 - обеспечить нужный SYSPATH при загрузке; это можно было бы 
   сделать при помощи /etc/login.conf, для /etc/rc и запускаемых из него
   команд init'ом используется login class daemon, пишем в login.conf:
 
 daemon:\
         :setenv=SYSPATH=/sbin\c/usr/sbin\c/usr/local/sbin:\
         :tc=default:
 
   К сожалению, init из ресурсов login.conf выставляет только приоритет
   и лимиты на ресурсы, поэтому нужен патч, чтобы еще переменные выставлял:
 
 - --- init.c.orig  Sat Apr 21 14:35:55 2007
 +++ init.c Sat Apr 21 14:36:04 2007
 @@ -1640,7 +1640,7 @@
  {
    login_cap_t *lc;
    if ((lc = login_getclassbyname(cname, NULL)) != NULL) {
 -     setusercontext(lc, (struct passwd*)NULL, 0,
 LOGIN_SETPRIORITY|LOGIN_SETRESOURCES);
 +     setusercontext(lc, (struct passwd*)NULL, 0,
 LOGIN_SETPRIORITY|LOGIN_SETRESOURCES|LOGIN_SETENV);
       login_close(lc);
    }
  }
 
   Теперь SYSPATH будет выставлен; возможно, есть менее напряжный способ?
 
 - в момент запуска mount -t ntfs-3g нужно, чтобы был уже подгружен
   ядерный модуль fuse.ko, который портом устанавливается в /usr/local/modules,
   что в общем-то верно, но означает, что при старте загрузчика файловая
   система с модулем может быть еще недоступна. Поэтому в /etc/fstab
   нужно использовать флаг late:
 
 /dev/ad6s4  /dos/g  ntfs-3g  rw,late 0 0
 
   Таким образом, откладываем монтирование на более поздний этап загрузки,
   для этого надо еще пропатчить /usr/local/etc/rc.d/fusefs:
 
 - --- fusefs.orig  Sat Apr 21 15:28:39 2007
 +++ fusefs Sat Apr 21 15:04:42 2007
 @@ -4,6 +4,7 @@
  #
  # PROVIDE: fusefs
  # REQUIRE: sysctl
 +# BEFORE:  mountlate
  # KEYWORD: shutdown
  #
  # Add the following lines to /etc/rc.conf.local or /etc/rc.conf
 
 - mount(8) теперь будет находить mount_ntfs-3g, но тот хочет, чтобы
   mount_fusefs был в каталоге, указанном в PATH обязательно.
   Вообще-то надо чинить fusefs-libs, но по-быстрому сделал тупой
   патч на /etc/rc.d/mountlate:
 
 - --- mountlate.orig  Sat Apr 21 15:31:01 2007
 +++ mountlate  Sat Apr 21 14:58:27 2007
 @@ -18,7 +18,7 @@
  {
    # Mount "late" filesystems.
    echo -n 'Mounting late file systems:'
 -  mount -a -l
 +  PATH=$PATH:/usr/local/sbin mount -a -l
    echo '.'
  
    case $? in
 
 Теперь все работает:
 - init выставляет SYSPATH перед стартом /etc/rc
 - rcorder сначала монтирует основные файловые системы
   и поднимает сеть (/usr/local может быть и на NFS),
   уже потом запускает /usr/local/etc/rc.d/fusefs, который подгружает
   ядерный модуль (опять же, быть может с NFS)
 - mountlate запускает mount, который через SYSPATH находит mount_ntfs-3g,
   который через PATH находит mount_fusefs (это место надо бы переделать)
   и благополучно монтирует NTFS.
 
 Монтирует в sync (по-другому, видимо, не умеет).
 Скорость записи на 1.417 порядка 400-440 Kb/s, это уже с кешированием
 при помощи team. systat -vm 1 показывает, что диск загружен на 96%
 и обрабатывает 1200-1500 транзакций в секунду. Процессор 90% idle.
 Что он там делает - черт его знает.
 
 Eugene
 -- 
 Детям нельзя в интернет. От детей интернет тупеет.
 --- slrn/0.9.8.0 (FreeBSD)
  * Origin: Svyaz Service JSC (2:5006/1@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: копирование   Eugene Grosbein   21 Apr 2007 14:40:57 
Архивное /ru.unix.bsd/26093e550984f.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional