MoonLightOS

Podstawa Ubuntu bez pulpitu Ubuntu

Żadna inna podstawa Linuksa nie ma tak dużego repozytorium pakietów i tak szerokiej obsługi sprzętu jak Ubuntu. Sam pakiet linux-firmware obsługuje większość używanych układów Wi-Fi, Bluetooth, kart graficznych i chipsetów, a ubuntu-drivers-common porządnie radzi sobie z kartami NVIDIA. Secure Boot działa od razu, bo w repozytorium leżą podpisany shim Canonicala i podpisany GRUB, a jądro też jest podpisane. Do tego podstawa dostaje dwanaście lat poprawek bezpieczeństwa.

Wymiany wart był sam pulpit Ubuntu: jest ciężki, nie ma przycisku Start, ikon na pulpicie ani paska zadań. Cinnamon ma to wszystko. Dlatego MoonLightOS wychodzi od minimalnej podstawy i dopiero na niej stawia pulpit. Pulpit Ubuntu nie jest instalowany, a nic z tego, co widzi użytkownik, nie wspomina o podstawie.

Jedno zostało celowo bez zmian: nazwa kodowa wydania, którą widzi apt, to nadal „resolute”, bo opierają się na niej repozytoria PPA i wszystko, co wywołuje lsb_release. Nazwy i logo, które widać na ekranie, pochodzą z /etc/os-release.

Zrzut ekranu MoonLightOS
Logo stoi nieruchomo, a światło wokół niego pulsuje. Dwie poświaty o cyklach 2,6 i 3,1 sekundy raz rozchodzą się w fazie, raz znów ją zgrywają, więc blask nigdy nie wygląda mechanicznie. Obie powstają z grafiki źródłowej podczas budowania, a to samo logo i ta sama poświata pojawiają się w menu GRUB-a, na ekranie logowania, w instalatorze, w panelu O systemie i w oknie Witaj.

Wygląd

Jeden panel u dołu, o wysokości 52 pikseli. Po lewej przycisk Start i pole wyszukiwania, na środku uruchomione programy z największymi ikonami na panelu, po prawej obszar powiadomień. Menu pokazuje zdjęcie i nazwę użytkownika oraz to, czy może on administrować komputerem, a jego pole wyszukiwania znajduje programy, ustawienia, pliki i wyniki z internetu.

Zrzut ekranu MoonLightOS
Zrzut ekranu z prawdziwego uruchomienia zainstalowanego obrazu, nie wizualizacja.

Trzy układy

  • MoonLight

    Jeden panel u dołu. W doku mieszczą się też ulubione programy, więc nie ma drugiego rzędu skrótów.

  • Dwa panele

    Wąski pasek u góry na zegar i ikony stanu oraz dok u dołu, który chowa się automatycznie.

  • Kompaktowy

    Jeden wąski pasek u góry. Zajmuje najmniej miejsca na ekranie i jest najlżejszy dla starej karty graficznej.

Jasny i ciemny

Oba motywy powstają w jednym skrypcie z jednej palety barw i obejmują GTK 2, 3 i 4, powłokę Cinnamona oraz obramowania okien. Motywy GTK importują Adwaitę i zmieniają jej kolory, więc nowe elementy interfejsu i poprawki od autorów trafiają do systemu same. Motyw ikon opiera się na Papirusie i podmienia tylko te ikony, które identyfikują dystrybucję. Kolor wyróżnienia zmienia się w panelu Pulpit i dok.

Przełączanie według harmonogramu

Domyślnie jasny od 7:00, ciemny od 19:00. Niewielka usługa w tle pilnuje, żeby motyw zgadzał się z harmonogramem.

Widżety na pulpicie

Domyślnie widać duży zegar oraz monitor procesora, pamięci i dysku. Prawym przyciskiem myszy można dołożyć kalendarz i karteczki, których treść zapisuje się jako zwykły tekst w trakcie pisania.

Animacja uruchamiania

Logo stoi nieruchomo, a światło wokół niego pulsuje. Dwie poświaty o cyklach 2,6 i 3,1 sekundy raz rozchodzą się w fazie, raz znów ją zgrywają, więc blask nigdy nie wygląda mechanicznie. Obie powstają z grafiki źródłowej podczas budowania, a to samo logo i ta sama poświata pojawiają się w menu GRUB-a, na ekranie logowania, w instalatorze, w panelu O systemie i w oknie Witaj.

Typografia

Inter w interfejsie, JetBrains Mono w kodzie i Noto do wszystkiego innego, łącznie z chińskim, japońskim, koreańskim i kolorowymi emoji.

Siedem tapet

Pięć zdjęć z pingwinem, jeziorem i sierpem księżyca oraz wygenerowana para dzień i noc. Wydanie startuje z tapetą „Zachód słońca nad jeziorem”.

Skróty, które już znasz

Windows i macOS mają inne skróty klawiszowe do niemal wszystkiego. Te dwa zestawy prawie nigdy nie wchodzą sobie w drogę, więc MoonLightOS obsługuje oba: klawisz Super odpowiada za skróty znane z Windows, a Control za te z macOS.

CzynnośćJak w WindowsJak w macOS
Otwarcie menuSuperSuper
WyszukiwanieSuper+SpacjaSuper+Spacja
Menedżer plikówSuper+E—
Zablokowanie ekranuSuper+LCtrl+Super+Q
Pokazanie pulpituSuper+DCtrl+Super+D
Przyciągnięcie okna do połowy ekranuSuper+Lewo / Prawo—
Maksymalizacja i przywrócenieSuper+Góra / Super+DółAlt+F10 / Alt+F5
MinimalizacjaSuper+HAlt+F9
Zamknięcie oknaAlt+F4Super+Q
Pełny ekranSuper+FCtrl+Super+F
Przechodzenie między oknamiAlt+Tab, Super+TabAlt+Tab
Następne okno tego programuAlt+`Super+`
Wszystkie oknaSuper+WCtrl+Góra
Wszystkie pulpitySuper+SCtrl+Dół
Zmiana pulpituCtrl+Alt+Lewo / PrawoCtrl+Lewo / Prawo
Przeniesienie okna na inny pulpitCtrl+Shift+Alt+Lewo / PrawoCtrl+Shift+Lewo / Prawo
UstawieniaSuper+ISuper+,
Monitor systemuCtrl+Shift+Esc—
Uruchomienie poleceniaSuper+R, Alt+F2—
TerminalCtrl+Alt+TCtrl+Alt+T
PrzeglądarkaSuper+BSuper+B
KalkulatorSuper+CSuper+C
Mikser i korektor dźwiękuSuper+ASuper+A
Historia schowkaSuper+VSuper+V
NotatkiSuper+NSuper+N
Konwersja plikówSuper+Shift+CSuper+Shift+C
Zrzut całego ekranuPrintShift+Super+3
Zrzut wybranego obszaruShift+PrintShift+Super+4
Zrzut oknaAlt+Print—
Panel zrzutów i nagrywaniaCtrl+Shift+PrintShift+Super+5
WylogowanieCtrl+Alt+Delete—

Przesunięcie wskaźnika w lewy górny róg ekranu otwiera podgląd okien. Sam klawisz Super otwiera menu, a Super+Spacja otwiera je z kursorem już w polu wyszukiwania.

Trzy formaty pakietów, jeden sklep

W systemie są apt, snap i Flatpak, a GNOME Software pokazuje wszystkie trzy źródła: najpierw snapy, potem pakiety z repozytorium Ubuntu, na końcu Flathub. Pakiet .deb jest zawsze najlżejszy, a Flathub uzupełnia resztę.

Program Snap Store sam jest snapem, a jego zależności zajmują około gigabajta, czyli za dużo na obraz przeznaczony dla komputerów z 2 GB pamięci RAM. Dlatego sklep od pierwszego uruchomienia potrafi wyszukiwać i instalować snapy, a sam program Snap Store dociąga usługa, gdy tylko pojawi się połączenie z internetem.

Panel ustawień Aplikacje pokazuje, co jest zainstalowane, z którego z trzech formatów pochodzi każdy program i czy czegoś nie ma podwójnie.

Programy na obrazie

Dobrane tak, żeby komputer do wszystkiego działał od pierwszego uruchomienia, także bez internetu.

Internet

Firefox (wersja przygotowana przez Mozillę, z uBlock Origin dołączonym jako lokalne rozszerzenie, więc dostępnym też bez internetu), Thunderbird, Geary, Transmission

Biuro i dokumenty

LibreOffice Writer, Calc, Impress i Draw; Evince; Edytor tekstu GNOME; Xournal++; PDF Arranger; MoonLight PDF; Kalendarz; Zegar; Pogoda; Mapy; Kalkulator

Multimedia

VLC; Celluloid; Rhythmbox; GStreamer z libav, zestawami wtyczek „bad” i „ugly” oraz VA-API, dzięki czemu H.264, H.265 i AAC odtwarza każdy program

Grafika i skanowanie

GIMP; Rysowanie; Eye of GNOME; MoonLight Export; Proste skanowanie; Przeglądarka czcionek; Zrzut ekranu

System

GNOME Software; Monitor systemu; Dyski; GParted; Analizator wykorzystania dysku; Timeshift; Redshift; Menedżer archiwów; Seahorse; Blueman; Drukarki; MoonLight Tweaks

Sieć i VPN

NetworkManager z obsługą OpenVPN, OpenConnect (Cisco AnyConnect, GlobalProtect, Fortinet), L2TP, PPTP, SSH oraz wbudowaną obsługą WireGuard

Programowanie

Visual Studio Code; gcc, g++, make, gdb; git, git-lfs; cmake, meson, ninja; Python 3 z pip, venv, NumPy i OpenCV; Node.js i npm; Rust i Cargo; Go; OpenJDK 21 z Mavenem i Gradle; Docker Engine, Compose v2 i Buildx; SQLite

Terminal

GNOME Terminal; bash, zsh i fish; tmux, screen; Neovim, nano; ripgrep, fd, jq, yq, htop, btop, ncdu, tree; nmap, dig, whois, traceroute, httpie, socat; rsync, rclone, aria2; shellcheck; inxi, fastfetch

Zgodność z Windows

Wine z obsługą programów 32-bitowych, winetricks, DXVK (Direct3D od 9 do 11) i VKD3D (Direct3D 12)

Sprzęt i sterowniki

Firmware

Pełny zestaw linux-firmware, mikrokod Intela i AMD oraz fwupd do aktualizacji firmware'u.

Grafika

Mesa z Vulkanem, VA-API i VDPAU dla układów Intela i AMD. Sterownik NVIDII jest na obrazie ISO, więc da się go włączyć w panelu Sterowniki nawet bez internetu.

Wi-Fi i Ethernet

W jądrze ponad pięćdziesiąt sterowników bezprzewodowych, a do tego broadcom-sta i r8168 zbudowane przez DKMS dla układów, z którymi standardowe sterowniki radzą sobie słabo.

Drukarki i skanery

CUPS z pełnym zestawem sterowników, drukowanie do PDF, SANE i Proste skanowanie.

Bluetooth

BlueZ, Blueman i kodeki Bluetooth z PipeWire, a w ustawieniach panel, który wprost informuje, kiedy komputer nie ma układu Bluetooth.

Dźwięk

PipeWire z WirePlumberem, zgodność z PulseAudio i wbudowany dziesięciopasmowy korektor.

Laptopy

power-profiles-daemon, thermald, procent baterii na panelu, domyślnie włączone klikanie dotknięciem i naturalne przewijanie, obsługa urządzeń Wacom i Synaptics.

Maszyny wirtualne

Na obrazie są dodatki gościa dla VirtualBox, QEMU/SPICE i VMware, dzięki czemu rozdzielczość dopasowuje się do okna, a schowek jest wspólny.

Czytniki odcisków palców

fprintd, libfprint i ładowarka TOD są zainstalowane i zintegrowane z PAM. MoonLight Fingerprint rozpoznaje czytnik i prowadzi przez rejestrację odcisku.

Odblokowanie twarzą

Odblokowanie twarzą oparte na OpenCV, działające na ekranie logowania, na ekranie blokady i przy sudo. Nieaktywne, dopóki go nie włączysz.

Bezpieczeństwo

Wszystko poniżej jest domyślnie włączone w zainstalowanym MoonLightOS.

  • Secure Boot

    Firmware → shim Canonicala → podpisany GRUB → podpisane jądro. W Ustawieniach → O systemie widać, czy na tym komputerze jest włączony.

  • Szyfrowanie dysku

    Szyfrowanie całego dysku LUKS2 to jedno pole wyboru w instalatorze.

  • Zapora sieciowa

    ufw jest włączona: połączenia przychodzące są blokowane, wychodzące dozwolone.

  • AppArmor

    Tryb wymuszania, również dla snapów.

  • Automatyczne aktualizacje bezpieczeństwa

    Codziennie, z repozytorium bezpieczeństwa Ubuntu i z packages.mozilla.org. Nieużywane jądra i zależności są usuwane, a komputer nigdy nie uruchamia się ponownie sam.

  • Zablokowany root, sudo przypisane do użytkownika

    Pierwsze konto administruje komputerem przez sudo. Hasło roota nie jest nigdy ustawiane.

  • Jakość haseł i blokada konta

    Co najmniej osiem znaków z dwóch klas znaków. Po ośmiu błędnych próbach konto zostaje zablokowane na piętnaście minut.

  • Utwardzone jądro

    Jądro jest skonfigurowane tak, by ograniczyć to, czego programy bez uprawnień mogą dowiedzieć się o systemie i o sobie nawzajem: wskaźniki jądra i komunikaty startowe są ukryte, debugowanie cudzego procesu jest zablokowane, a wczytanie zastępczego jądra w trakcie pracy wyłączone. Stos sieciowy jest utwardzony przeciw podrobionym trasom i zalewom połączeń, a adresy IPv6 są okresowo zmieniane.

  • Mniejsza powierzchnia ataku

    FireWire oraz zestaw rzadko potrzebnych modułów systemów plików i protokołów sieciowych nie mogą zostać wczytane automatycznie, więc podłączone urządzenie ani odebrany pakiet nie wciągną kodu, z którego ten komputer nigdy nie korzysta.

  • Niepowtarzalne przy pierwszym uruchomieniu

    Identyfikator komputera i klucze SSH powstają na zainstalowanym komputerze. Klucz identyczny w każdej instalacji odbierałby sens weryfikacji hosta.

  • Bez telemetrii

    Usług zgłaszania błędów i statystyk użycia nie ma w obrazie. Telemetria przeglądarki Firefox, badania, Pocket i treści sponsorowane są wyłączone zasadami, a ochrona przed śledzeniem jest włączona.

  • Ochrona portów USB

    USBGuard jest zainstalowany, więc urządzenie podłączone przy zablokowanym ekranie nie jest zaufane. Domyślnie wyłączony, włącza go jeden przycisk w panelu Bezpieczeństwo.

  • Hasło awaryjne

    Drugie hasło, które robi coś innego niż zalogowanie. Tryb czyszczenia niszczy klucze LUKS dysku i wyłącza komputer, a tryb pułapki otwiera pustą sesję i zawiesza ją po pięciu minutach. Domyślnie nieaktywne, do ustawienia potrzebne jest prawdziwe hasło, a oba nie mogą być takie same.

  • Hasło do menu uruchamiania

    Do ustawienia w panelu Bezpieczeństwo, bo inaczej każdy, kto może ponownie uruchomić komputer, zmieni wpis w menu i otworzy powłokę roota.

  • Zrozumiałe pytania o hasło

    Każde narzędzie pomocnicze MoonLight ma własną, nazwaną akcję polkit, więc okno z pytaniem o hasło mówi, na co się zgadzasz.

Zrzut ekranu MoonLightOS
Zrzut ekranu z prawdziwego uruchomienia zainstalowanego obrazu, nie wizualizacja.

Praca na komputerach z małą pamięcią

Skompresowana pamięć (zram)Połowa pamięci RAM, maksymalnie 8 GB, kompresja zstd, priorytet 100. Strony pamięci pulpitu kompresują się mniej więcej 3:1.
Strojenie wymianyDomyślne 60 w jądrze zakłada, że użycie przestrzeni wymiany oznacza sięganie na dysk. Przy zramie oznacza przepisanie pamięci.
Ochrona przed brakiem pamięciWkracza przy 4 % wolnej pamięci, a przy 2 % wysyła SIGKILL. Nigdy nie zatrzymuje Cinnamona, Xorga, LightDM ani Nemo; jako pierwsze zamyka Firefoksa, Thunderbirda, Code, LibreOffice i kompilatory.
Bez indeksowaniaŻadnego trackera i żadnego skanowania dysku w tle.
Automatyczne dostrojenie grafikiPrzy logowaniu system sprawdza, co renderuje OpenGL. Jeśli to llvmpipe albo inny renderer programowy, animacje zostają wyłączone. Późniejszy wybór użytkownika nigdy nie jest nadpisywany.
GRUBProsi o skromny tryb graficzny i ma tryby zapasowe, więc menu pojawia się także w maszynie wirtualnej z małą pamięcią wideo.
SquashfsSpakowany algorytmem zstd, dzięki czemu sesja live szybko wczytuje się z pendrive'a.

Języki

Kreator pierwszego uruchomienia podaje krótką listę: angielski (amerykański i brytyjski), włoski, francuski, niemiecki, hiszpański, portugalski brazylijski, niderlandzki, polski i rosyjski, a wszystkie pozostałe ustawienia regionalne kryją się pod „Więcej języków”. Układ klawiatury idzie za wybranym językiem, więc w drugim kroku zwykle wystarczy kliknąć Dalej.

Wszystkie programy MoonTools, łącznie 774 napisy, są przetłumaczone na te osiem języków poza angielskim, a budowanie kończy się błędem, gdy w programie zostanie widoczny napis bez tłumaczenia. Na obrazie jest włoski pakiet językowy i słowniki LibreOffice, więc instalacja bez internetu we Włoszech jest w pełni zlokalizowana; pozostałe pakiety językowe pobiera się jednym kliknięciem.

Narzędzia wiersza polecenia celowo zostają po angielsku: ich wyniki czyta się razem z dokumentacją i wkleja do zgłoszeń błędów, a z jednym językiem jest to po prostu łatwiejsze.

Zrzut ekranu MoonLightOS

Decyzje projektowe, o których warto wiedzieć

  • Motywy GTK importują Adwaitę i zmieniają jej kolory.

    Motyw pisany ręcznie psuje się przy każdym nowym elemencie interfejsu w GTK. Ten dziedziczy poprawki od autorów.

  • Panel Informacje o systemie z Cinnamona jest przekierowany, a nie usunięty.

    Aktualizacja Cinnamona nie przywróci go po cichu obok naszego, a po usunięciu pakietów MoonLightOS wraca na swoje miejsce bez żadnych śladów.

  • Squashfs trzyma własną kopię jądra.

    To ten sam squashfs, który instalator kopiuje na dysk. Usunięcie z niego katalogu /boot dałoby system, którego nie da się uruchomić.

  • Motyw uruchamiania nazywa się moonlightos, a nie moonlight.

    Debianowy pakiet desktop-base ma już motyw Plymouth o nazwie moonlight, a aktualizacja po cichu podmieniłaby animację.

  • uBlock Origin jest dołączony, a nie pobierany.

    Reguła zasad wskazująca addons.mozilla.org zainstaluje rozszerzenie tylko wtedy, gdy Firefox pierwszy raz uruchomi się z działającym połączeniem. Rozszerzenie leży na obrazie, a usunąć je można w każdej chwili.

  • Docker Engine, a nie Docker Desktop.

    W Linuksie Docker Desktop uruchamia silnik we własnej maszynie wirtualnej, czyli na laptopie dochodzi drugie jądro i drugi budżet pamięci.

  • Ciężkie zestawy do programowania są opcjonalne.

    Maszyny wirtualne, PHP z bazami danych i LaTeX czekają w oknie Witaj na jedno kliknięcie, zamiast gigabajta, który targałaby każda instalacja.