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:
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.
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:
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:
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.