Настройка и работа в Linux
adb5321d

О взаимодействии Linux и Windows


Взаимодействие это имеет два аспекта - на уровне данных и на уровне программ.

Взаимодействие на уровне данных = это просто возможность прочитать из Linux диск (или дисковый раздел) с Windows (любой версии). Что труда не составляет. Для этого нужно только при его (Linux) инсталляции установить поддержку соответствующих файловых систем - FAT, VFAT, FAT32 или NTFS (правда, поддержка последней - ограничена). Ну а далее - возможны варианты.

Можно при необходимости явным образом монтировать дисковый раздел с Windows командой mount dev/had# /точка монтирования

где # - номер раздела (который будет обязательно первым при любом Windows, кроме NT и 2000).

Еще Windows-раздел может монтироваться автоматически при загрузке. Проще всего сделать это на этапе разбиения диска на разделы, предшествующем инсталляции. Для этого достаточно (после создания Linux-разделов) указать точку монтирования для существовавшего ранее Windows-раздела (hda1), например, /mnt/win.

Поступив таким образом, можно в дальнейшем без проблем считывать и записывать данные в Windows-разделе, не выходя за пределы Linux. Правда, столь же легко их и уничтожить знаменитой командой rm с параметром -R. Причем безвозвратно: утилиты DOS-Windows типа UNDELETE или UNERASE в этом случае не помогут.

А потому лучше все же для обмена данными использовать специальный раздел диска под FAT16 или FAT32. Если такого раздела не было предусмотрено перед установкой Windows, его можно создать при инсталляции Linux, воспользовавшись ее программой fdisk - она позволяет создавать разделы для любых поддерживаемых Linux файловых систем. И затем определить для нее точку монтирования.

Правда, ни DOS, ни Windows не поймут, что раздел, созданный fdisk для Linux - их родной FAT16 или FAT32. Но теперь ничего не мешает запустить уже FDISK для DOS/Windows - и превратить этот раздел в окончательный FATхх. Правда, путем уничтожения (FDISK для DOS-Windows определит его как non-DOS partition) и создания на его месте нового. Главное, точка монтирования для него в дереве каталогов Linux уже будет существовать.

Впрочем, если автоматическое монтирование FATxx-раздела при инсталляции Linux определено не было, ничего страшного - эту процедуру можно проделать в любой момент. Путем редактирования файла /etc/fstab, отвечающего за монтирование файловых систем. Для доступа к Windows-разделу достаточно вписать в него строчку вроде /dev/hda1 /mnt/win auto defaults 0 0


Теперь можно не только считывать данные Windows-программ, но и записывать результаты работы в Linux для доступа к ним из Windows. Правда, это верно только в отношении Windows 3.1/95/98. Для Windows NT или 2000, если пользоваться их родной NTFS, возможен только режим чтения. И тип файловой системы в файле fstab следует указывать явно - ntfs (вместо auto).

Кроме того, при копировании из Linux-раздела в FATxx раздел существует еще несколько особенностей. Так, если данные копируются в раздел с FAT16, все имена файлов будут приведены к DOS-стандарту 8.3. И принудительно переведены в верхний регистр. А в случае раздела FAT32 происходит еще забавнее: имена Linux-файлов, случайно совпадающие с форматом DOS (8.3), будут преобразованы в верхний регистр, вне зависимости от того, в каком регистре они были набраны в оригинале. Тогда как имена файлов, содержащие более восьми знаков в имени - сохранят изначальное различие регистров. О причинах этого явления можно прочитать в цитировавшейся ранее статье Виктора Хименко.

Кроме этого, существует пакет mtools, специально предназначенный для работы с файловой системой DOS. Он был создан для работы с дискетами, отформатированными в этой операционной системе. Конечно, из Linux можно смонтировать дискету в DOS-формате и командой cp (или через любой файловый менеджер) записать на нее файлы. Однако в ряде случаев это приводит к ошибкам. Правда, я с проблемами считывания записанных таким образом дискет в DOS/Windows не сталкивался. Но вот записать на нее подчас уже ничего не удается, и всякого рода DiskDoctor'ами она не лечится.

Основу пакета mtools составляет серия команд гибридного вида и синтаксиса. Так, команды cp и copy (Linux и DOS, соответственно) подменяются командой mcopy, используемой, для примера, таким образом - mcopy $HOME/file a:file

где file - имя копируемого файла, причем обязательно в стандарте DOS (то есть 8.3). Работает эта команда с одиночными файлами. Кроме того, существуют команды mread (для копирования файлов DOS в Linux) и mwrite (для копирования файлов Linux в DOS). Они позволяют оперировать группами файлов (но, насколько я понял, не подкаталогами).

В пакете mtools имеются и другие средства работы с файлами, аналогичные таком DOS. Но подробно я на них останавливаться не буду: все же применение этого пакета, при засилии Windows 9x с ее длинными именами, достаточно ограничено.

Зададимся другим вопросом - а решается ли обратная задача, считывание данных из Linux-разделов под Windows? До недавнего времени ответ на него был отрицательным. Поскольку Windows никаких файловых систем, кроме своих собственных (да и то не всех, и не всегда), признавать не желает. Но ныне, как говорится в народе, наметились положительные тенденции в этом направлении. Впрочем, отнюдь не благодаря Windows и ее создателям, а, скорее, вопреки их усилиям.

Перво-наперво, появилась появилась программа Explore2fs Джона Ньюбайджина (John Newbigin, http://uranus.it.swin.edu.au/~jn/linux). Это zip-архив размером чуть больше 300 килобайт, доступный, в частности, на Linux.Freeware.ru (http://linux.freeware.ru). Программа бесплатная (на условиях GPL), позиционируется как экспериментальная версия, однако - почти работоспособна.

Программа Explore2fs не требует инсталляции. После распаковки архива в ней обнаруживается исполнимый модуль, dll-файл, ReadMe, условия копирования и список изменений. Запуск программы приводит к появлению окна, подобного Windows Explorer. В левой его части - обнаруженный Linux-раздел (с префиксом по умолчанию - hd, но, вероятно, можно установить и sd - за отсутствием SCSI-диска проверить не смог), разворачиваемый в дерево каталогов; в правой части - список файлов текущего каталога, настраиваемый так же, как в Windows Explorer (в виде иконок, короткого или длинного списка).

А дальше - все просто. Выбирается требуемый файл или каталог, щелчок правой клавиши мыши - и можно просмотреть его свойства, либо сразу экспортировать в Windows-раздел. Для чего указывается путь. Все. Файл или каталог (включая подкаталоги любой степени вложенности) скопирован и доступен под Windows. Разумеется, те же действия можно проделать и через меню.

Программа не может похвастаться ни рекордным быстродействием, ни чрезмерной стабильностью. Кроме того, если у вас имеется несколько разделов ext2fs, можно только просматривать их содержимое, но скопировать что-либо в Windows-раздел не удается.

С ext2fs разделом можно работать только в режиме чтения. Правда, в меню File присутствуют такие пункты, как New Folder, Rename, Delete, Save as, но работают они только в пределах Windows-раздела. Правда, их присутствие (в неактивизированном виде) и в контекстном меню показывает, что автор предполагает в будущих версиях ввести и режим записи в Linux-разделы из Windows. Поживем - увидим.

В существующей версии настройки (пункт меню View - Options) минимальны. Можно, как говорилось, изменить префикс дискового раздела, задать программу для просмотра текстовых файлов, определить доступ к файлам по паролю (для пользователя и группы), и еще несколько мелочей. Однако и это лучше, чем ничего.

Кроме того, недавно появился пакет ltools, предназначенный для работы с файлами Linux из DOS/Windows. Как можно понять из названия, он задуман как инструмент, параллельный mtools, и обеспечивающий выполнение тех же функций. Это серия утилит командной строки, с помощью которых можно, например, копировать файлы из раздела ext2fs в раздел FATxx, причем и в том случае, если первый - не единственный в системе, в отличие от Explore2fs.

Второй аспект рассматриваемого вопроса - взаимодействие на уровне программ. Необходимость в этом может возникнуть даже в том случае, если вы не используете ни одной программы под DOS/Windows. Например, при обновлении BIOS системной платы: все известные мне производители выпускают утилиты такого назначения только под чистый DOS (хотя, говорят, на современных "мамах" есть средства перепрошивки BIOS без загрузки какой-либо операционки вообще, но мне таких пока видеть не посчастливилось).

Так что если появилась настоятельная потребность сменить BIOS (например, при установке нового большого винчестера в систему, BIOS которой таковых не поддерживает), DOS или Windows истреблены как класс при установке (не зря же сжигали корабли, мосты и прочие транспортные средства!), и под рукой случайно не завалялось хоть какой DOS-машины... Вот тогда-то без запуска DOS-программы (хотя бы одной-единственной) из под Linux не обойтись.

Для этого существует программа dosemu. Запускается она простой и понятной командой - dos. Правда, для этого необходимо иметь права суперпользователя. Этой командой создается нечто вроде виртуальной машины, эмулирующей реальный режим процессоров ix86. Чем-то напоминающий DOS-сессию в Windows или, скорее, OS/2. После запуска программы (это можно сделать и из окна терминала) вы видите черный экран с серией сообщений, завершающихся чем-нибудь вроде: Welcome to FreeDOS (http://www.freedos.org)!



При этом пропадает возможность пролистывания экрана с помощью Shift+PageUp, PageDown, а в окне терминала - также и возможность скроллинга. Зато появляется знакомое до боли приглашение командной строки DOS C:\>

в которой естественном поползновением будет ввести dir /p. Ответом на что будет список проде этого: BOOT BIN 512 12-07-99 10:59a COMMAND COM 41568 12-07-99 10:59a COPYING 18316 5-04-99 11:43a INSTALL BAT 743 5-04-99 11:43a IPL SYS 54928 12-07-99 10:59a KERNEL EXE 68112 12-07-99 10:59a KERNEL SYS 72169 5-04-99 11:43a SYS COM 12344 5-04-99 11:43a VIM-5 3 DIR 12-07-99 11:02a BIN DIR 12-07-99 11:02a DOC DIR 12-07-99 11:02a HELP DIR 12-07-99 11:02a EMACS DIR 12-07-99 11:02a DOSEMU DIR 12-07-99 11:02a AUTOEXEC BAT 99 12-07-99 11:02a CONFIG SYS 94 12-07-99 11:02a EXITEMU COM 292 12-07-99 11:02a 17 file(s) 269177 bytes 7122944 bytes free

в котором можно видеть родные и близкие AUTOEXEC.BAT, CONFIG.SYS и прочие прелести. А перейдя в каталог BIN (командой C:\> cd c:\bin) можно обнаружить основные исполнимые файлы DOS: . DIR 12-07-99 11:02a .. DIR 12-07-99 11:02a ASSIGN COM 13867 12-07-99 11:02a ATTRIB EXE 8609 12-07-99 11:02a BWBASIC EXE 169774 12-07-99 11:02a C_LOCK COM 3834 12-07-99 11:02a CAL COM 900 12-07-99 11:02a CHKDSK EXE 23510 12-07-99 11:02a CHOICE EXE 12510 12-07-99 11:02a CLS EXE 9026 12-07-99 11:02a COMMAND COM 72192 12-07-99 11:02a COMP COM 1285 12-07-99 11:02a COMPINFO EXE 113520 12-07-99 11:02a MCA DAT 24080 12-07-99 11:02a PCI DAT 47824 12-07-99 11:02a COPY EXE 14219 12-07-99 11:02a CTMOUSE COM 8836 12-07-99 11:02a CTMOUSEP COM 7443 12-07-99 11:02a PROTOCOL COM 365 12-07-99 11:02a Strike a key when ready . . .

и так далее. Каковыми и можно воспользоваться обычным для DOS образом.

Разумеется, возможности dosemu не исчерпываются запуском штатных команд DOS. В частности, не составит труда запустить самораспаковывающийся архив, в виде которого обычно распространяются обновления BIOS. Неплохо, конечно, озаботиться загрузочной дискетой DOS. Однако если ее не окажется под рукой - не беда: командой SYS.COM можно создать некое ее подобие. Не знаю, насколько функциональна загруженная с нее система - не проверял, - но запустить перепрограмматор BIOS и успешно провести процедуру его обновления она вполне способна.

А вообще, говорят, dosemu справляется запуском и мощных прикладных программ, вроде WordPerfect, правда, не знаю каких версий: интересно было бы посмотреть, как она поведет себя при запуске графической оболочки старших его версий, или, скажем, Quattro Pro для DOS, которая тоже имела свою оригинальную (и весьма приятную) графическую оболочку. Но всего этого я не проверял, за ненадобностью, и потому с темой эмуляции DOS заканчиваю. Скажу только, что, удовлетворив чувство ностальгии по DOS (а я, глядя на современные программы для Windows, его частенько испытываю, честное слово), из программы можно выйти командой EXITEMU.

Переходя к теме запуска под Linux приложений Windows. Тут я тоже не могу похвастаться богатым опытом: ни с одним из эмуляторов Windows (а их развелось довольно много - wine, bosch и другие) я до сих пор дела не имел. Скажу только несколько слов о виртуальных машинах.

В настоящее время таковые представлены одним функциональным экземпляром - коммерческой программой vmware, хотя разрабатывается и ее свободный аналог, названный, как и следовало бы ожидать, freemware.

Программа vmware (текущая версия - 2.01) разработана не только для Linux, но и для Windows NT/2000. Будучи установлена должным образом (а под Linux она распространяется в виде бинарного rpm-пакета, но без исходных текстов). система эта позволяет запускать из под родительской операционной системы (например, Linux) почти любую другую из широко распространенных.

Официально в качестве гостевых систем поддерживаются Windows 95 и 98, Windows NT и 2000. Однако, по имеющимся сведениям (частично проверенным личным опытом) можно запустить и любой другой вариант Linux, и FreeBSD с ее производными, и BeOS, и некоторые коммерческие Unix-системы. Во всяком случае, под Linux это единственная возможность получить доступ кор всему спектру Windows-приложений, хотя - и с очень ощутимой потерей производительности.

Установка и настройка vmware, а также организация обмена данными между виртуальной гостевой системой (скажем, Windows 9x) и реальной родительской (тем же Linux) - занятие не то чтобы чрезвычайно сложное, но требующее внимания и не всегда тривиальное. Особенно, как ни странно, с точки зрения Windows-мигранта. Детальные описания этого процесса можно найти в статьях А.Ерижокова (на http://www.linuxrsp.ru/) и В.Костромина (http://linux-ve.chat.ru/). Поэтому я на нем останавливаться не буду.

Скажу только, что в ряде случаев, конечно, vmware может оказаться незаменимым. Например, при тестировании web-узла, разрабатываемого и управляемого под Linux, с точки зрения его функционирования под Windows на клиентской стороне. Или, напротив, если вся потребность в Windows-программах сводится к раскладыванию пасьянсов для успокоения нервов, как это имеет место у меня.

В противном случае - то есть если необходимость просто в использовании некоторых (и, тем более, многих) Windows-приложений, некоторое удобство от их использования под виртуальной машиной (нет необходимости в перезагрузке системы при переходе от Linux- к Windows-приложениям) не окупают потери производительности (по крайней мере на конфигурациях вплоть до P-III/733 и 128 Мбайт оперативной памяти). В этом случае проще завести отдельный раздел для Windows и его приложений.

Напомню, что первый вариант, как и второй, не избавляет от необходимости приобретения легальной копии Windows (или мук совести от использования ворованной). Если же учесть стоимость самой vmware (под три сотни уев, хотя можно пользоваться и пробной версией, перерегистрируемой раз в месяц - это, как будто, вполне легально)... Поневоле задумаешься, а не проще ли завести вторую машину, реальную, и соединить ее с первой сетью - чтобы обойтись одной консолью?

Заговорив о эмуляторах и виртуальных машинах, я несколько удалился от основной темы повествования - файлах и операциях с ними. А ведь оно еще не закончено. Потому что файлы создаются, копируются, архивируются и т.д., с главной целью - сохранения результатов работы как непреходящей ценности. Для чего нужно располагать средствами их записи на резервные носители, из которых важнейшими для нас, простых индивидуальных пользователей, являются


Содержание раздела