next next
Next: Uruchamianie i odpluskwianie UML Previous: Wstęp do UML

Kompilacja i instalacja UML

Użytkowników (obecnych na prezentacji) bardziej interesuje kompilacja i uruchamianie ze źródeł niż posłużenie się pakietem RPM lub wykonywalnym plikiem binarnym. Gotowe pliki binarne można np. znaleźć na stronie:

Jeżeli chcemy poznać konfigurację, z jaką zostało skompilowane pobrane w wersji binarnej jądro UML to należy wywołać polecenie:

damian@linux :~/UML>./linuxXXXX --showconfig


Skąd wziąć źródła UML?

User Mode Linux jest bezpośrednio zawarty od wersji 2.6.* w kodzie źródłowym jądra Linuksa i na potrzeby laboratorium może zostać skompilowany bez potrzeby używania dodatkowych nakładek na kod źródłowy. Do kompilacji wystarcza zatem kod źródłowy zamieszczony na wydziałowym serwerze(w katalogu /usr/local/src), kody źródłowe dla innych wersji są dostępne na stronach:

Do poprawnego działania wirtualnej maszyny potrzebny jest oprócz źródeł pakiet uml_utilities, który można znaleźć na stronie:

Dla plików ~/UML/kernel/linux-2.6.17.9.tar.bz2 oraz ~/UML/tmp/uml_utilities_20060323.tar.bz2 instalacja przebiega następująco:

Wykonujemy polecenia:

  1. cd ~/UML/kernel/
  2. bzip2 -dk linux-2.6.17.9.tar.bz2
  3. tar -xf linux-2.6.17.9.tar
  4. cd linux-2.6.17.9
  5. make menuconfig ARCH=um

Po wywołaniu polecenia ukazuje się program pomagający w konfiguracji jądra. Bardziej zaawansowani użytkownicy mogą bezpośrednio edytować plik config według potrzeby. Zamiast menuconfig można też użyć programów xconfig lub config .

Najważniejsze opcje konfiguratora:

Menu UML-specific options :

Menu Loadable module support:

Menu Character Devices:

Menu Block Devices:

Menu Kernel hacking:

Wyłączenie obsługi zbędnych opcji przez jądro może przyśpieszyć jego kompilację, zwiększyć wydajność i zmniejszyć prawdopodobieństwo problemów przy kompilacji i uruchamianiu.

 

  1. make linux ARCH=um

Polecenie kompiluje jądro UML. Jeżeli zakończy się bezbłędnie to użytkownik w katalogu otrzymuje pliki wykonywalne linux oraz vmlinux, którymi można uruchamiać UML

Moje problemy z kompilacją:

Błąd

Przyczyna

Sposób rozwiązania

różne błędy podczas kompilacji

brak flagi ARCH=um

polecenie make clean czyści katalog, można kompilować ponownie

pewien plik się nie kompiluje

źle dobrany plik

zaglądnąć do katalogu z plikiem, sprawdzić czy nie występuje tam w kilku wersjach lub czy nie ma tam osobnego Makefile

pewien plik się nie kompiluje

brak jakiejś biblioteki

znaleźć plik lub Makefile w danym katalogu, sprawdzić poprzez tresć pliku lub zachowanie lokalnego Makefile jakiej biblioteki w systemie brakuje

Gdy mamy już skompilowane jądro należy przystąpić do kompilacji modułów:

  1. make modules ARCH=um
  2. make modules_install ARCH=um lub make modules_install INSTALL_MOD_PATH=wybrany_katalog ARCH=um

Moduły instalują się standardowo w katalogu systemowym: /lib/modules/ . Moduły jądra są potrzebne do jego prawidłowego działania, po ich otrzymaniu należy je umieścić w katalogu /lib/modules/ obrazu systemu plików, z którym będzie pracowało dane jądro UML.

Po instalacji modułów aby przegrać je do obrazu systemu plików dla UML umieszczonego w pliku root_fs (patrz poprzednia prezentacja) wykonujemy polecenia:

  1. strip linux - odchudzenie pliku binarnego o symbole z plików obiektowych
  2. cd ~/UML/tmp/
  3. bzip2 -dk uml_utilities_20060323.tar.bz2
  4. tar -xf uml_utilities_20060323.tar
  5. cd uml_utilities_20060223
  6. su
  7. make && make install

Skompilowane jądro UML można skopiować do katalogu, który jest zapisany w zmiennej środowiskowej PATH - np ~/bin. Pozwoli to uruchamiać maszynę wirtualną z dowolnego katalogu.