Bądź: Wyszukaj na stronie z użyciem Google
reklama:

poniedziałek, 10 listopada 2008

Nie ma to jak dobre QEMU - przewodnik początkującego

Autor: , 20:40, poniedziałek, 10 listopada 2008


- Czym jest QEMU?
- Rosyjska Wikipedia podaje: "QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ." Innymi słowy, dzięki QEMU możesz uruchomić najnowsze Ubuntu, mając obraz płyty na dysku - bez nagrywania na CD, bez restartu, w obrębie działającego systemu.

- Jako "Live CD"?
- Tak. Ale nie tylko. Taki system możesz sobie zainstalować na wirtualnym dysku. Przydatne, gdy np. chcesz przećwiczyć instalację nowego systemu operacyjnego, dzięki czemu będziesz umiał zainstalować system na swoim dysku twardym.
To tylko przykłady zastosowań.
- Ale są też inne programy, które pozwalają na to samo: VMware Player, VirtualBox (z tych najpopularniejszych wieloplatformowych). Czy warto zatem używać QEMU?
- Zależy. QEMU jest trudniejsze w obsłudze dla nowicjusza, ale banalnie proste, jak tylko zorientujesz się w opcjach. Program uruchamiamy z poziomu konsoli. Jednakże dzięki temu można utworzyć prosty skrypt/aktywator, który uruchamia nasze QEMU z opcjami, jakie sobie wymarzymy, przez kliknięcie myszą. Po drugie, QEMU jest dość ubogie w interfejs. Ma to swoją zaletę. Mianowicie, przy wirtualizacji bardzo liczy się pamięć operacyjna, a QEMU rezerwuje sobie niewiele ponad to, co przydzielamy aplikacji jako RAM dla wirtualizowanego systemu. Ale co tam dużo mówić - instalacja QEMU (sudo apt-get install qemu) wzbogaca nasz dysk tylko o ok. 30 MB, czemu więc nie spróbować? Jest to program typu OpenSource, całkowicie darmowy.
- Od czego zacząć?
- Na początek proponuję pobranie jakiejś małej dystrybucji Linuksa. Niech to będzie Puppy Linux (http://www.puppylinux.org/ - prawie 100 MB) lub Damn Small Linux (http://www.damnsmalllinux.org/ - około 50 MB... a tu, patrzcie no, niektóre dystrybucje na płytach CD się nie mieszczą!). Uruchom konsolę i przejdź do katalogu, do którego pobrałeś plik iso (prawdopodobnie folder Pulpit). Polecenie cd.
- Jestem.
- No to wpisz, co następuje: qemu -no-kqemu -cdrom [nazwa-pliku].iso -boot d -m 128. Porada: jeżeli system się nie chce uruchomić, jednym z najczęstszym błędów jest "No bootable device". Oznacza to, że dany plik nie jest obrazem bootowalnego systemu lub - co się zdarza częściej - parametr boot jest nieprawidłowy.

  • -boot a - dyskietka
  • -boot c - dysk twardy
  • -boot d - CD-ROM
  • -boot n - sieć


- Działa. Pojawiło się okienko, w którym uruchamia się Linux!
- O to chodziło. A teraz wyjaśnienie pozostałych opcji.

  • -no-kqemu - uruchomienie QEMU bez wykorzystania modułu kqemu (bez niego system-gość działa wolniej, jednakże kqemu należy sobie samodzielnie skompilować)
  • -cdrom dysk.iso - dołącz obraz dysku CD
  • -m 128 - ilość pamięci operacyjnej, jaką przeznaczamy dla systemu (tu: 128 megabajtów)

- Nawet intuicyjne.
- Nie inaczej. :-) Jak się zapomni, można otworzyć plik /usr/share/doc/qemuc/qemu-doc.htm lub wywołać man qemu. (Polecenie man opuszcza się wciskając q.)
- Co mogę zrobić, żeby obsługiwać system uruchomiony w QEMU?
- Możesz kliknąć w okienko. Program QEMU zabierze sobie grzecznie kursor myszy. Ale bez nerwów, co zabierze, to i odda bez protestu. Wystarczy wcisnąć ctrl+alt. Ponowne użycie tej sekwencji spowoduje, że program znów przechwyci kursor.
- Ad aspera ad astra.
- Przez żołądek do serca?
- Niezupełnie o to chodziło.
- Nieważne. Teraz inny, bardzo użyteczny skrót. Jak przejść do trybu pełnoekranowego? Otóż, wystarczy wcisnąć ctrl+alt+f (f jak fullscreen, łatwo zapamiętać). Przejście do trybu okna - ten sam skrót.
Czy wiesz, jak można wysłać do "wirtualnego" systemu kombinację klawiszy ctrl+alt+del?
- Trzeba wcisnąć ctrl+alt+del...
- Nie! Ta kombinacja trafiłaby do systemu-gospodarza. Zrób tak: wciśnij ctrl+alt+2. Pojawi się wirtualna konsola nr 2. Jak wpiszesz help [enter], pojawi się pomoc. Tekst można przewijać z użyciem ctrl+PageUp / ctrl+PageDown. Teraz wpisz help sendkey - i wszystko jasne. Jeśli chcesz przesłać do wirtualnej maszyny ctrl+alt+del, wpisz sendkey ctrl-alt-delete. Wyświetl ekran systemu: ctrl+alt+1.
Inne ciekawe polecenie: screendump nazwa-zrzutu zapisuje zrzut ekranu (uwagi: jeśli nie podamy ścieżki, plik jest zapisywany w bieżącym katalogu; jeśli plik nazwa-zrzutu istnieje, jest nadpisywany bez pytania; format pliku to PPM, można otworzyć w GIMP-ie i zapisać np. jako PNG, jeśli to ma znaczenie). Warto też znać polecenie q, które natychmiast kończy pracę programu QEMU (wszelkie niezapisane zmiany w systemie-gościu zostaną utracone!).



- Z programem QEMU dostarczany jest przydatny, wartościowy, użyteczny, czasem wręcz niezastąpiony program qemu-img.
- Cóż to on wyprawia takiego?
- Ano tworzy dyski wirtualne, posiada możliwość konwersji z/do formatów: "parallels qcow2 vvfat vpc bochs dmg cloop vmdk qcow cow host_device raw" (uruchom qemu-img bez parametrów, wyświetli się krótka pomoc i ta właśnie lista). To jest to! Jak widać, jest to "mądry" program, który pozwala na wykorzystanie obrazów dysków pochodzących od różnych programów do wirtualizacji.
- Po co mi to wiedzieć?
- Jeśli chcesz wykorzystać jakiś system operacyjny w pełni, trzeba na ogół posłużyć się wirtualnym dyskiem. Taki dysk można sformatować i utworzyć na nim np. partycję swap, dzięki czemu wirtualizowanemu systemowi można przydzielić więcej pamięci (inna sprawa, że taki system będzie wolniej działał). Analogicznie do "prawdziwego" systemu: jeśli mamy mało RAM-u, sytuację może ratować partycja swap w Linuksie (lub plik wymiany w Windowsie).
Tworzenie wirtualnego dysku.
qemu-img create -f qcow2 nazwa-pliku.img -size 2G
Polecenie to tworzy obraz dysku nazwa-pliku.img w formacie qcow2, który jest odpowiednikiem dysku 2-gigabajtowego. Początkowo plik jest mały, rozrasta się, gdy coś na niego zapisujemy z poziomu maszyny wirtualnej (nie dotyczy formatu raw, który ma ustalony rozmiar).
Jeżeli dysk ma być wykorzystywany tylko przez QEMU, proponuję natywny format - qcow2. W przeciwnym wypadku warto użyć już wspomnianego formatu raw, który nie jest kompresowany, ale za to nie będzie problemu z użyciem takiego obrazu w innym programie do wirtualizacji. Choć oczywiście można wybrać np. qcow2 i w razie potrzeby przekonwertować.
- I jak taki obraz wykorzystać?
- Wystarczy użyć odpowiedniego parametru.

  • -fda dysk.iso - dołącz plik dysk.iso, który jest obrazem dyskietki
  • -hda dysk.iso - j.w., z tym że plik jest obrazem dysku IDE
  • -cdrom - dołącz obraz dysku CD-ROM

Na tych trzech poleceniach nie kończy się możliwość dołączania dysków wirtualnych. Jednakże na początek one w zupełności wystarczą.
W razie potrzeby należy odpowiednio zmodyfikować parametr boot. Na przykład, jeśli dany plik jest obrazem dysku twardego i właśnie z niego system ma startować, wklepujemy:
qemu -no-kqemu -hda nazwa-pliku.img -boot c
Przy okazji: jeśli uruchamiamy system Windows, warto dołączyć -localtime. Program ustawi wtedy czas jako czas lokalny (nie UTC).
- Dzięki poleceniom wpisywanym w konsoli można łatwo uruchamiać program z wybranymi parametrami, ale...
- Tak, istnieją graficzne programy pomagające konfigurować wirtualne maszyny czy zarządzać nimi, jak również obrazami dysków (Qemu Lanucher, Qemulator), czy kontrolować maszynę w trakcie jej działania (qemuctl). Wszystkie te programy znajdują się w repozytorium Ubuntu.
- Gdzie mogę uzyskać więcej informacji?
- Na stronie domowej http://bellard.org/qemu/, w podręczniku man (man qemu), w pliku /usr/share/doc/qemu/qemu-doc.html (dostępny również na stronie programu). Warto też uruchomić qemu --help lub, dla wygodnych, samo qemu.

Tagi: ,

Komentarze 7 comments
Dvalin pisze...

ostatnim razem, gdy uzywalem quemu to mialem gui :S... ale to byl windows i gotowa paczka z reactos bodajze

Anonimowy pisze...

w repo jest Qemu Launcher i mocno ulatwia sprawę

Anonimowy pisze...

nie lepiej zamiast -no-kqemu uzywac KVM - chyba kazda duza wspolczesna dystrybucja przychodzi z modulem KVM w jadrze.

Enlik pisze...

Ale jest inna kwestia.
Nie wiem, czy KVM działa na maszynach bez wsparcia sprzętowego dla wirtualizacji... Jeśli nie, to dla użytkowników komputerów takich jak mój program ten jest bezużyteczny.
Chyba że można...

nme pisze...

działa bez wsparcia, przecież jest na bazie Qemu.
Zapomniałem w biosie na notebooku aktywować wirtualizacji (polecam sprawdzić, domyślnie wyłączona, przynajmniej z mojego doświadczenia dla Intela i na desktopach i maszynach serwerowych) i się zastanawiałem dlaczego jakieś distro Asteriskowe na bazie CentOS'a instaluje się ponad 2 godziny... ;)

nme pisze...

...pozatym, pod Ubuntu ma piękny "pożyczony" ze stajni Redhata klikany virt-manager. Niestety, tworzony z myślą o Xenie, KVM został dodany później... Co niestety uniemożliwia z wyklikać format obrazu jako qcow2.

o qcow2 autor tekstu również mógł wspomnieć. umożliwia tworzenie obrazów o rozmiarze mniejszym niż deklarowany oraz udostępnia możliwość robienia bazowych obrazów. np. stawiamy XP, aktualizujemy, zapisujemy jako sda-base.qcow2, następnie tworzymy obraz sda.qcow2 oparty o sda-base.qcow2 który jest jedynie różnicowy. Instalujemy sobie aplikacje, testujemy - jak nam się znudzi, usuwamy różnicówke, tworzymy nową i mamy czystego spatchowanego XP, albo mergujemy różnicówke do bazowego woluminu.
wszystko niestety trzeba wykonać z palca, ale można takiego qcow2'a wrzucić do xml'a z virsh (interfejs command-line do virt-managera), więcej informacji w manualu do Ubuntu Server.

Enlik pisze...

nme: dzięki za komentarz!
Tworzenie obrazów w oparciu o bazowe to przydatna rzecz (w sumie zwróciłem na to uwagę po lekturze Twojego posta), jednak przy okazji chciałem pokazać coś prostszego: przy uruchamianiu QEMU można dodać parametr -snapshot, dzięki czemu żadne zmiany nie zostaną zapisane w obrazie dysku. Zapisanie zmian można wymusić przez użycie ctrl+alt+2 i wpisanie commit all.
Ten artykuł prezentuje tylko podstawy i jest wstępem do bliższego zapoznania się z programem w razie potrzeby.

Prześlij komentarz


Popularne posty

Etykiety