Powrót do strony głównej
Wstęp
Co jest UML
UML (User Mode Linux) to program, który umożliwia uruchomienie Linux'a pod Linuxem. Daje to użytkownikowi bardzo duże możliwości. Może robić ze swoim nowym systemem co tylko zechce, bez obaw że uszkodzi system macierzysty. UML jest bowiem tylko jednym z procesów Systemu macierzystego (uruchamianym przez dowolnego użytkownika). Nie operuje bezpośrednio na sprzęcie (tak jak zwykłe jądro), ale na funkcjach systemowych udostępnionych przez jądro.
Możliwe jest uruchomienie wielu wirtualnych komputerów na jednym hoście. Mogą one działać zupełnie osobno, lub w sieci. Zawsze są jednak odizolowane od systemu macierzystego.
Na rynku jest wiele podobnych produktów (darmowych i komercyjnych). Istnieją programy emulujące Linux'a pod Windowsem, Windowsa pod Linuxem, Linuxa pod Linuxem itp.
Projekt powstał w 2000 roku i jest ciągle rozwijany. Autorem jest Jeff Dike.
Czym wyróżnia się UML?
Charakterystyczne cechy UML-a, odróżniające go od innych tego typu projektów, to m.in:
- duża szybkość
- UML jest uruchamiany tak jak każda inna aplikacja na hoście. Dzięki temu działa dużo szybciej niż konkurencyjne projekty. Programy uruchamiane pod UML - em działają co najwyżej 20% wolniej niż uruchamiane bezpośrednio na hoście.
- elastyczność
- UML - a można przekształcić w bibliotekę współdzieloną przez inne programy
- dojrzałość
- UML jest rozwijany i udoskonalany od 1999 roku. Ciągle powstają łaty na nowe wersje jądra Linuxa.
- dostępność kodu
- UML jest dostępny na licencji GPL (jako cześć jądra Linuxa)
Gdzie znajduje się UML?
W normalnym systemie możemy wyróżnić następujące warstwy:
- warstwa hardware'u (sprzęt)
- warstwa jądra systemu operacyjnego
- warstwa procesów (ls, ps, netscape itd.)
Gdzie w tej hierarchii znajduje się UML?
Jak już wspomniałem, UML jest tylko zwykłym procesem, więc znajduje się w najwyższej warstwie. Jednak z punktu widzenia procesów działających pod UML-em, jest zwykłym jądrem.
Zastosowania UML
Do czego można użyć UML? Oto niektóre z jego zastosowań:
- rozwijanie i debugowanie jądra, jak zwykłego procesu (używając standardowych narzędzi, takich jak gdb, gprof, gcov)
- testowanie nowych wersji jądra i nowych dystrybucji - ponieważ UML nie działa bezpośrednio na sprzęcie, nie musimy się obawiać, że błędy w nowej wersji jądra zniszczą nam ważne dane. W razie kłopotów po prostu zabijamy UML-a, bez żadnych dodatkowych konsekwencji.
- edukacja - używając UML-a możemy w bezpieczny i wygodny sposób uczyć się zasad działania systemu operacyjnego, administracji siecią, a także modyfikować jądro linuxa
- eksperymenty z maszyną - UML działa na wirtualnej maszynie, którą możemy dowolnie skonfigurować. W szczególności może mieć ona więcej pamięci, zasobów a nawet procesorów niż faktyczny komputer na którym działamy. Możemy więc np. przetestować działanie jądra na sprzęcie, którego faktycznie nie posiadamy.
- eksperymenty z siecią - możemy na jednej maszynie stworzyć wirtualną sieć i testować jej zachowanie. Jest to dużo bezpieczniejsze i tańsze niż stworzenie w tym celu prawdziwej sieci.
- środowisko do testowania - testy niektórych programów wymagają przeładowania systemu. Dzięki UML-owi może to być w prosty sposób zautomatyzowane.
- katastrofy - dzięki UML-owi możemy w bezpieczny sposób sprawdzić, co się stanie jeśli napiszemy np. rm -rf /