Что же выбрать — Linux или Windows? Некоторые специалисты считают Linux не самым удачным вариантом UNIX, однако именно эту ОС рассматривают в качестве первейшего конкурента Windows, с недостатками которой значительный контингент пользователей уже не хочет мириться и ищет альтернативы, но пока не в силах полностью отказаться от детища Microsoft. Впрочем, дискуссия о качествах той или иной системы в большей степени относится к разряду holly war и потому не будет предметом данной статьи. В определенной степени данный материал — продолжение темы, поднятой И. А. Хахаевым в статье «Малый джентльменский набор» («Мир ПК», №8/04). Здесь же мы рассмотрим задачи межплатформного взаимодействия Windows и Linux и способы их решения.

Удаленный доступ к машине

MS Remote Desktop Client запущен на компьютере с Windows 98; обеспечивается доступ к Windows 2000 Advanced Server с установленной службой Terminal Service

Зачастую случается, что с домашнего ПК нужно запустить что-либо на рабочем компьютере или наоборот. Когда речь идет о текстовых приложениях, то подобная проблема решается с помощью сервисов Telnet и SSH. Существует большое количество как клиентских, так и серверных программ для Linux и для Windows.

Что же касается удаленного запуска приложений с GUI (graphic user interface — графический интерфейс пользователя), то в Windows он обеспечивается с помощью Remote Desktop (Windows XP) или Terminal Service (серверные ОС компании Microsoft).

Особенностью Remote Desktop в реализации Windows XP является то, что за компьютером может работать одновременно только один пользователь. Таким образом, если вы заходите на машину удаленно, то локально на ней работать нельзя, и наоборот (если включена возможность Fast User Switching, происходит быстрое переключение пользователей). Fast User Switching — возможность Windows XP, позволяющая сменить активного пользователя, не выходя из системы текущего. При этом программы, запущенные этим пользователем, продолжают функционировать, не отображаясь на экране, а графическая оболочка (Рабочий стол) предоставляется другому пользователю. Служба Terminal Service лишена такого недостатка: к компьютеру могут подключаться столько пользователей, сколько вы имеете лицензий Client Access License, т.е. для каждого подключения должна быть куплена лицензия CAL. Клиент для этих средств один и тот же — Microsoft Remote Desktop Client. Как ни странно, он бесплатно предоставляется на сайте Microsoft для любых ОС этой компании, от Windows 3.1 до новейших. В Linux также есть такой клиент — программа rdesktop (http://www.rdesktop.org). Если вы работаете с Linux, то всегда можете удаленно зайти на машину под управлением Windows XP или, например, Windows NT 4.0 TS.

rdesktop запущен на компьютере с Mandrake Linux 10, открыт доступ к Windows XP

Linux, как и любая другая UNIX, изначально была многопользовательской сетевой ОС, позволяющей работать в ней с удаленного терминала. X Window System (или просто «X») — основа графического интерфейса большинства ОС типа UNIX (в Linux используется клон под названием XFree86). Она реализована по архитектуре «клиент — сервер». Графические приложения выполняют запросы типа «нарисуй линию с указанными координатами», «выведи такой-то текст определенным шрифтом в указанной позиции» и т.п. Подобная архитектура позволяет запускать графические приложения на одной машине, а их окошки (графический интерфейс) отображать на другой. Например, можно запустить какую-нибудь вычислительную задачу на ЭВМ типа Cray, систему управления базами данных — на сервере под управлением Solaris, почтовую программу — на небольшом сервере BSD, а программу графического моделирования — на SGI-сервере. Причем все эти программы могут выводить результаты своей работы и у вас дома на компьютере под управлением Linux.

X-сервер обслуживает реальный графический дисплей. Именно на том компьютере, где запущен X-сервер, выводятся окошки приложений. Задачи, в которых требуется отобразить окно клиента, средства изменения окна клиента и средства оформления окна клиента (заголовок, рамка и т.п.), решаются специальной программой — «диспетчером окон». По сути он не является частью X Window System. Имеется огромное количество диспетчеров окон для «X»: twm, fvwm, icewm, afterstep, enlightenment и sawfish (используются в GNOME), kwm (используется в KDE) и проч.

Существует реализация XFree86 для Windows, входящая в пакет Cygwin, http://www.cygwin.com), т.е. можно из Windows запускать графические программы на удаленной машине под управлением Linux или другой UNIX, а результат их работы будет отображаться на дисплее.

Cygwin

Запущен «вложенный» X-сервер Xnest (Linux Mandrake 10) с предоставлением доступа графическим приложениям на удаленной машине (Linux Mandrake 8.2)

В отличие от Windows, в Linux весьма развит интерфейс командной строки (command line interface — CLI), т.е. значительное количество функций могут быть выполнены с помощью команд-утилит. Опытный пользователь Linux обязательно использует CLI. С 1995 г. развивается проект Cygwin (http://www.cygwin.com), в рамках которого большое количество утилит из UNIX портировано в Windows (например, командный интерпретатор bash, клиент и сервер SSH, файловый менеджер mc, пакет компиляторов gcc, утилиты обработки текстов gawk и др.). Он обеспечивает Linux-подобную среду для Windows. Многие мультиплатформные приложения, перенесенные в Windows, содержат ядро Cygwin (cygwin1.dll) или явно требуют установки этого пакета. С недавних пор проект включает X-сервер XFree86, что открывает путь для переноса графических приложений. Правда, сейчас из диспетчеров окон портирован лишь самый примитивный — twm.

Cygwin не предоставляет бинарной совместимости с исполняемыми файлами и библиотеками Linux (ELF). В какой-то мере его можно назвать эмулятором или, точнее, имитатором Linux/UNIX. Он реализует стандартный программный интерфейс, принятый в UNIX (POSIX). Благодаря этому многие приложения могут быть легко перекомпилированы в среде Cygwin/Windows с незначительными изменениями или вообще без них. Следует учесть, что большинство приложений для Linux/UNIX относятся к свободному ПО и распространяются в исходных текстах.

Компания Microsoft также не обошла вниманием эту проблему и предоставила пакет Windows Services For Unix (SFU) (http://www.microsoft.com/windows/sfu/), содержащий ядро поддержки POSIX, стандартные UNIX-подобные средства разработки для этого ядра, различные утилиты и интерпретаторы, широко распространенные в среде UNIX (perl, bash, awk, grep), а также средства поддержки сетевой файловой системы NFS.

MandrakeMove

Запущен XFree86/Cygwin на машине, работающей под управлением Windows 2000 Professional, с предоставлением доступа графическим приложениям на удаленной машине (Linux Mandrake 8.2)

Компания Mandrake выпустила вариант Linux, запускающийся с CD. Его образ можно бесплатно переписать с http://www.mandrakelinux.com. Загрузившись с диска, вы получаете Linux с основными приложениями: офисный пакет Openoffice.org; konqueror/kmail/knews — стандартные средства работы с Интернетом; программы для работы с IRC, FTP и различными интернет-пейджерами (ICQ, AOL, MSN и т. п.); мультимедиа-проигрыватель Totem и TV-тюнер XawTV; графический процессор GIMP; средства для работы со сканером. При загрузке монтируются найденные разделы Windows (обычно в /mnt/windows), так что вы сможете работать с имеющимися на них файлами. При использовании этого варианта Linux вам не потребуется ни байта на вашем жестком диске. Единственное неудобство — отсутствие русификации. Тем не менее вы можете добавить русскую раскладку (Configure Your Desktop — Keyboard Layout) и использовать русские буквы в различных приложениях.

Файловые системы

MandrakeMove

В Linux есть несколько «родных» файловых систем: ext2/ext3; reiserfs; XFS, разработанная фирмой SGI на основе файловой системы ОС IRIX; JFS, созданная компанией IBM на основе файловой системы ОС AIX. Кроме того, существует поддержка большого количества «чужих»: FAT, NTFS, HPFS, файловых систем ОС BSD, Apple Macintosh, QNX, BeOS и др. К сожалению, некоторые файловые системы, например NTFS, поддерживаются в режиме «только чтение». Так что у вас не возникнет проблем с доступом к файлам на разделе Windows. Некоторые дистрибутивы допускают установку Linux на раздел Windows, хотя лучше этого не делать. В Windows же нет стандартных средств поддержки файловых систем Linux. Сторонние производители предоставляют ограниченную поддержку ext2 (например, Paragon Ext2FS Anywhere — http://www.paragon-gmbh.com).

К тому же Linux позволяет работать с сетевыми ресурсами сети Microsoft и Novell Netware как с локальными файловыми системами. Более того, Linux может выступать в качестве сервера в сети Novell Netware (пакет Mars), предоставлять свои каталоги для доступа в сети Microsoft и даже играть роль контроллера домена (пакет Samba). Для удаленного доступа к файлам в Linux применяются либо протоколы Интернета (FTP/HTTP), либо одна из сетевых файловых систем — NFS, Coda или Intermezzo. Что касается FTP и NFS, то для Windows существует большое количество программных средств, реализующих функции как клиента, так и сервера. В частности, пакет Microsoft Windows Services for UNIX (SFU) содержит полноценный клиент и сервер NFS. Сложности в Windows могут возникнуть с системами Coda и Intermezzo, но они пока не очень широко распространены.

WINE

С помощью WINE запущены архиватор WinRAR и словарь ABBYY Lingvo

Проект WINE (Wine Is Not Emulator, http://www.winehq.com) — реализация Windows API (application program interface — прикладной программный интерфейс) поверх функций X Window System и функций ядра Linux. Средство WINE, обеспечивающее бинарную совместимость с Windows, не требует самой Windows. Проект не содержит ни байта кода Microsoft и потому на 100% является свободным ПО, но тем не менее может использовать «родные» DLL из Windows. WINE позволяет запускать исполняемые файлы (EXE) в Linux без какой-либо их переделки. Однако Windows содержит более 40 тыс. системных вызовов, так что коллективу свободных разработчиков весьма сложно реализовать их все и с полной функциональностью. Следовательно, в случае применения этого пакета будьте готовы к проблемам с совместимостью.

Спонсор данного проекта, компания CodeWeavers, продает специально настроенный вариант WINE — CrossOver (http://www.codeweavers.com), позволяющий устанавливать и использовать в Linux пакеты Microsoft Office, Microsoft Internet Explorer, Adobe Photoshop, Lotus Notes и др.

Примерно то же самое делают разработчики Linspire (бывший Lindows, http://www.linspire.com). Они продают Linux с хорошо собранным WINE. Специалисты компании Transgaming Technologies (http://www.transgaming.com) занимаются портированием интерфейса DirectX в Linux на основе пакета WINE. Их проект WineX, сейчас переименованный в Cedega, рассчитан на бинарную поддержку различных игр под Windows в Linux. Вообще-то этот продукт распространяется по платной подписке, но можно и через систему CVS (сoncurrent versions system — система управления версиями программного обеспечения, предоставляющая разработчикам средства удаленной синхронизации версий разных файлов разрабатываемого ПО) получить опытный экземпляр исходников WineX. На странице http://www.transgaming.com/searchgame.php имеются список поддерживаемых игр и снимки их экранов, сделанные в Linux.

Виртуальные машины VMWare

VMWare Workstation для Linux с виртуальной машиной под управлением Windows 98

Пакет VMWare (http://www.vmware.com) представляет собой эмулятор виртуальной машины, где разрешается установить любую ОС и использовать ее вместе с основной операционной системой. Существует два варианта пакета — для Linux и для Windows. Виртуальное «железо» в эмулируемой машине примерно такое: процессор и системная плата соответствуют реальным, объем оперативной памяти выбирается в настройках (не больше чем доступно реальной физической), контроллер IDE — стандартный, контроллер SCSI (опционально) — совместимый с BusLogic, жесткие диски и CD/DVD-дисководы определяются в настройках как образы на реальном «винчестере» или сопоставляются с реальными устройствами, сетевая плата — AMD PCNET, звуковая плата — Creative SoundBlaster AWE32, видеоплата — специфическая (VMWare SVGA). Драйверы для этой виртуальной видеоплаты имеются для Windows, Linux, FreeBSD и Netware, а для других систем виртуальная машина будет работать в режиме «стандартная VGA». С реальной машиной эмулируемая связана виртуальной сетью.

Несомненное преимущество данного пакета заключается в том, что можно работать одновременно с обеими ОС, не перезагружая машину (как в случае MandrakeMove), не отвлекаясь на проблемы совместимости или полноты реализации API (как в случае WINE) и не заботясь о доступности файлов для той или иной системы на различных разделах жесткого диска. Среди недостатков этого варианта следует отметить ресурсоемкость, нестабильность и небесплатность пакета.

* * *

Когда приходится постоянно работать с двумя ОС, то все больше пользователей оказываются в ситуации «тяжело тащить — жалко бросить». Однако многие подобные проблемы сейчас могут быть легко решены.

Об авторе

Алексей Соловьев — преподаватель Петрозаводского государственного университета, e-mail avsolov@lab127.karelia.ru