Пользователь
0,0
рейтинг
22 сентября 2009 в 17:40

Администрирование → Полноценный доступ ко всем Linux-файловым системам в Windows 2000/XP/Vista/7 с помощью coLinux

В данной статье я расскажу вам, как получить практически полноценный доступ для чтения и записи ко всем файловым системам, используемым в Linux (Ext2/3/4, ReiserFS, XFS, JFS, etc) из-под сабжевых операционных систем. Статья является вольным переводом данного руководства, причем написано оно уже довольно давно, но догуглился я до него только сейчас. :)

Что из себя представляет данный способ?
Пожалуй, все слышали о проекте coLinux. Это ядро Linux, портированное и модифицированное для запуска из Windows, включающее в себя драйвер для преобразования системных вызовов Linux в вызовы Windows. Приложения Linux могут запускаться в coLinux без перекомпиляции, при этом потеря производительности приложений не наблюдается.
Мы же будем использовать coLinux-систему как промежуточное звено для доступа к нужным файловым системам. coLinux будет имеет прямой доступ к файловым системам, а из под Windows (здесь и далее — хост-система) они будут доступны при помощи Samba-сервера, настроенного на coLinux-системе (гостевой системе). Связь между гостевой и хост-системами будет осуществлена при помощи виртуального TAP-сетевого адаптера. Совместимость при этом будет практически полная, вплоть до редактирования прав доступа и проч. (естественно, в гостевой системе).

Достоинства и недостатки
Главное достоинство в том, что используется нативный Linux-драйвер файловой системы (так как фактически запущена полная копия Linux, и драйвер работает в этой среде). И поэтому будет осуществляться полный доступ к ФС без багов со стороны Windows, недоделанных, а то и вовсе нереализованных, возможностей Windows-драйверов, и т.д.
Первый недостаток плавно вытекает из достоинства: из-за того, что запущена полная копия Linux со всеми драйверами, сервисами и программами, количество свободных ресурсов хост-системы порой довольно сильно уменьшается, в особенности при обмене файлами.
Второй недостаток заключается в низкой скорости обмена файлами: скорость чтения из файловой системы XFS не превышает в среднем 5 мегабайт в секунду, а скорость записи — 7 (что довольно-таки странно).

Установка и настройка гостевой Linux-системы
  1. Скачиваем ядро coLinux здесь. Устанавливаем, например, в директорию C:\coLinux (далее в статье для примера будет использоваться именно она).
  2. Скачиваем один из образов установленной Linux-системы отсюда. Я предпочел Debian Lenny, и поэтому при предстоящей работе в гостевой системе будут использоваться команды, специфичные для Debian. Распаковать архив с образом нужно в директорию, куда установлен coLinux, в нашем случае C:\coLinux.
  3. Правим конфиг-файл debian-lenny.conf, расположенный в директории coLinux (мы же распаковали архив с образом в нее, так?). Снимаем символ комментирования (#) со строк #mem=256 и #eth1=tuntap
  4. Теперь необходимо прописать в конфиг имена нужных разделов для доступа к ним. Эти имена выглядят как \Device\Harddisk1\Partition2. Самый простой способ найти правильные имена для нужных разделов — это скачать Windows-port утилиты dd и с помощью команды:
    dd --list
    в командной строке Windows с правами администратора (естественно, находясь в каталоге с исполняемым файлом dd) ищем нужные нам имена разделов под словами NT Block Device Objects (малость неудобно, т.к. искать нужные разделы придется по размеру, который, к тому же, дан в байтах).
    Итак, нужные имена мы нашли, теперь необходимо вписать их в конфиг. В конце конфига вписываем строки типа:
    cobdX=\Device\HarddiskY\PartitionZ
    где X — это порядковый номер файла девайса (он будет видет из-под гостевой системы в /dev), начиная с 3, а Y и Z — это номера диска и раздела в его Windows-имени. Например:
    cobd3=\Device\Harddisk1\Partition2
    И так для каждого раздела.
  5. Заходим в свойства виртуального сетевого адаптера «TAP-Win32 Adapter V8 (coLinux)» (в WinXP — Панель управления — Сетевые подключения — ПКМ на адаптере — Свойства — Протокол Интернета (TCP/IP) — Свойства, в WinVista/7 — Панель управления — Центр управления сетями и общим доступом — Изменение параметров адаптера — ПКМ на адаптере — Свойства — Протокол Интернета версии 4 (TCP/IPv4) — Свойства) и выставляем IP-адрес 192.168.37.10 и маску подсети 255.255.255.0. Сохраняем настройки.
  6. Самый долгожданный момент — запуск гостевой системы. :) Запускаем файл debian-lenny.bat из корневой директории coLinux и ждем, пока система полностью загрузится. Заходим в систему с логином root и паролем colinux. Создаем директории — точки монтирования разделов в гостевой системе. Редактируем файл /etc/fstab (с помощью vim или nano, по вкусу) и вписываем туда строчки для описания файловых систем для монтирования, например:
    /dev/cobd3 /mnt/cobd3 xfs defaults 0 0
    Тут все стандартно, отмечу только, что имя файла нужного раздела совпадает со строкой раздела в конфиге coLinux. После сразу монтируем все разделы с помощью команды mount -a.
  7. Настроим виртуальный сетевой адаптер в хост-системе. Для этого добавим в файл /etc/network/interfaces следующие строки:
    auto eth1
    iface eth1 inet static
    address 192.168.37.20
    network 192.168.37.0
    netmask 255.255.255.0
    broadcast 192.168.37.255
    Включаем сетевой интерфейс командой:
    ifup eth1
    Можно тут же пропинговать хост-систему (192.168.37.10), все должно работать без проблем.
  8. Создаем обычного юзера командой adduser (напр. adduser user1) для того, чтобы предотвратить root-доступ к файлам из-под Windows
  9. Устанавливаем SSH- и Samba-серверы в гостевой системе:
    apt-get install openssh-server samba
    В конфиге Samba (/etc/samba/smb.conf) вписываем для каждого смонтированного раздела секцию такого вида:
    [sharename1]
    path=/mnt/cobd3
    users=user1
    read only=no

    Меняем нужные параметры по-нашему. После редактирования файла перезапускаем Samba с помощью команды /etc/init.d/samba reload
  10. Выбираем в контекстном меню на иконке «Мой компьютер» пункт «Подключить сетевой диск...». Прописываем в качестве пути для каждого раздела \\192.168.37.20\имя_шары, где имя шары — это имя, прописанное в квадратных скобках в начале секции конфига Samba.

Ура! Раздел виден, и все успешно читается и пишется (естественно, читается и пишется только туда, где есть соответствующие права).

Прописывание coLinux как сервиса Windows
Осталась одна проблема — coLinux приходится запускать вручную, и при закрытии его консольного окна доступ к дискам исчезает. Решение — прописать coLinux как сервис Windows (который будет работать в фоне) и настроить его автостарт при запуске системы:
  1. В командной строке Windows (с правами администратора) в каталоге coLinux прописываем команду:
    daemon.exe --install-service colinux @debian-lenny.conf
    Тут же и запустим сервис: net start colinux.
  2. Запускаем services.msc (Win+R — services.msc — OK), находим в списке сервисов colinux, дважды щелкаем на него, и в появившемся окне выбираем тип запуска — Автоматически. Сохраняем.

Для доступа к гостевой системе мы будем использовать PuTTY (коннектимся к ip 192.168.37.20).
Напоследок хотелось бы отметить, что этот способ доступа к линуксовым ФС пока является самым лучшим, потому что, как уже я отмечал выше, существующие драйверы пока не могут обеспечить полную совместимость, и, более того, за них нередко требуют деньги.
Олег Мельник @Boten
карма
23,3
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (34)

  • 0
    P.S.: хотелось бы видеть этот пост в «Linux для всех».
    • 0
      Ну так 7 плюсов и переносите (:
      зы блин дурацкая привычка зажимать Ctrl+Enter
  • +3
    Такой способ наверняка где-то пригодится, но для обычного копирования/перемещения удаления файлов с ext2/ext3 разделов в windows хватит и драйвера ext2fsd
    • 0
      Они ext4 не поддерживают. Да и кроме ext4 есть много интересных fs для Linux. Плюс тот же fuse, через который в Windows расшарить можно sshfs. Не… coLinux — отличный способ. Чё-то я вот даже как-то расстроен, что сам о таком не додумался.
    • 0
      Они не только не поддерживают ext4, они еще не поддерживают журналирование в ext3 — то есть фактически монтируют ее как ext2, и совсем не поддерживают Windows7.
      Кроме того, если активно использовать ext2fsd под хорошей нагрузкой (например держать там профили Thunderbird и Firefox) — есть хороший шанс грохнуть раздел (лечится fschk из-под линукса) — случалось дважды, каждый раз занимало примерно с неделю.
  • 0
    В линухе монтирую ntfs через ntfs-3g, а теперь еще и в винде буду монтировать ext3 :) Лепота!
    • –3
      Хотя нафига мне линуксовый раздел если я все храню на ntfs разделе винды. Править конфиги линукса из под винды? *JOKINGLY* :D
      • 0
        Зависит от того, какая основная система :) У меня линукс, соответственно хранить данные на ntfs-3g мне не нужно (у ntfs-3g скорость работы медленнее), а вот иногда из винды обратиться к данным — полезно :)
        • 0
          ntfs-3g это драйвер для работы с ntfs. Как это вы на нем данные храните?
  • +1
    Ух-ты… очень интересная идея!!!
    Но это не предел, нужно идти дальше.
    Мое видение:
    драйвера ФС лежат в ядре, по сути нам незачем все системное окружение. Получаем системку с 2-мя единственными файлами: конфиг маунта и так сказать инит, который будет всего лишь монтировать (точнее предоставлять шлюз) линуксовые диски напрямую в виндовс. Единственная загвоздка — как получить доступ к виндовым сервисам для создания диска, но думаю это не проблема. и coLinux ядро урезать по максимуму. Получаем маленькую систему с небольшими требованиями к ресурсам (точнее будет сказать с меньшими).
    Эх… было б время — взялся бы. Как по мне, задача реально выполнимая и очень интересная…
    • 0
      там есть возможность скачать образ Gentoo. И ножовку в руки.
  • 0
    Спасибо за статью!
    Как раз вчера озаботился подключением ext3 под LVM'ом к windows 7)
    А еще есть IFS, только он на 7ке не работает и с LVM не дружит.
    • 0
      IFS у меня на семерке отлично работает в режиме эмуляции висты, только при перезагрузке разделы не автомонтирует( А вот ext2fsd стабильно уходит в бсод.
      • 0
        Та же проблема. Написал пост о том как решаю.
  • 0
    Мда, зачем такие сложности?.. Пардно, конечно, но я присоединяюсь к zlogr — IFS меня ещё ни разу не подводила (под Win7 не пробовал). Правда, она не использует журнал, но, слава разработчикам ext(k+1), ext2/ext3/ext4 совместимы. Под TotalCommander ещё есть плагин, но я им почти не пользовался, хотя с первого взгляда вроде работает.
    Автору, тем не менее, большое спасибо :) жить не могу без некоторых линуксовых команд, а виртуальную машину ставить влом :)
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        It installs a pure kernel mode file system driver Ext2fs.sys, which actually extends the Windows operating system to include the Ext2 file system. Since it is executed on the same software layer at the Windows NT operating system core like all of the native file system drivers of Windows (for instance NTFS, FASTFAT, or CDFS for Joliet/ISO CD-ROMs), all applications can access directly to Ext2 volumes. Ext2 volumes get drive letters (for instance O:). Files, and directories of an Ext2 volume appear in file dialogs of all applications. There is no need to copy files from or to Ext2 volumes in order to work with them.
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            И? Вы, наверное, хотите попридираться и сказать, что «технология IFS — это не драйвер, а API», а надо было дескать конкретизировать про конкретный проект Ext2 IFS? Или что вы хотите этим сказать?
            Еще раз процитирую: «it installs a pure kernel mode file system driver».
  • 0
    Когда ж они портируют coLinux под x64?
  • –1
    Спасибо: Abort on 64 bit
  • +1
    Первое о чем подумал, еще не дочитав заголовок до конца, — «наконец-то я получу нативную поддержку симпатичных мне ФС без использования колинукса», в то же мгновение я дочитал заголовок :(.
  • 0
    А в каком месте данная штука поддерживает ext4?
    Не так давно нужно было подключить как раз таки ext4 из под Win, выяснилось, что пока никем не поддерживается.
    • –1
      Самым что ни на есть нативным. А та же Ubuntu 9.04, образ которой можно скачать вместо Debian Lenny, вообще «искаропки» ext4 уметь грозится.
  • +1
    А софтверный рейд, слепленный силами mdadm, таким образом можно собрать?
  • 0
    и сильно ли грузит систему постоянно запущенный гостевой линукс? например если играть в «тяжелые» игры это сказывается?
    • 0
      Я разницы не заметил (вин7, 2 гига оперы). Тем более, что мы явно указываем, какой максимум памяти отводится (256 метров в моем примере).
  • +1
    Интересно, но если использовать coLinux только для доступа к ФС (и тем более запускать его как сервис), то по-моему лучше использовать не предпочитаемый дистрибутив, но почти голое ядро, причем еще и облегченное по-максимуму (оставить сеть + драйвера ФС). Также можно попробовать обойтись без самбы вовсе, а из винды доступаться к дискам через ssh (NetDrive'ом например), возможно еще и скорость вырастет.
    • 0
      Доступ через SSH требует зашифровки-расшифровки всех данных. Так что возрастет скорее загрузка процессора. А вот если использовать FTP…
      • 0
        SSH можно заменить на telnet.
  • 0
    Спасибо!!! Очень помогла статья. Всё делал по пунктам, отлично.

    Лишь расскажу о некоторые проблемах с которым довелось встретить мне.

    1. После того как написал apt-get install openssh-server samba ничего не вышло, система сказала, что не может что то там найти, 404 ошибка, нужно было ввести apt-get upgrade, а потом уже эту команду apt-get install openssh-server samb.

    2. Когда нужно было прописывать шары

    [sharename1]
    path=/mnt/cobd3
    users=user1
    read only=no

    В моем случае пришлось сделать что бы было так:

    [global]
    workgroup = WORKGROUP
    server string = eeee
    security = SHARE
    guest account = root

    [download]
    path=/mnt/cobd3
    guest ok = Yes
    guest only = Yes
    writeable = Yes

    Иначе постоянно пропило пароль, пароль вводил, и ничего :(

    помогла статья smb-conf.ru/absolyutnaya-fajlopomojka.html

    Еще раз, большое спасибо!
  • 0
    До чего же лютый костыль О_о
    Я может быть что-то не понимаю, но драйверы юниксовых файловых систем опенсорсные и доступ к дискам есть в Windows DDK, так почему же еще не написали нативных дров под винду? А еще лучше было бы портировать fuse и получить поддержку всех файловых систем.
    • 0
      dokan-dev.github.io может кому будет интересно, аналог FUSE под виндой.
  • 0
    При повторе установки пришлось заменить адреса репозитариев (editor /etc/apt/sources.list):
    ## Debian Lenny base:
    deb http://archive.debian.org/debian/ lenny main non-free contrib
    deb-src http://archive.debian.org/debian/ lenny main non-free contrib

    ## Debian Lenny updates:
    deb http://archive.debian.org/debian/ lenny-updates main non-free contrib
    deb-src http://archive.debian.org/debian/ lenny-updates main non-free contrib

    ## Debian Lenny Security updates:
    deb http://archive.debian.org/debian-security/ lenny/updates main contrib non-free
    deb-src http://archive.debian.org/debian-security/ lenny/updates main contrib non-free

    ## Debian Volatile updates:
    deb http://archive.debian.org/debian-volatile lenny/volatile main contrib non-free
    deb-src http://archive.debian.org/debian-volatile lenny/volatile main contrib non-free

    ## Debian Lenny Backports
    deb http://archive.debian.org/debian-backports lenny-backports main contrib non-free
    deb-src http://archive.debian.org/debian-backports lenny-backports main contrib non-free

    После этого:
    aptitude update
    

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