• Зазвичай юні і не дуже адепти Linux задають одне і те ж питання: «Як запустити Windows-додатки в улюбленому дистрибутиві?» А на зворотній питання, як правило, крутять біля скроні. Але чи так вже безглузда ідея запуску Linux-програм в середовищі Windows?
    Використання Linux або UNIX-додатків в Windows може бути продиктоване масою причин - від банальної звички до деяких програм до неможливість запуску окремої машини з Linux. Хтось хоче використовувати нативні версії пз для налагодження, а хто сподівається, що таким способом можна змусити користувачів плавно смигрировать на повноцінний дистрибутив.
    Перш ніж город городити з эмуляторами, краще пошукайте портированные версії або аналоги ваших улюблених програм. Ті ж GIMP, Audacity, Pidgin і безліч інших утиліт мають рідні збірки не тільки для Windows, але і для Mac OS X. Для отримання якоїсь конкретної функціональності часто не потрібно повноцінний аналог софту з Linux. Наприклад, до автодополнению за Tab в оболонці bash дуже швидко звикаєш, а в командному рядку Windows цього немає і в помині. Виправити це і інші прикрі упущення допоможе утиліта clink.
    Стандартні консольні утиліти, наприклад з пакету GNU Coreutils, давно спортированы на Windows. Є як досить старі набори GNUWin II і UnxUtils, так і постійно оновлюються UWIN (не рекомендується до використання) і Gnuwin32. Для останнього по завершенні встановлення базового інсталятора треба послідовно запустити файли download.bat і install.bat, а потім скопіювати за бажанням папку gnuwin32 в будь-яке зручне місце і запустити з неї файл update-links.bat. Після відпрацювання останнього скрипта в підкаталозі StartMenu будуть посилання на запуск командного рядка з оточенням GNU і документацію до утиліт.
    Володарі Windows Vista/7 в максимальній і корпоративної версіях, а також серверних версій ОС Microsoft можуть взагалі не перейматися. Для них доступна підсистема для додатків на базі UNIX (Subsystem for UNIX-based Applications, SUA) або сервіси Microsoft Windows для UNIX (Microsoft Windows Services for UNIX, SFU). Цей набір базових утиліт наявний прямо в компонентах системи. Додаткові набори програм можна скачати тут. Нарешті, останнім у списку і перша за популярністю рішення для запуску UNIX-програм - це Cygwin. Цей пакет простий в установці і містить далеко не маленький набір додатків, портированных під Windows. Рекомендується використовувати саме його.
    Тепер можна поговорити про дивну - запуску нерідній для Windows системи KDE. Взагалі проект KDE on Windows існує не перший рік, і спочатку користуватися ним було просто неможливо з-за регулярних падінь, які хіба що не заганяли нещасну систему в BSOD. Однак розробники не сиділи склавши руки, і в нинішній реінкарнації проекту його сміливо можна інсталювати - помилки досить рідкісні, так і ті - некритичні. Все відразу ставити сенсу, напевно, немає, а ось деякі програми можуть сподобатися.
    На жаль, портированные додатки далеко не завжди ведуть себе так, як у рідному оточенні, або можуть конфліктувати з іншими програмами. Тому єдиним виходом, крім встановлення «пингвиньей» ОС на голе залізо, є емулювання Linux. Для разового використання можна застосувати оболонку для QEMU під назвою MobaLiveCD, яка без зайвих рухів допоможе запустити LiveCD/USB з різними збірками. Для постійного використання краще інсталювати Linux у віртуальну машину: в VirtualBox або VMWare Player. Тільки не забудьте встановити гостьові доповнення для більш комфортної роботи. Альтернативний варіант - застосування VDI-рішень з можливістю безшовних інтеграції в Windows Linux-програм, запущених на окремому хості, який також може бути виртуализирован.
    Оптимальним варіантом для запуску Linux-додатків є використання середовища coLinux. Вона, умовно кажучи, запускає ядро Linux на рівні ядра Windows і має доступ до всіх апаратних ресурсів машини, за рахунок чого втрат продуктивності практично немає. При цьому вона зберігає повну сумісність з Linux-додатками, дозволяючи безпосередньо запускати їх. На базі coLinux є готові системи для швидкого запуску Portable Ubuntu Remix, Topologilinux (Slackware), SpeedLinux (різні дистрибутиви) і andLinux (Ubuntu). Єдиним неприємним обмеженням coLinux і всіх пакетів на його основі є необхідність використання 32-64-бітної версії Windows 2k/XP/2k3/Vista/7. Як приклад розберемо мінімальну налаштування Debian Squeeze. Першим ділом встановимо свіжу версію coLinux, відмовившись від завантаження готових образів і попутно інсталював WinPcap.
    Тепер необхідно завантажити архів образу диска з Debian і розпакувати його в ту папку, в яку був встановлений coLinux. Розмір диска rootfs_2gb.img при бажанні можна збільшити. Файл squeeze.conf доведеться трохи відредагувати. Змін мінімум - збільшити об'єм виділюваної RAM (mem), дозволити доступ до диску C: за допомогою COFS і додати мережний інтерфейс TAP. Зверніть увагу, що при використанні COFS краще не звертатися одночасно до одним і тим же файлів з папками з Linux і Windows.
    kernel=vmlinux
    cobd0="rootfs_2gb.img"
    cobd1="swap_128mb.img"
    root=/dev/cobd0
    ro
    cofs0="C:\"
    initrd=initrd.gz
    mem=512
    eth0=slirp
    eth1=tuntap
    Після запуску squeeze.bat ви потрапите в консоль Debian. Логін за замовчуванням root, а пароля немає. За допомогою nano відредагуємо параметри мережевих інтерфейсів в файлі /etc/network/interfaces. Додамо секцію для eth1. Як IP-адреси використовуємо будь-який, лише б не було перетину з іншими локальними підмережами. У Windows в налаштуваннях IPv4 мережного адаптера TAP-Win32 Adapter V8 (coLinux) треба вказати адресу з тій же підмережі.
    auto eth1
    iface eth1 inet static
    address 192.168.100.2
    netmask 255.255.255.0
    Виходимо з nano із збереженням змін - F2, Y, Enter. Тепер створимо папку, куди буде монтуватися диск C:…
    mkdir /mnt/windrvc
    …додамо одну сходинку в кінець файлу /etc/fstab і збережемо його:
    /dev/cofs0 /mnt/windrvc cofs defaults 0 0
    Зараз ми займемося установкою X-сервера, а поки для простоти пропишемо експорт змінної DISPLAY у файл /.profile (це треба буде зробити і для будь-яких інших користувачів). Як IP-адреси використовуйте той, що вказаний для TAP-адаптера в Windows. Після цього можна перезавантажити командою reboot.
    export DISPLAY=192.168.100.1:0
    Незайвою буде встановлення набору шрифтів, в тому числі і кириличних. Опціонально можна пройтися по каталогах зі шрифтами, включаючи C:\\Windows\\Fonts, утилітами mkfontdir і mkfontscale зі складу Cygwin. Тепер усе готово для установки X-сервера Xming. Відразу ж після цієї процедури додаємо в файл X0.hosts IP-адреса TAP-інтерфейсу в Debian (у нашому прикладі це 192.168.100.2).
    «Подякуємо» Windows за пильність і в стандартному брандмауері поміняємо всі правила, що стосуються Xming, з заборонних на дозволяють, а інакше програми просто не достукатися до X-сервера. Тепер запускаємо утиліту XLaunch, в якій можна вибрати режим відображення X-вікон і вказати додаткові параметри. Для нас важливо налаштувати підтримку російської і англійської розкладок з перемиканням по Alt+Shift і опціонально задати DPI. Наприкінці файл налаштувань треба зберегти як имя.xlaunch. Надалі при подвійному клацанні з цього файлу X-сервер буде запускатися з заданими нами параметрами.
    -xkblayout us,ru-xkbvariant basic,winkeys -xkboptions grp:alt_shift_toggle-96 dpi
    Щоб не було так нудно, встановимо графічний менеджер пакетів synaptic для більш зручної інсталяції софта і яку-небудь маємо легковажну панель з меню програм, наприклад lxpanel. Останню для простоти пропишемо в автозапуск при вході, додавши в кінець /.profile команду lxpanel&.
    apt-get update
    apt-get upgrade
    apt-get install synaptic lxpanel
    Для повноти картини додамо підтримку звуку. Завантажуємо звідси архів з Pulseadio і розпаковуємо його в якій-небудь каталог, в якому створюємо текстовий файл default.pa. Наповнюємо цей файл наступними рядками. Тут 192.168.100.0/24 - це наша TAP-підмережа.
    load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.100.0/24
    load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.100.0/24
    load-module module-detect
    add-autoload-sink output module-waveout sink_name=output
    set-default-sink output
    Запускаємо pulseaudio.exe і в черговий раз йдемо правити дозволу в брандмауері Windows. В консолі Debian встановлюємо необхідні інструменти та бібліотеки.
    apt-get install libpulse0 libasound2-plugins alsa-utils
    У файлі /etc/pulse/client.conf додаємо IP-адреса хост-машини запущений сервер Pulseaudio - default-server = 192.168.100.1, а в /etc/asound.conf наступні параметри:
    pcm.!default {type pulse}
    ctl.!default {type pulse}
    pcm.pulse {type pulse}
    ctl.pulse {type pulse}
    Для перевірки працездатності можна спробувати програти один з тестових файлів.
    aplay /usr/share/sounds/alsa/Front_Center.wav
    Автоматичний запуск Pulseaudio при старті Debian здійснюється додаванням в кінець файлу конфігурації squeeze.conf такої команди.
    exec0="X:\\шлях\\до\\папки\\pulseaudio\\pulseaudio.exe"
    Для X-сервера такий трюк не підходить. У принципі, те, що вже зроблено, достатньо для роботи. Однак непогано було б додати в Linux нового не користувача root, налаштувати для нього автологин з mingetty, встановити coLinux в якості служби Windows і прописати Xming в автозапуск. Для зручності можна поставити утиліту Desktops, яка створює кілька віртуальних робочих столів у Windows, і запускати X-сервер в повноекранному режимі на другому робочому столі.
    У результаті ми отримали швидку середовище для майже нативного запуску Linux-додатків в Windows. Її можна використовувати для написання і налагодження веб додатків, кросскомпиляции драйверів та інших завдань. Ось тільки осудного прискорення графіки для роботи важких додатків поки ще немає, так 64-бітна версія початку розроблятися всього кілька місяців тому. Тим не менш coLinux цілком придатний для повсякденного використання. Для подальшого вивчення можливостей і настройок цієї системи зверніться до вікі проекту. Ну а ми на цьому поки що закриємо тему симбіотичних відносин Windows з Linux через різні місця. Удачі!