Cooperative linux в windows, програмне забезпечення, статті, бібліотека Лінуксцентра, - експерт по

Cooperative Linux в Windows

замість введення

Коли виникає потреба запустити Linux не перевантажуючись з Windows, то ми вже навчилися користуватися емуляторами, і порядком звикнувши до них, вдаємося до їх допомоги. Найпопулярніші з них VmWare. VirtualPC. QEmu. Bochs. Причому VmWare, QEmu і Bochs крос-платформні емулятори. VmWare прекрасно справляється зі своїм завданням, емулюючи все оточення пристроїв віртуальної машини, дозволяючи запускати будь-яку операційну систему для x86. QEmu на поточний момент є ще проміжним варіантом до релізной версії. Однак і він непогано справляється зі своїм завданням, до того ж QEmu оптимізований на роботу з Linux (і в Linux).

Виходячи з ідеї емуляторів вони запускають машину в машині, а для цього потрібно повністю транслювати команди процесора програмним шляхом. Навіть при ефективних алгоритмах на це йде чимало часу. Якщо звузити завдання до можливості запуску тільки Linux, то картина дещо спрощується. Оскільки щоб запустити Linux потрібно, по суті, завантажити ядро, а це вже означає що емулятор повинен вміти транслювати тільки команди ядра.

А далі задамося питанням: що якщо і зовсім не емулювати процесор, в разі якщо host-OS і Linux-ядро працюють на одному типі процесорів, а запустити як окрему програму?

Cooperative linux в windows, програмне забезпечення, статті, бібліотека Лінуксцентра, - експерт по

Нещодавно з'явилася чудова штука: coLinux, який дозволяє запустити Linux-ядро в Windows (NT / 2K / XP / 2K3) як окремий процес через спеціальний драйвер в режимі нульового кільця. Причому прошарок вийшла досить "тонкої", що позначається на роботі значно менше, ніж якби те ж саме запустити в емуляторі.

Проект розробляється і поширюється під ліцензією GPLv2. На поточний момент остання версія 0.6.2-pre1, яка працює на ядрі 2.6.8.1. Вже зараз можна скачати тут.

Як же це чудо запустити? Установник coLinux пропонує завантажити з мережі образ файлової системи вже налаштованої для роботи. Образ своїми розмірами не малий, і качати через dialup не всякий наважиться, та й ті, хто мають доступ до більш швидкісним сполученням не обов'язково рвонуться качати ці важкі файли. Приклавши деякі зусилля ви можете самостійно створити свій образ з робочим оточенням.

Nota bene: coLinux використовує особливості WinNT систем, тому для установки буде потрібно комп'ютер з встановленою версією Windows, бажано не старіше ніж Win2K. Для роботи в Win9X існує обмежений варіант. Всі експерименти з coLinux я проводив на WinXP.

Варіанти установки:
  • Установка базового набору драйверів
  • З'єднання Windows і coLinux через мережу
  • Включення coLinux в існуючу мережу (для цього додатково потрібно завантажити WinPCap бібліотеку)
  • Завантаження налаштованого образу системи

Під час установки Windows ругнется на несертифікований Microsoft драйвер. Не звертайте уваги, підтвердіть продовження.

Після установки потрібно створити два великих файлу: один для установки дистрибутива, другий для swap. На жаль, стандартними засобами Windows виконати це або неможливо, або довго. На цьому етапі ми змушені вдатися до допомоги сторонніх програм. Можна завантажити порт програми dd для Windows або використовувати dd з unix. Спеціально для створення великих файлів написав програму MkBigFile (24 Kb).

Створимо файл root_fs розміром в один гігабайт і файл підкачки розміром в 64 мегабайта. Можна скористатися засобами відновлення, які як правило існують на завантажувальних настановних дисках Linux. Завантажити з компакт-диска, підключіть розділ і виконайте команди:

Або за допомогою MkBigFile:

При створенні образу диска розмір задайте кілька більше того, наскільки розраховуєте його заповнити, так як потім він не буде автоматично розширюватися коли буде заповнено весь вільний простір.

Підключення розділів фізичних носіїв проводиться за наступним принципом: Де N = 0,1,2. номер жорсткого диска, а X = 1,2,3. номер розділу.

При запущеному coLinux інші Windows програми не повинні використовувати розділи підключені таким чином!

Тепер у нас є підготовлена ​​площадка для установки і запуску coLinux. Запускається coLinux через colinux-демона, до якого підключаються клієнти - термінали. Демона можна запускати як звичайну NT-службу, це зручно якщо Linux працює як чісломолотілка або сервер і не потрібно тримати зайву відкриту консоль.

Для установки служби потрібно запустити: colinux-daemon.exe --install-service coLinux -c default.colinux.xml

Тепер можна запускати / зупиняти службу coLinux через панель управління служб, або з командного рядка за допомогою net coLinux

У комплект поставки входять дві термінальні програми: colinux-console-fltk.exe (графічна) і colinux-console-nt.exe (консоль). Перша надає можливість управління сервером. Особисто для себе я вибрав другу. Вона проста і до того ж можна перемикатися в повноекранний режим. Вихід з програми здійснюється поєднанням Win-Alt.

Щоб coLinux працював як окремий процес, запускаємо: colinux-daemon.exe -c default.colinux.xml Автоматично запуститься термінал. Можна вибрати який хочемо запустити, якщо зазначимо параметр -t

Установка дистрибутива Linux

Відразу обмовлюся: наступні кроки виконані для дистрибутива SlackWare. На те у мене є кілька причин. Деякі з них це гнучкість установки, а так же позначився фактор звички - полюбився дистрибутив. Для інших дистрибутивів процес інсталяції буде відрізнятися, але принцип повинен залишитися незмінним.

Установчий образ initrd.img я взяв з першого диска SlackWare-10.0, з каталогу isolinux.

Тепер відредагуємо default.colinux.xml для завантаження з цього образу. Там вкажемо файл образу як initrd файл і вкажемо опцію root.

Установник запущений, тепер підготуємо файли пристроїв. З якихось причин в документації не позначені major-код для пристроїв. На щастя, це можна підглянути в / proc / devices. Що і робимо командою: # grep cobd / proc / devices Добре, з'ясували major пристрої (він дорівнює 117). Ядро підтримує до 32-х. Створимо Ноди для пристроїв: # for i in 0 1 2 3 4 5 6 7 8; do mknod / dev / cobd $ i b 117 $ i; done

Кожне cobd пристрій в системі буде являти собою один розділ. Тому не будемо створювати таблицю розділів на cobd. Форматування виконується звичайним чином. Систему будемо встановлювати на / dev / cobd0, swap встановимо на / dev / cobd1. Кореневу файлову систему не обов'язково форматувати під ext2, можете вибрати на свій смак. Для себе я вибрав ReiserFS (mkreiserfs).

# Mount / dev / cobd0 / mnt

Так само підключимо джерело пакетів. # Mount / dev / cobd2 / cdrom

SlackWare установник вимагає щоб в системі були визначені жорсткі диски з Linux-розділами. У нас таких не водиться і скористаємося обхідним шляхом. В каталозі slackware є підкаталоги з програмами. Для мінімальної установки, щоб запустити систему нам будуть потрібні програми з розділів a, ap, l.

Послідовно виконуємо установку пакетів з підрозділів: Не обов'язково встановлювати модулі ядра - вам вони все одно не стануть в нагоді.

Cвежеустановленний Linux ще не містить свого / etc / fstab, який зараз же і створимо в / mnt / etc / fstab (наша система все-таки ще не основна).

Після установки вимкнемо coLinux через halt -p або poweroff.

Секцію bootparams в default.colinux.xml міняємо наступним чином: root = / dev / cobd0 ro

Не забудьте дописати ro - без цього буде порушений процес перевірки цілісності файлової системи при завантаженні coLinux.

У новій системі тепер налаштуємо мережевий інтерфейс. У coLinux мережевий адаптер названий як звичайний ethernet-адаптер eth0, тому настройка нічим не буде відрізнятися від настройки на фізичній машині зі SlackWare. Налаштування мережі дивіться в файлі /etc/rc.d/inet1.conf.

Приклад настройки адаптера inet1.conf

У статті описується пакет тестової версії 0.6.2. На поточний момент остання версія 0.6.1, в якій може не виявитися деяких налаштувань вже введених в 0.6.2-pre1.

Ще однією прикрістю є заморочки з підключенням X сервера, що теж не так вже й обов'язково. До того ж програму почали розробляти відносно недавно, і можливі непередбачені падіння. В останніх релізах стабільність покращена і розробка активно триває, так що хочеться вірити, що незабаром ми будемо користуватися ще більш надійним і швидким продуктом.

Даний програмний продукт не дуже підходить для знайомства з ОС Linux, для цих цілей краще все ж встановити повноцінний дистрибутив і користуватися повнофункціонально працюючими програмами, або випробувати Linux у вигляді LiveCD, благо яких розплодилося практично на всі випадки життя.

Посилання до статті

MkBigFile (24 Kb) - програма для створення порожніх великих файлів в Windows. Вихідний код включений в архів.