Linux в Windows !Внимание БЕЗ VM (Как замутить линукс проги под виндой не пользуясь вирт. машиной)

Системы, которые не вошли в список.

Модератор: Модераторы разделов

pr0n1x
Сообщения: 22
ОС: MOPS Linux 6.1

Linux в Windows !Внимание БЕЗ VM

Сообщение pr0n1x »

Данная статья была написана мною 6 июля 2008 года.
Было желание опубликовать где-нить - не конкретно эту статью, а написать человеческий материал для, допустим моего любимого ][ или LF, но так как руки до написания НОРМАЛЬНОГО материала не дошли, то читайте убогую заготовку, если интересно.

============================================
BEGIN
============================================

Многие из начинающих, да и более продвинутых пользователей Linux сталкивались с проблемой зпуска windows-приложений на linux или наоборот и способы решения не обходятся только Wine'ом. Сфера деятельности web-разработчика, коим является автор, такова, что приходится работать как правило в Linux, но вёрстка страницы долдна производится в windows, чтобы была возможность тестировать сразу в несколькиз браузерах: IE6, IE7(StandAlone script), safari, да и без фотошопа тут не обойтись - gimp'a не хватает(не читает он корректно psd, а дизайнеры именно в фотошопе разрабатывают). Многие ответят: "Почему бы не поставить WMWare" - да, не плохая идея, но производительность оставляет желать лучшего, особо это актуально на не "свежем" железе. Несколько раз подумав и перебрав возможные варианты, автор остановился на проекте под названием Cooperative Linux или кратко - coLinux. В июньском номере ][ освещалась в кратце эта тема на примере andLinux. Но давайте разберёмся. andLinux - дистрибутеив специально созданный для работы под colinux ядром на базе Ubuntu. На самом деле всё что нам потребуется это colinux и почти любой дистрибутив.
Концепция.
Есть линукс ядро, запускаемое как процесс windows. Ядро читает конфиг, в котором мы предварительно указали образ или раздел жесткого диска, на котором располагается наш дистрибутив, опции сетевого интерфейса и др.
Есть утилиты для работы в консоли: colinux-console-nt и colinux-console-fltk.
Сеть. Есть colinux-net-daemon, позволяющий windows-машине через виртуальное сетевое устройсво общяться с linux.
Графика. Клинт-серверная архитектура X-ов позволяет отрисовывать графику на любом компьютере с сервером X-ов. Здесь нам помогжет X-сервер портированный на windows-платформу или vnc, у кого к чему душа лежит.
Работа с файловыми системами винды из линукса. Здес есть два подхода: SMB и cofs. Про первый рассказывать нет смысла, а второй позволяет нам подключать активные windows-разделы как блочные устройсва linux. Лучше использовать оба подхода.

Что нам понадобится. Для начала сам coLinux. Взять можно отсюда http://www.colinux.org/
!Это важно. Используйте именно 7.x.x версию, ибо в 6.x.x. конфиг в формате xml да и устарел он...
Далее нампонадобится X-сервер для windows. Автор остановил свой выбор на Xming, так как у него есть multiwindow-mode, выполняющий роль не только X-сервера, но и менеджера окон. Смотрится приколько, когда посреди окошек винды есть несколько linux программ.
И так приступим.
Устанавливаем colinux. В процессе установки инсталятор предложит скачать из сети готовый образ с установленным дистрибутивом. Для тестирования может пригодиться, но ны пойдём по другому пути и создадим образ сами, но об этом позднее. Для начала надо создать конфиг для работы самого colinux-ядра.

-----------------------colinux.conf--------------------------
# Стандартная шапка конфига
# Этот конфиг написан для запуска уже установленного жистрибутива slackware 12
# This is an example for a configuration file that can
# be passed to colinux-daemon in this manner:
#
# colinux-daemon @example.conf
#
# Note that you can still prepend or append configuration and
# boot parameters before and after '@', or you can use more
# that one '@ to load several settings one after another.
#
# colinux-daemon @example.conf @overrider.conf mem=32
#
# Full list of config params is listed in colinux-daemon.txt.

# The default kernel
# Ядро нашего линукса. Лежит в папке colinux. Этот файл и читается colinux-daemon.exe'ом
kernel=vmlinux

# File contains the root file system.
# Download and extract preconfigured file from SF "Images for 2.6".
#cobd0="c:\coLinux\root_fs"

### ПОДРУБАЕМ ROOT ПАРТИЦИЮ
####################################
# 1. Это пример для запуска
# инсталлированного дистра
########
# Здесь я дал партициям те же имена,
# которые они получают в реальном ядре слаки
# дабы избежать еконфликтов в /etc/fstab
# !!! Внимание для запуска уже установленных
# систем на хард этот пункт очень важен.
# Не ошибитесь в нумерации.
hda5=\Device\Harddisk0\Partition2
hda7=\Device\Harddisk0\Partition4
hda8=\Device\Harddisk0\Partition5

####################################
# 2. Это пример подключения файла
# с установленным gentoo
# Yиже приведён пример создания конфига,
# который тож можно подрубить не используя физич партиций на винте
hda7="c:\coLinuxVolImg\coLinux.reiserfs.img"

# Просто файл с нулями и необходимого вам размера.
hda6="c:\coLinuxVolImg\swap_device_512Mb"

# Tell kernel the name of root device (mostly /dev/cobd0,
# /dev/cobd/0 on Gentoo)
# This parameter will be forward to Linux kernel.

# Ну естесна говорим какой из алиасов у нас является корневой партицией
root=/dev/hda7
# т.е. см выше hda7

# Additional kernel parameters (ro = rootfs mount read only)
# Слака например грузит ядро именно так, потом перемонтирует root в rw
ro

# Initrd installs modules into the root file system.
# Need only on first boot.
# Нужно только для первой загрузки.
# colinux сам распакует свои модули в root (см выше root=/dev/hda7)
initrd=initrd.gz

# Максиммальное количество памяти, которое может потреблять гостевая ОС
#mem=128
mem=256

# Slirp for internet connection (outgoing)
# Inside running coLinux configure eth0 with this static settings:
# ipaddress 10.0.2.15 broadcast 10.0.2.255 netmask 255.255.255.0
# gateway 10.0.2.2 nameserver 10.0.2.3

# Встроенными фичами я не пользуюсь.
# Примерно тот же подход используется
# в VirtualBox
#eth0=slirp
#eth0=slirp,"",tcp:333:22

# Tuntap as private network between guest and host on second linux device
#eth1=tuntap
# А вот это нащ выбор. Не забудте поставить
# tun-tap драйвер для виндоус.
# (Он ставится во время инсталляции colinux)
# Вот такой же подход я использую когда юзаю VirtualBox в линуксе.
# В линухе для загрузки tap используется утилита tunctl,
# но это уже к делу не имеет отношения, так лирика...
eth1=tuntap

# Setup for serial device
#ttys0=COM1,"BAUD=115200 PARITY=n DATA=8 STOP=1 dtr=on rts=on"

# Run an application on colinux start (Sample Xming, a Xserver)
#exec0=C:\Programs\Xming\Xming.exe,":0 -clipboard -multiwindow -ac"
# Этот фал надо создать чтобы при старте линукса стартовал сразу и X-сервер
# портированный на windows
exec0=Xming_start.bat
---------------------------------------------------------------------------

Устанавливать ли дистрибутива в образ или на раздел жёсткого диска каждый решит сам, по большому счёту, разницы тут нет, но ntfs имеет ф-ии кеширования, потому, вероятно, что образ будет работать быстрее, хоть и не на много. Есть и ещё один примечательный момент. Можно установить дистрибутив штатными средствами на хард, а после его же загрузить и под coLinux.
Для создания образа нам понадобится любой живой жистрибутив типа DSL или knoppix. Загрузившись с диска, в первую очередь необходимо подмонтировать партицию, на которую мы положим наш образ. например так:
#mount -t vfat -o rw,iocharset=utf8,codepage=866 /dev/hda1 /mnt/vfat
Данный способ не позволит создать образ более 4 Гб, потому нужно подумать заранее как перенести созданный образ на виндовый раздел. Например так:
#mount -t ntfs-3g -o rw,locale=ru_RU.UTF-8 /dev/hda1 /mnt/ntfs
или создать его где угодно, а потом через соседсикй комп перенести обратно.

Далее создадим пустой файл из нулей на необходимое количество метров.
#dd if=/dev/zero of=/mnt/ntfs/coLinux.reiserfs.img bs=1M count=4196
Отформатируем образ под файловую систему ReiserFS, ext3 или ещё какую по желанию.
#mkreiserfs -f /mnt/ntfs/coLinux.reiserfs.img

Опцию -f ставим дабы mkreiserfs проигнорировал тот факт, что работет не с блочным устройсвом, а с файлом.
Мы получили образ файловой система, теперь самое интересное, как туда поместить дисрибутив. Пользователям Gentoo повезло больше всех, так как данный диструбутив вообще когда-то не содержал инсталятора и установить его можно из stage3 тарболла следующим образом:
#mkdir /mnt/gentoo
#mount -o loop /mnt/ntfs/coLinux.reiserfs.img /mnt/gentoo
#tar jxvpf <путь к тарболу>/stage3-arch-200x.x.tar.bz2 -C /mnt/gentoo
#umount /mnt/gentoo
Далше везунчики-джентушники могут скачивать образ на виндовую партицию, перезагружаться и преступить к настройке любимой ОС уже под виндой.

С установкой Slackware НА ОБРАЗ всё примерно так же тривиально, только берём не любой живой дистр, а именно загруз диск слаки и грузимся с него. Монтируем раздел харда, в который хотите положить ваш образ. Создаём файл с нулями как было показано выше. Форматируем под реизер или ext3. Монтируем в папку ВАЖНО! - /mnt
Далее запускаем инсталяцию и пропускаем там все геморои связанные в подключением свопа, разбивкой диска и выбором разделов. Сразу начинайте выбирать пакеты и ставить их. Они заинсталятся в /mnt, куда мы предусмотрительно смонтировали образ...

В кофиге вы увидите как можно подключить образ или физические партиции. Оба варианта протестированы и работают.

...... Здесь ещё можно целую кучу написать, но мне лень... :)
...... Кароч установили.....

Запускаем линух.
Можно так:
С:\colinux\> colinux-daemon.exe @colinux.conf

Если не удобно, то можно создать сервис NT:
С:\colinux\> colinux-daemon @colinux.conf --install-service "coLinux"
Запускаем сервис:
net start coLinux
можете и через управление службами запустить.

..... Допустим запустился ( у меня точно запустился :)

Настройка сети.
Я думаю у тех, кто понимает как работает tap, вопросов не возникнет.
Из конфига видно (eth1=tuntap), что сетевое устройсво называется eth1. Исходя из этого и настраиваем наш линукс:
ifconfig eth1 192.168.100.2 netmask 255.255.255.0 up

В винде тож после инсталяции драйвеа появился сетевой девайс. Дайте ему IP: 192.168.100.1 и максу 255.255.255.0
Получается что=то вроде соединения: комп - комп.

Для доступа солинукса в сеть можете построить мост в винде между виртуальным(tap) и реальным соединением или настроить на винде шлюз для линукса. Благо и то и другое делается тремя кликами мыши.

Ставим Xming.
Качаем тут http://sourceforge.net/projects/xming
Настраиваем конфиг файл. Делается это мышкой, потому без коментов :)
Находим в папке с программой файл X0.hosts(если вы используете display:0. Для display:1 создайте X1.hosts)
Это файл с IP которым разрешено коннектиться к X-серверу
Пишем туда строку:
192.168.100.2

Запустился...

Теперь запускаем C:\colinux\colinux-console-fltk.exe или colinux-console-nt.exe и логинимся.

В текущей консоли пишем:
$export DISPLAY=192.168.100.1:0.0

Теперь для всех прог с графическим интерфейсом будет использоваться не локальный X-сервер, а виндовый.

Запускаем:
$konsole &
Это потому что ни colinux-console-nt.exe ни colinux-console-fltk.exe не отображают все шрифты кроме латинских. Потому после локализации лучше поступать именно так :)

Всё устал.... zzzZZZ

=============================================
END
=============================================
Как я уже сказал материал не то чтобы сырой, убогий, с тупым сленгом и орф. ошибками, так что ставте мне твёрдую тройу (или двойку), но может кому-то и поможет...
В принципе всё что написано в конфиге, я надеюсь, достаточн для понимания хоть и не начинающим.
Остальное найдёте в документации на colinux и в gentoo-colinux-howto.


Чтобы не быть голословным вот скриншоты. Правда они сделаны несколько раньше чем написана статья. Но учитывая сегодняшнюю дату это всё равно...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Live like WYSIWYG!
Спасибо сказали:
Аватара пользователя
Gogast
Сообщения: 549
ОС: Gentoo amd64

Re: Linux в Windows !Внимание БЕЗ VM

Сообщение Gogast »

старьё. есть andLinux - там ничего настраивать ненадо
Без виндовза 3 года
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4462
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Linux в Windows !Внимание БЕЗ VM

Сообщение Rootlexx »

Gogast писал(а):
16.10.2008 23:04
старьё. есть andLinux - там ничего настраивать ненадо

Если бы вы читали внимательнее, вы бы прочли это:
pr0n1x писал(а):
16.10.2008 21:42
В июньском номере ][ освещалась в кратце эта тема на примере andLinux. Но давайте разберёмся. andLinux - дистрибутеив специально созданный для работы под colinux ядром на базе Ubuntu. На самом деле всё что нам потребуется это colinux и почти любой дистрибутив.

То есть автор специально описывает как раз процесс создания своей сборки на основе coLinux. И наличие andLinux тут ни при чём.
Спасибо сказали: