QEMU
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: QEMU
Как я помню, команда запуска VM выглядит примерно так (по крайней мере команда 1-го запуска, когда предполагается загрузить с CD образа .iso и установить на виртуальный диск):cema писал(а):Как в консольной QEMU задать размер диска на который производится установка?
Код: Выделить всё
$ qemu -hda <img.file> -cdrom ....iso -boot d
<img.file> - это должен быть сырой неразмеченный образ диска, на котором дальше будет делаться разбивка на разделы, форматирование и т.д. Могут быть самые разные форматы, с образами, форматами и их преобразованием работает утилита: qemu-img. Наберите команду, и в последних строках вывода вы увидите то великое множество форматов, которое поддерживает QEMU:
Код: Выделить всё
bash-4.2$ qemu-img --help
qemu-img version 1.0,1, Copyright (c) 2004-2008 Fabrice Bellard
...
Supported formats: vvfat vpc vmdk vdi sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug
Код: Выделить всё
$ dd if=/dev/zero of=<img.file> bs=1024 count=1000000
Так вы получите 1Gb диск. Но здесь у вас образ будет занимать место его заказанного размера.
Большинство других форматов - сжатые: 10Gb образ диска может занимать несколько десятков Kb пока этот диск пустой, а по мере заполнения файл будет расти. Создать образ диска сжатого формата можете:
1. разобравшись с утилитой qemu-img (команда create);
2. создать в VirtualBox заготовку образа в формате .vdi, .vmdk и др., а потом её использовать в QEMU (они совместимы).
Кроме того, qemu-img умеет изменять размер образа диска (команда resize).
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: QEMU
Для QEMU, кстати, есть много GUI обёрток, они очень приличного качества, я опробывал не менее 4-х в разное время, по мере того, как вспомню, может, допишу сюда:cema писал(а):Как в консольной QEMU задать размер диска на который производится установка?
1. AQemu
2. Qemu Launcher
...
Re: QEMU
понял, буду разбираться
Re: QEMU
Что-то у меня не взлетает. Насоздавал образов дисков и VM, и с помощью qemu-img, при запуске выходит назад в терминал:
Код: Выделить всё
$ qemu -hda qvd.img -L ./ /home/dmitry/Загрузки/debian-wheezy-i386-efi-test4.iso
qemu: -L ./: drive with bus=0, unit=0 (index=0) exists
Re: QEMU
Кажется взлетелcema писал(а):Что-то у меня не взлетает. Насоздавал образов дисков и VM, и с помощью qemu-img, при запуске выходит назад в терминал:
Код: Выделить всё
$ qemu -hda qvd.img -L ./ /home/dmitry/Загрузки/debian-wheezy-i386-efi-test4.iso qemu: -L ./: drive with bus=0, unit=0 (index=0) exists
Просто записал образ на диск, вставил в CD-ROM и запустил все командой:
Код: Выделить всё
$ qemu -hda qvd.img -L ./ -cdrom /dev/cdrom
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: QEMU
Один из самых хлопотных моментов при запуске, установке, испытании и т.д. нового дистрибутива (Linux и не только) под QEMU - это раскрутка сети для VM (многие дистрибутивы потребуют сеть ещё на этапе инсталляции-запуска для доступа к репозитариям).cema писал(а): Кажется взлетел
Просто записал образ на диск, вставил в CD-ROM и запустил все командой:Код: Выделить всё
$ qemu -hda qvd.img -L ./ -cdrom /dev/cdrom
И нужно решать это в 2-х аспектах:
1. организовать связь VM с хост-машиной (без этого следующий пункт не решить);
2. организовать транзит трафика из VM сквозь хост-машину на дефаултный шлюз LAN и далее в интернет;
п.1. решается управлением таблицы маршрутизации (добавлением дефаултного маршрута на хост, route add ...).
п.2. имеет 2 варианта решения:
- Использованием TAP интерфейса для VM + NAT фильтрацией из TAP подсети в реальную LAN;
- Организацией бриджа (моста) на хосте для связи с LAN (взамен реального интерфейса eth0) + утилитой brctl добавить к этому бриджу а). реальный интерфейс в LAN (eth0) и TAP интерфейс к VM. Этот способ может потребовать дополнительно установить пакет bridge-utils:
Код: Выделить всё
olej@notebook:~$ apt-file find brctl
bash-completion: /usr/share/bash-completion/completions/brctl
bridge-utils: /sbin/brctl
bridge-utils: /usr/share/man/man8/brctl.8.gz
selinux-policy-default: /usr/share/selinux/default/brctl.pp
selinux-policy-dev: /usr/share/selinux/default/include/admin/brctl.if
selinux-policy-dev: /usr/share/selinux/mls/include/admin/brctl.if
selinux-policy-doc: /usr/share/doc/selinux-policy-doc/html/admin_brctl.html
selinux-policy-mls: /usr/share/selinux/mls/brctl.pp
zsh: /usr/share/zsh/functions/Completion/Linux/_brctl
zsh-beta: /usr/share/zsh-beta/functions/Completion/Linux/_brctl
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: QEMU
Например:Olej писал(а): - Использованием TAP интерфейса для VM + NAT фильтрацией из TAP подсети в реальную LAN;
Есть LAN: 192.168.1.0/24, дефаултный шлюз 192.168.1.1, хост 192.168.1.20, на нём работает кэширующий DNS, DNS работает ещё на маршрутизаторе в WAN (ADSL 192.168.1.1) и резервный DNS Google 8.8.8.8
Требуется: запустить VM в QEMU с локальной виртуальной сетью 10.0.200.0/8 (любой, отличной от 192.168.1.0/24: 10.*, 172.*, 192.168.*) + настроить выход из сети VM в WAN.
1. запускать QEMU будем с созданием (автоматическим) интерфейса TAP...
2. для этого создаём скрипты запуска и останова TAP интерфейса (и устанавливаем этим файлам флаг исполнимости x):
Код: Выделить всё
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ cat /etc/qemu-ifup
#!/bin/sh
echo '---------------- IFUP -------------------'
/sbin/ifconfig $1 10.0.200.1
iptables -t nat -A POSTROUTING -s 10.0.200.0/24 -j MASQUERADE
Код: Выделить всё
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ cat /etc/qemu-ifdown
#!/bin/sh
echo '--------------- IFDOWN ------------------'
/sbin/ifconfig $1 down
iptables -t nat -D POSTROUTING -s 10.0.200.0/24 -j MASQUERADE
3. Проверяем (на всякий случай) включенность IP4 форвардинга на хосте ... и включаем его:
Код: Выделить всё
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ /sbin/sysctl -a | grep forward
...
Код: Выделить всё
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ cat /etc/sysctl.conf | grep forward
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
net.ipv6.conf.all.forwarding=1
Код: Выделить всё
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ sudo /sbin/sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Код: Выделить всё
olej@notebook:~/Загрузки/ISO-Linux/Puppy$ sudo qemu -m 800M -hda /dev/sdb1 -cdrom precise-5.7.1-ru.iso -boot c -enable-kvm -net nic,vlan=0 -net tap,vlan=0 -localtime
---------------- IFUP -------------------
...
После такого старта должно быть (проверяем!!!):
- интерфейс tap0 поднят и ему присвоен IP:
Код: Выделить всё
root@notebook:/media# ip addr show dev tap0
15: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether 7a:97:a9:1c:18:db brd ff:ff:ff:ff:ff:ff
inet 10.0.200.1/8 brd 10.255.255.255 scope global tap0
inet6 fe80::7897:a9ff:fe1c:18db/64 scope link
valid_lft forever preferred_lft forever
Код: Выделить всё
root@notebook:/media# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.0.200.0/24 anywhere
Настройка и запуск со стороны хоста QEMU сделана.
Остаётся настройка встречной стороны на запущенной VM.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: QEMU
5. Установить IP VM из той же подсети, что и tap0 хоста:Olej писал(а):Настройка и запуск со стороны хоста QEMU сделана.
Остаётся настройка встречной стороны на запущенной VM.
Код: Выделить всё
# ifconfig eth0 10.0.200.15 up
6. Установить маршрут по умолчанию на хост:
Код: Выделить всё
# route add -net default gw 10.0.200.1
Код: Выделить всё
# cat /etc/resolv.conf
nameserver 10.0.200.1
nameserver 192.168.1.1
nameserver 8.8.8.8
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: QEMU
8. Контролировать всё ли правильно происходит, так как предполагали, и не напартачили ли с командами - можете на хосте командой по типу:Olej писал(а):Наслаждайтесь
Код: Выделить всё
olej@notebook:~$ sudo /usr/sbin/tcpdump -n -i any ip proto \\icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
...
20:43:40.481733 IP 10.0.200.15 > 192.168.1.1: ICMP echo request, id 55878, seq 0, length 64
20:43:40.481798 IP 192.168.1.20 > 192.168.1.1: ICMP echo request, id 55878, seq 0, length 64
20:43:40.482726 IP 192.168.1.1 > 192.168.1.20: ICMP echo reply, id 55878, seq 0, length 64
20:43:40.487412 IP 192.168.1.1 > 10.0.200.15: ICMP echo reply, id 55878, seq 0, length 64
20:43:41.500391 IP 10.0.200.15 > 192.168.1.1: ICMP echo request, id 55878, seq 1, length 64
20:43:41.500432 IP 192.168.1.20 > 192.168.1.1: ICMP echo request, id 55878, seq 1, length 64
20:43:41.501260 IP 192.168.1.1 > 192.168.1.20: ICMP echo reply, id 55878, seq 1, length 64
20:43:41.501272 IP 192.168.1.1 > 10.0.200.15: ICMP echo reply, id 55878, seq 1, length 64
20:43:42.501750 IP 10.0.200.15 > 192.168.1.1: ICMP echo request, id 55878, seq 2, length 64
20:43:42.501793 IP 192.168.1.20 > 192.168.1.1: ICMP echo request, id 55878, seq 2, length 64
20:43:42.502618 IP 192.168.1.1 > 192.168.1.20: ICMP echo reply, id 55878, seq 2, length 64
20:43:42.502636 IP 192.168.1.1 > 10.0.200.15: ICMP echo reply, id 55878, seq 2, length 64
...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей