Rozwijanie i debugowanie jądra
UML jest uruchamiany jako proces, można więc w czasie pracy nad jądrem systemu używać narzędzi z poziomu procesów takich jak gdb, gcov, gprof...
Bezpieczne środowisko uruchomieniowe
UML może być uruchomiony w trybie z którego nie ma dostępu do systemu hosta, pozwala to na testowanie niebezpiecznych lub niepewnych fragmentów kodu, bez ryzyka ingerencji w system hosta. Pozwala to także na tworzenie serwerów, które w przypadku problemów mogą być szybko uruchomione ponownie.
Testowanie nowych wersji jądra bez ryzyka utraty danych.
Łatka UML może być nałorzona na najnowsze wersje jądra i jeżeli wciąż zawierają one błędy to nie ucierpi nasz system operacyjny.
Tetowanie nowych dystrybucji
Systemu plków dla UML przechowywane są w plikach na hoscie, dzięki temu można uruchamiać nowe dystrybuce linuxa przydzielając im plik zamiast partycji.
Zarządzanie wirtualnymi sieciami
Można odpalić kilka UMLi na jednym komputerze i nawiązać połączenia sieciowe pomiędzy nimi, jak również można połączyć się z systemem hosta i innymi komputerami. Dzięki temu UML staje się potęznym narzędziem do testowania i nauki konfiguracji sieci komputerowych.
Testowanie konfiguracji
Jądro uruchamiane jest na wirtualnej maszynie, która może być skonfigurowana w sposób zupełnie inny niż fizyczny sprzęt. Może mieć więcej pamięci, więcej urządzeń, a wkrótce także więcej procesorów. Pozwala to na testowanie linuxa na maszynach do których nie mamy na codzień dostępu.
Nauka i zabawa
UML można zainstalować bez uprawnień roota, dzieki czemu można zarządzać własnym linuxem np. w laboratorium (o ile ma się dosyć miejsca na koncie:-) )
Dzięki zewnętrznemu systemowi operacyjnemu stosunkowo łatwo jest 'zajrzeć' do jądra w czasie wykonywania, co jest niemożliwe w przypadku pojedynczego systemu. Można także testować zachowanie systemu po 'katastrofach' typu 'rm -fr /'.