Автор Тема: User-mode linux или qemu за lamp сървър?  (Прочетена 5494 пъти)

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
Здравейте,

Бих искал да си инсталирам сървър с Apache, MySQL и PHP, но понеже нямам допълнителен компютър реших за да не пречи на настоящата инсталация ще го пусна в "защитен режим". Пробвах, чрез qemu и user-mode linux. Успеха ми беше нулев, най-вероятно от това, че не разбирам горепосочените технологии. Идеята ми е да си направя някакъв (възможно най-малък — 200-500М) имидж и там да си инсталирам Дебиан с Apache, MySQL и PHP. Търся решение, което е максимално лесно за управление.

Това, което правя е следното. 1) Правя си имидж. 2) После го форматирам:
Цитат

# mke2fs -j image_file


3) След това го монтирам:
Цитат

# mount -o loop image_file /mnt/image


4) Правя базова инсталация:
Цитат

# debootstrap etch /mnt/image ftp://ftp.bg.debian.org/debian/


5) "Влизам във владение"
Цитат

# chroot /mnt/image


6) Добавям в /etc/sources.list български мирър

7) Инсталирам, нужните ми програми
Цитат

# apt-get update
# apt-get install apache2 php5 mysql-server...


Въпросът е как да подкарам така образувания имидж с user-mode linux или qemu? qemu иска специално направен имидж, но не разбрах как да го направя. Сега ще пробвам на моя да му инсталирам един grub и ще видя какво ще стане, като го пусна с qemu.



Активен

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
User-mode linux или qemu за lamp сървър?
« Отговор #1 -: Nov 29, 2006, 01:37 »
Хм! Как да инсталирам grub на имидж?
Активен

alabal

  • Напреднали
  • *****
  • Публикации: 2173
  • cat /earth/europe/bg/sofia | grep Nacamura
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #2 -: Nov 29, 2006, 08:33 »
Цитат
qemu-img create disk.img 512M

По този начин се създава img файл за qemu, а така би трябвало да го пуснеш инсталацията от CD, с 256 MB RAM и с интернет:
Цитат
qemu -net user -net nic,model=rtl8139 -net tap -m 256 -localtime -hda disk.img -cdrom /dev/cdrom -boot d

(quemu ще симулира карта базирана на чип rtl8139)
За да има нет, обаче трябва преди това да изпълниш следното:
Да имаш модула tun/tap в кернела:
# modprobe tun
# nano /etc/qemu-ifup - редакция на файла, за да зададеш мрежата на tap устройството;
Създай следния скрипт във файла /etc/qemu-ifup:

#!/bin/sh
/sbin/ifconfig $1 172.20.0.1
и после:
# chmod +x /etc/qemu-ifup

Ако искаш друг адрес напиши го на мястото на 172.20.0.1. И накрая:
# echo "1" > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

След като инсталираш Debian на виртуалната машина, задай на машината адрес от мрежа 172.20.0.0/24.
Не знам как се работи с user-mode linux и защо използваш друг инструмент от qemu-img за създаването на файл. После инсталацията с quemu протича като нормална стандартна инсталация. Можеш да използваш и iso файл вместо CD за инсталация, но 512 MB за виртуална машина ми се виждат трвърде малко за норамлна инсталация, освен ако не използваш нещо малко, като slax, pentoo и прочие.
А, и още нещо по-добре е да използваш модула kquemu за кернела - той не е open source и трябва да го инсталираш допълнително, но без него quemu е изключително бавен.
Успех!



Активен

It makes you awful glad that you were born a man.

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
User-mode linux или qemu за lamp сървър?
« Отговор #3 -: Nov 29, 2006, 12:48 »
Не правя имидж с qemu-img, защото не разбирам начина му на работа. Той ми прави един празен имидж, който не знам какво да го правя.

Нека да проверим дали съм разбрал.
Цитат
qemu -net user -net nic,model=rtl8139 -net tap -m 256 -localtime -hda disk.img -cdrom /dev/cdrom -boot d

Това нещо зарежда системата от /dev/cdrom, и ако диска е инсталационен, мога да направя инсталация върху disk.img. Прав ли съм?
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #4 -: Nov 29, 2006, 13:32 »
Абсолютно прав си.

Те ги има описани нещата в документацията на qemu, но общо взето това е - правиш си image с qemu-img, после пускаш qemu, както казва alabal и инсталираш.

Можеш да компилираш kqemu - това модул за ядрото, който ускорява работата на виртуалната машина в пъти, но имай предвид, че не е свободен софтуер.
Активен

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #5 -: Nov 29, 2006, 13:34 »
Изображението, което създава qemu е и това с което работи. Най-простия сценарий е да създадеш едно изображение, което представлява диска на системата, която ще емулираш и просто да пуснеш qemu да работи с него, както са ти показали по-горе. Ако желаеш можеш да дефинираш и други устройства, като CD-ROM от който евентуално да стартираш, като тези устройства могат да бъдат и файлове с изображение (.iso).

Това е в общи линиите, давай смело.
Активен

Г. Д. Сотиров

morbid_viper

  • Напреднали
  • *****
  • Публикации: 266
  • Distribution: (Open)SUSE since v5.3 (1999)
  • Window Manager: KDE ориентиран
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #6 -: Nov 29, 2006, 15:42 »
Според мен най-смисления начин освен използваемост и да постигнеш отлично бързодействие е като използваш XEN. Това е паравиртуализационна машина, която се поддържа директно на ниво ядро, позволява дори физическото преместване на работещата машина от един компютър на друг... SUSE и RedHat са включили тази технология в техните Advanced Server продукти.

ето малко ресурси за четене:
http://www.cl.cam.ac.uk/research/srg/netos/xen/
http://www.linuxjournal.com/article/8540
http://www.suse.de/~garloff/linux/xen/
http://www.linuxdevcenter.com/pub/a/linux/2006/01/26/xen.html

дори и да не намериш XEN за подходящото за твоите нужди решение, поне е полезно да прочетеш материалите (поне за мен беше).
Активен

-------------------------------------------------
Blessed are we to taste this life of sin!
-------------------------------------------------
Registered Linux user #251276

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #7 -: Nov 29, 2006, 15:56 »
Определено XEN е може би най-обещаващата технология за виртуализация, но на повечето дистрибуции (по моя скромен опит) е доста по-проблемно за подкарване отколкото qemu.
Активен

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
User-mode linux или qemu за lamp сървър?
« Отговор #8 -: Nov 29, 2006, 16:45 »
Много сложен за работа ми изглежда този XEN. Като начало не мога да схвана, с какво е по-различен от останалите виртуални машини. QEMU ми се струва по-просто. Довечера ще опитам да си направя имидж с  qemu-img. Само дето не ми харесва, че ще трябва да правя специален имидж — искаше ми се да е нещо стандартно.

Няма ли някой с опит с user-mode linux? Там май не трябва въобще да се правят имиджи.
Активен

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
User-mode linux или qemu за lamp сървър?
« Отговор #9 -: Dec 01, 2006, 00:49 »
Много ти благодаря, alabal '<img'> Много ми помогна примера, който ми даде.

Имах успех със зареждането на Slax (slax-server-5.1.8.1.iso) като CD имидж и на Freesco като дискета (и двете без мрежа, защото не бях инсталирал tun драйвера и ми даваше грешка). Не съм пускал X, защтоо не ми е трябвал. Опитах се да инсталирам Дебиан, с netinstall CD-то. За съжаление беше много бавно и аз направих грешката да натисна Ctrl-Alt-Del (защото си мислех, че това е за да ми пусне мишката — оказа се че само Ctrl-Alt) и машината се рестартира. Нямах нерви да го пробвам пак и затова реших да си намеря по-компактна и лесна за инсталация жива дистрибуция. Спрях се на Slax

Сега ще напиша, какво съм направил и какво възнамерявам да направя, за да можа да се връщам тук и да си се консултирам.

Направих си собствено CD със Slax, защото искам Apache, PHP и MySQL, които ги нямаше в Slax-а, а и имиджа беше 190МБ, което ми се струваше много — имаше много неща, които не ми трябват. Така че изтеглих SLAX Frodo Edition v 5.1.8 от SLAX download page, което е базата на всички останали Slax-ове. От SLAX modules page си изтеглих модулите: XAMPP (което всъщност е Apache+MySQL+PHP+не-знам-си-още-какво), lynx и nano (за всеки случай) и webmin_minimal. Всичко общо прави 103M.

Смятам да зередя този имидж и ще пиша какво (и дали) се е получило.



Активен

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
User-mode linux или qemu за lamp сървър?
« Отговор #10 -: Dec 01, 2006, 03:55 »
Нещо не работи в момента. Slax-а си тръгва, но XAMPP не ще. По-скоро в Apache-то е проблема. Сега свалям друг модул - WebServer . За сега имам проблем и с нета. Драйверът tun го имам, но не знам как да го използвам. Доколкото разбрах трябва да направя някакъв виртуален интерфейс, но изгубих мястото, където го прочетох в Интернет. На едно друго място ми каза, че трябва да инсталирам bridge-tools и да направя bridge интерфейс. След като го направих ми изчезна нета и понеже не разбрах как да го оправя, деинсталирах този пакет.

Сега се сетих, защо исках да е user-mode linux. Това чудо пуска Линукс в Линукс. Един вид емулатор на софтуер. На мен не ми трябва хардуерна емулация. Според мен би трябвало да е по-бърз и по-лесен за употреба (не че и с него нямах проблеми).
Активен

mom

  • Напреднали
  • *****
  • Публикации: 266
  • Distribution: Ubuntu
  • Window Manager: Compiz
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #11 -: Dec 01, 2006, 04:43 »
Метни 1 око на тази статия. За Дебиан е, но мисля, че ще ди даде интересни идеи
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #12 -: Dec 01, 2006, 09:09 »
С мрежата нещата седят по следния начин (при мен поне така съм го направил):

1. сваля се адреса на eth0 (замести с интерфейса при теб):

ip addr del $ipaddr dev eth0

2. вдига се bridge интерфейс, който да включва eth0 и да ползва адреса, който сме свалили от eth0 в предишната стъпка:

brctl addbr br0
brctl addif br0 eth0
ip addr add dev br0 $ipaddr
ip link set eth0 up

3. създава се скрипт /etc/qemu-ifup, който изглежда горе-долу така:

#!/bin/sh
sudo /sbin/ifconfig $1 up
sudo /usr/sbin/brctl addif br0 $1

4. задават се права на потребителя, който ще стартира qemu да изпълнява командите от скрипта чрез sudo (няма да описвам как точно става - sudo(8))

5. проверява се, че е зареден tun модула и че потребителя има права за достъп до /dev/net/tun:

lsmod | grep tun

ls -l /dev/net/tun

6. пускаш qemu и ако нещо не съм оплескал нещо трябва да тръгне :)


Реално bridge-а ти играе ролята на switch, в който са включени eth0 и виртуалния интерфейс на qemu.
Активен

paucku

  • Напреднали
  • *****
  • Публикации: 638
  • Distribution: Kubuntu LTS (отскоро е - тествам я в момента)
  • Window Manager: KDE
  • Райчо Николов
    • Профил
    • WWW
User-mode linux или qemu за lamp сървър?
« Отговор #13 -: Dec 03, 2006, 20:46 »
Имам някакъв успех! '<img'>

Направих си имидж, както ми казахте
Цитат
$ qemu-img create mepis_qemu.img

(не гледайте, че се казва Mepis — исках да инсталирам Мепис преди това, но не се оказа добра идея)
Инсталирах Debian Sarge 3.0 — някаква стара дистрибуция, която имам на диск. Нормално би трябвало да се инсталира за около 20-30 минути, но го инсталирах около час и половина-два '<img'>. Все пак успех е, че го инсталирах '<img'>

С това зареждам системата (използвам qemu-launcher — програма с графичен интерфейс, коят извиква qemu)
Цитат
$ qemu -boot c -m 220 -hda '/home/paucku/paucku/mepis_qemu.img' -cdrom  '/dev/cdrom' -net nic,vlan=0 -net user,vlan=0 -localtime -std-vga


Ако "-boot c" се замени с "-boot d", тогава ще стартира системата от CDROM-а — така беше при инсталацията.

Дадох права върху tun интерфейса на paucku
Цитат
#  tunctl -u paucku


Цитат
$ ls -l /dev/net/tun
crw-rw---- 1 root uml-net 10, 200 Dec  3  2006 /dev/net/tun


Освен това, добавих paucku в групата uml-net.

Цитат
# ifconfig tap0 192.168.0.254 up


Цитат
$ qemu -boot c -m 220 -hda '/home/paucku/paucku/mepis_qemu.img' -cdrom  '/dev/cdrom' -net nic,vlan=0 -net user,vlan=0 -localtime -std-vga


Обаче, като се опитам да стартирам емулатора с този интерфейс
Цитат
$qemu -boot c -m 220 -hda '/home/paucku/paucku/mepis_qemu.img' -cdrom  '/dev/cdrom' -net nic,vlan=0 -net tap,vlan=0,ifname=eth0 -localtime -std-vga &
warning: could not configure /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'

Ми дава грешка, че не може да инициализира устройството

Иначе ifconfig дава
Цитат
# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:FC:B5:07:9A
          inet addr:aa.bb.cc.dd  Bcast:aa.bb.cc.255  Mask:255.255.255.0
          inet6 addr: fe80::250:fcff:feb5:79a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21085 errors:0 dropped:0 overruns:0 frame:0
          TX packets:960 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2390921 (2.2 MiB)  TX bytes:86518 (84.4 KiB)
          Interrupt:11 Base address:0xdc00

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:72 errors:0 dropped:0 overruns:0 frame:0
          TX packets:72 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5256 (5.1 KiB)  TX bytes:5256 (5.1 KiB)

tap0      Link encap:Ethernet  HWaddr F6:12:F8:AE:3B:24
          inet addr:192.168.0.254  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f412:f8ff:feae:3b24/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:38 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 'B)'  TX bytes:0 (0.0 'B)'


Вчера си мислех, че съм успял да пусна нета между двете системи, но съм се лъгал, защото съм дал тези адреси(съответно на едната и другата машина): 127.20.0.1 и 127.20.0.2, а се оказа, че всички тези адреси сочат собствената ми машина '<img'> — аз се радвам, че пингвам отсрещната система и че и тя ме пингва, но се оказа че това не е вярно.

Пак пробвах с bridge нещото, но пак имах проблеми — целия нет се скапа. Ще можете ли да ми обясните, какво е това bridge? Направих копи-пейст от написаното по-горе, но не сработи. Изглежда от неразбирането ми идва неправилната му употреба. Съответно го махнах пак.

Иначе аз си представях нещата така: правя си виртуален интерфейс tap0, който за емулираната система е като гейтуей. tap0 на нормалната машина и eth0 на емулираната са в една мрежа и остава въпроса с рутирането. Обаче май не е така. Къде бъркам?



Активен

alabal

  • Напреднали
  • *****
  • Публикации: 2173
  • cat /earth/europe/bg/sofia | grep Nacamura
    • Профил
User-mode linux или qemu за lamp сървър?
« Отговор #14 -: Dec 04, 2006, 08:35 »
Братко, няма нужда от vlan опции.
Освен това, този ред също е излишен:
# ifconfig tap0 192.168.0.254 up
Виж преди какво да напишеш в /etc/qemu-ifconfig.
Доколкото знам qemu, при опция -net се обръща към този скрипт в който $1 се замества с tap. След като боотне виртуалната машина й задай адрес с адрес от мрежата зададена в  /etc/qemu-ifconfig, gatway 172.20.0.1 (или с адреса който си написал в  /etc/qemu-ifconfig) и dns - dns на хост машината.
Работи безотказно при мен.



Активен

It makes you awful glad that you were born a man.