MoonLightOS

Przewodnik

Od pobrania pliku do działającego systemu, z podpowiedziami na wypadek, gdyby coś poszło nie tak.

Zanim zaczniesz

Dowolny 64-bitowy komputer z procesorem x86. Instalator wymaga co najmniej 1,7 GB pamięci RAM i 18 GB miejsca na dysku, a poniższe wartości to te, przy których system pracuje wygodnie.

MinimumZalecane
RAM2 GB4 GB
Dysk18 GB30 GB
Procesordowolny 64-bitowy procesor x86dwa rdzenie
Grafikadowolna karta z buforem ramkidowolny układ graficzny z ostatnich 15 lat

Ten sam obraz obsługuje zarówno UEFI, jak i starszy BIOS. Secure Boot może zostać włączony.

Pobranie i sprawdzenie

Obraz to jeden plik, moonlightos-26.04.5-bengunur-amd64.iso, a obok niego leży drugi plik z sumą kontrolną SHA-256. Sprawdź sumę, zanim nagrasz obraz: po przerwanym pobieraniu pendrive wprawdzie się uruchamia, ale potem zawodzi w sposób trudny do rozszyfrowania.

W Linuksie i macOS, w katalogu z pobranym plikiem:

sha256sum -c moonlightos-26.04.5-bengunur-amd64.iso.sha256

W Windows, w programie PowerShell, porównaj wypisany skrót z tym z pliku .sha256:

Get-FileHash .\moonlightos-26.04.5-bengunur-amd64.iso -Algorithm SHA256
Get-Content .\moonlightos-26.04.5-bengunur-amd64.iso.sha256

Pierwsze polecenie wypisuje OK, drugie podaje skrót, który musi zgadzać się z zapisanym w pliku. Każdy inny wynik oznacza uszkodzony plik.

Pobierz 26.04.5

Nagranie obrazu na pendrive

Obraz jest hybrydowy, więc wystarczy zwykłe przepisanie bajt po bajcie: żaden specjalny program nie jest potrzebny, a ten sam pendrive uruchomi się na komputerze z UEFI i ze starszym BIOS-em. Wszystko, co jest na pendrivie, zostanie wymazane. Potrzebny jest nośnik o pojemności co najmniej 8 GB.

W Linuksie i macOS najpierw ustal nazwę urządzenia (lsblk w Linuksie, diskutil list w macOS), a potem:

sudo dd if=moonlightos-26.04.5-bengunur-amd64.iso of=/dev/sdX bs=4M status=progress oflag=direct conv=fsync
sudo dd if=moonlightos-26.04.5-bengunur-amd64.iso of=/dev/rdiskN bs=4m   # macOS

Sprawdź nazwę urządzenia dwa razy: dd zapisuje tam, gdzie mu się każe.

Windows

Skorzystaj z programu Rufus w trybie obrazu DD, z balenaEtcher albo z Ventoy. Gdy Rufus zapyta, czy zapisać w trybie ISO czy DD, wybierz DD.

Uruchomienie z pendrive'a

Włącz komputer z włożonym pendrivem i otwórz jednorazowe menu uruchamiania (F12, F8, F2, Esc albo Del, zależnie od producenta) albo ustaw urządzenie USB jako pierwsze w kolejności uruchamiania w ustawieniach firmware'u. Secure Boot nie wymaga żadnych zmian.

Menu uruchamiania

  • Try or Install MoonLightOS

    Zwykły wpis. Uruchamia sesję live razem z animacją uruchamiania.

  • Try or Install MoonLightOS (safe graphics)

    To samo, z wyłączonym ustawianiem trybu graficznego w jądrze. Wybierz, gdy ekran pozostaje czarny albo obraz jest zniekształcony.

  • MoonLightOS in RAM (needs 6 GB+)

    Przepisuje cały system do pamięci, więc pendrive można wyjąć.

  • Check this medium for defects

    Sprawdza każdy plik na pendrivie wobec sum kontrolnych zapisanych podczas budowania.

  • Verbose boot (no splash, logs to serial)

    Wypisuje wszystkie komunikaty na ekranie i na pierwszym porcie szeregowym. To jedyny sposób, żeby odczytać uruchomienie, które kończy się błędem, zanim ekran zacznie działać.

  • UEFI firmware settings

    Uruchamia komputer ponownie, od razu w ustawieniach firmware'u.

Zrzut ekranu MoonLightOS
Potem pojawia się animacja uruchamiania: logo stoi nieruchomo, poświata pulsuje, a pasek postępu się wypełnia.

Sesja live

Najpierw pojawia się kreator konfiguracji: wybierz język systemu, potwierdź układ klawiatury (możesz go sprawdzić, pisząc w polu testowym), połącz się z siecią Wi-Fi, a potem albo zwiedzaj, albo instaluj. Wszystko, co kreator ustawia, to prawdziwe ustawienia systemu, z których korzysta potem instalator.

Zrzut ekranu MoonLightOS

Sesja live to kompletny, nieokrojony system: ten sam pulpit, te same narzędzia, te same panele ustawień. Użytkownik sesji live nazywa się moonlight i nie ma hasła. Dopóki nie uruchomisz instalatora, nic z tego, co tu robisz, nie dotyka dysku.

Aby zainstalować system, kliknij dwukrotnie ikonę Zainstaluj MoonLightOS na pulpicie albo otwórz kreator Konfiguracja jeszcze raz i wybierz instalację.

Instalacja

Instalatorem jest Calamares. Siedem ekranów, a potem przepisanie systemu na dysk.

  1. Witaj

    Język instalatora i odnośniki do tego przewodnika.

  2. Lokalizacja

    Region i strefa czasowa, a z nich wynikają ustawienia regionalne i format liczb.

  3. Klawiatura

    Już ustawiona zgodnie z wyborem w kreatorze. Sprawdź ją, pisząc w polu testowym.

  4. Partycje

    Domyślnie wybrane jest wymazanie dysku, które tworzy system plików ext4 z plikiem wymiany; dostępne są też btrfs, xfs i f2fs oraz ręczny podział dysku. Zaznacz szyfrowanie systemu, żeby włączyć szyfrowanie całego dysku LUKS2, i wybierz hasło: będziesz je wpisywać przy każdym uruchomieniu, a zapomnianego nie da się odzyskać. Na komputerze z UEFI powstaje partycja EFI o rozmiarze 512 MiB.

  5. Użytkownicy

    Imię, nazwa komputera, nazwa użytkownika i hasło: co najmniej osiem znaków z dwóch klas znaków. Pierwsze konto administruje komputerem przez sudo, konto roota zostaje zablokowane, a automatycznego logowania nie ma, dopóki samodzielnie go nie włączysz.

  6. Podsumowanie

    Wszystko, co instalator zamierza zrobić, w jednej liście. Nic nie zostało jeszcze zapisane.

  7. Instalacja

    System trafia na dysk, instaluje się program rozruchowy (na komputerze z UEFI widoczny jako MoonLightOS na liście uruchamiania w firmware), a pozostałości sesji live są usuwane. Na koniec uruchom komputer ponownie i wyjmij pendrive.

Inne systemy operacyjne na tym komputerze os-prober wykrywa przy pierwszym uruchomieniu i dodaje je do menu GRUB-a.

Pierwsze uruchomienie

Świeżo zainstalowany system to dokładna kopia tego samego obrazu, z którego powstają wszystkie inne instalacje. Wszystko, co musi być niepowtarzalne dla tego komputera, powstaje przy pierwszym uruchomieniu, jeszcze przed ekranem logowania, a odpowiada za to usługa, która potem sama się wyłącza:

  • nowy identyfikator komputera, żeby nikt podsłuchujący sieć nie powiązał dwóch instalacji;
  • nowe klucze SSH, bo klucz wspólny dla wszystkich, którzy pobrali obraz, odbierałby sens weryfikacji hosta;
  • menu GRUB-a, bo dopiero teraz widać prawdziwe dyski i inne systemy na nich;
  • initramfs przebudowany pod rzeczywisty sprzęt, dzięki czemu jest mniejszy, a animacja uruchamiania pojawia się szybciej;
  • pamięci podręczne ikon, czcionek i pulpitu, żeby pierwsze logowanie się nie wlokło;
  • zapora sieciowa, włączona ponownie.

Wyniki jej pracy trafiają do /var/log/moonlight-firstboot.log. Potem pojawia się ekran logowania, a po pierwszym zalogowaniu okno Witaj.

Zrzut ekranu MoonLightOS

Pierwsze kroki

  • Wybierz wygląd

    Ciemny albo jasny, od razu w oknie Witaj. Resztę znajdziesz w MoonLight Tweaks: układ pulpitu, tapetę, harmonogram i widżety.

  • Sterowniki

    Witaj → Sterowniki otwiera Menedżera sterowników. Na komputerze z kartą NVIDIA zamknięty sterownik leży na obrazie ISO, więc zadziała bez internetu.

  • Programy

    Sklep pokazuje razem snapy, repozytorium Ubuntu i Flathub. Thunderbird, Steam, Spotify i wiele innych wystarczy wyszukać.

  • Odcisk palca i twarz

    Witaj → Odcisk palca albo Ustawienia systemu → Twoje konto, żeby zarejestrować odcisk palca lub ustawić odblokowanie twarzą.

  • Kopie zapasowe

    Timeshift robi zaplanowane migawki systemu. Ustaw go, zanim będzie potrzebny.

  • Bezpieczeństwo

    Ustawienia systemu → Bezpieczeństwo pokazują, co chroni ten komputer i czego brakuje, a przy każdym wierszu czeka przycisk, który to naprawia.

  • Pakiety dla programistów

    Maszyny wirtualne, PHP z bazami danych i LaTeX: każdy to jedno kliknięcie w oknie Witaj, a instalacja idzie z już skonfigurowanego repozytorium.

  • Programy z Windows

    Otwórz raz Aplikacje Windows: przygotują Wine razem z DXVK, VKD3D, czcionkami i bibliotekami uruchomieniowymi. Potem pliki .exe po prostu się otwierają.

Maszyny wirtualne

VirtualBox

W programie VirtualBox trzeba zmienić trzy domyślne ustawienia, bo inaczej ten obraz wcale się nie uruchomi. Awaria wygląda na problem z pamięcią, ale nim nie jest: GRUB przełącza się w tryb graficzny, żeby narysować menu w motywie systemu, a przy domyślnych 16 MB pamięci wideo kończy się to komunikatem „Out of memory. You need to load the kernel first.”

TypLinux / Ubuntu (64-bit)
Pamięć4096 MB (minimum 2048)
Procesory2 lub więcej
Pamięć wideo128 MB, czyli ustawienie, które naprawdę ma znaczenie
Akceleracja 3Dwłączona
Kontroler grafikiVMSVGA
Włącz EFIwyłączone: BIOS działa bez zarzutu, a tutejsze EFI jest niedokończone
Pomiń nienadzorowaną instalacjęzaznaczone
Dysk30 GB lub więcej

Z wiersza polecenia:

VBoxManage modifyvm "MoonLightOS" \
    --ostype Ubuntu24_LTS_64 --memory 4096 --cpus 4 \
    --vram 128 --graphicscontroller vmsvga --accelerate3d on \
    --boot1 dvd --boot2 disk

VirtualBox podpisuje nośnik jako „Ubuntu”, bo znajduje na nim katalog /casper. To tylko etykieta w jego interfejsie, sam nośnik przedstawia się jako MoonLightOS. Typ systemu gościa ustaw jednak na Ubuntu, bo dzięki temu program dobierze właściwy chipset i ustawienia grafiki.

QEMU

UEFI, czyli tak, jak uruchamia się większość komputerów. Najpierw utwórz zapisywalne zmienne firmware'u i dysk docelowy:

cp /usr/share/OVMF/OVMF_VARS.fd .
qemu-img create -f qcow2 disk.qcow2 30G
qemu-system-x86_64 \
  -enable-kvm -m 4096 -smp 4 \
  -machine q35 -cpu host \
  -device virtio-vga-gl -display gtk,gl=on \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE.fd \
  -drive if=pflash,format=raw,file=OVMF_VARS.fd \
  -drive file=moonlightos-26.04.5-bengunur-amd64.iso,media=cdrom \
  -drive file=disk.qcow2,if=virtio

Z naprawdę włączonym Secure Boot, na firmware z wgranymi kluczami Microsoftu. Po uruchomieniu polecenie mokutil --sb-state zgłasza SecureBoot enabled, a to samo pokazują Ustawienia → O systemie:

cp /usr/share/OVMF/OVMF_VARS_4M.ms.fd OVMF_VARS.fd
qemu-system-x86_64 \
  -enable-kvm -m 4096 -smp 4 -machine q35,smm=on -cpu host \
  -global driver=cfi.pflash01,property=secure,value=on \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4M.secboot.fd \
  -drive if=pflash,format=raw,file=OVMF_VARS.fd \
  -drive file=moonlightos-26.04.5-bengunur-amd64.iso,media=cdrom

Starszy BIOS: obraz ISO jest hybrydowy, więc ten sam plik uruchomi się także po staremu:

qemu-system-x86_64 -enable-kvm -m 2048 -cdrom moonlightos-26.04.5-bengunur-amd64.iso

Aby sprawdzić obietnicę 2 GB, uruchom maszynę bez akceleracji i z minimalną pamięcią, a potem zobacz w sesji live, czy zram pojawia się jako przestrzeń wymiany i czy obciążenie pamięci pozostaje niskie:

qemu-system-x86_64 -enable-kvm -m 2048 -smp 2 -vga std -cdrom moonlightos-26.04.5-bengunur-amd64.iso

# in the live session:
free -h                      # zram appears as swap
swapon --show                # /dev/zram0, zstd
cat /proc/pressure/memory    # "some avg10" under about 10 means it is keeping up
systemctl is-active earlyoom

Dodatki gościa dla VirtualBox, QEMU/SPICE i VMware leżą już na obrazie i to właśnie dzięki nim rozdzielczość dopasowuje się do okna, a schowek jest wspólny.

Skróty klawiszowe

Pełna tabela znajduje się na stronie Funkcje. Warte zapamiętania już pierwszego dnia:

Superotwiera menu; Super+Spacja otwiera je z kursorem w polu wyszukiwania
Super+Vhistoria schowka
Super+Nnotatki
Print / Shift+Printzrzut całego ekranu lub wybranego obszaru; Shift+Super+5 otwiera panel zrzutów
Super+Lewo / Prawoprzyciąga okno do połowy ekranu
Ctrl+Górawszystkie okna; Ctrl+Dół to wszystkie pulpity
Super+Lblokuje ekran; Ctrl+Alt+T otwiera terminal, a Ctrl+Shift+Esc monitor systemu

Pełna tabela

Rozwiązywanie problemów

  • Po menu uruchamiania ekran pozostaje czarny

    Wybierz wpis z bezpieczną grafiką. Jeśli system wstanie, zainstaluj go właśnie z tego wpisu, a potem włącz zamknięty sterownik w panelu Sterowniki.

  • „Out of memory. You need to load the kernel first.”

    To maszyna w VirtualBox z 16 MB pamięci wideo. Daj jej 128 MB i włącz akcelerację 3D, patrz Maszyny wirtualne powyżej.

  • Pulpit działa ospale

    Sprawdź w Ustawieniach → O systemie, co renderuje OpenGL. Przy renderowaniu programowym animacje wyłączają się same przy logowaniu, a ręcznie zrobisz to w Tweaks → Wydajność.

  • Pendrive się uruchamia, a potem zawodzi bez wyraźnego powodu

    Uruchom z menu wpis Check this medium for defects i sprawdź sumę kontrolną SHA-256 pobranego pliku.

  • Brak Wi-Fi

    Otwórz panel Sterowniki: sterownik Broadcom leży na obrazie. Przy innych kartach menu sieci pokaże to, co wykryło jądro.

  • Czytnik odcisków palców nie jest wykrywany

    Otwórz Odcisk palca. Program podaje producenta czytnika, mówi, czy jest obsługiwany bezpośrednio, czy porównuje odcisk w układzie, czy wymaga zamkniętego pliku od producenta, i wyjaśnia, co można zrobić.

  • Zaglądanie do dzienników

    Na co narzekało uruchamianie, dziennik menedżera logowania, dziennik pierwszego uruchomienia i nazwa aktywnego motywu uruchamiania:

journalctl -b -p warning          # what the boot complained about
journalctl -b -u lightdm
cat /var/log/moonlight-firstboot.log
plymouth-set-default-theme        # should print: moonlightos

Do zgłoszenia błędu: O systemie → Kopiuj raport przenosi wydanie i sprzęt do schowka, a moonlight-selftest wypisuje, co naprawdę dzieje się na pulpicie.

moonlight-selftest | less

Zbuduj samodzielnie

Cała dystrybucja to jedno repozytorium: grafika powstaje z jednego logo źródłowego, motywy z jednej palety barw, a jeden skrypt składa to wszystko w rozruchowy obraz ISO, który działa z Secure Boot. Potrzebny jest Docker (w dowolnym systemie, bo budowanie idzie w kontenerze) i około 25 GB wolnego miejsca.

./build.shwszystko: podstawa → dostosowanie → kompresja → ISO
./build.sh rootfszatrzymaj się po dostosowaniu systemu
./build.sh imageprzepakuj istniejący główny system plików w nowy obraz ISO
./build.sh finishtylko programy rozruchowe i ISO, na gotowym squashfs
./build.sh shellpowłoka w środowisku budowania
./build.sh cleanusuń wolumin roboczy

Obraz ISO trafia do katalogu out/, a obok niego suma kontrolna SHA-256. W Windows uruchom budowanie z Git Bash albo skorzystaj z build.ps1.

Jak zorganizowane jest budowanie

build.shpunkt wejścia na komputerze; całą pracę wykonuje w kontenerze
build/Dockerfile.builderśrodowisko budowania, przypięte do docelowego wydania
build/mkiso.shpodstawa, wyciągnięcie jądra, squashfs, programy rozruchowe, ISO
build/inchroot.shwszystko, co dzieje się w chroocie, w czternastu etapach
config/moonlight.confwszystkie napisy, które definiują wydanie
packages/*.listco trafia na obraz i co zostaje usunięte
rootfs/pliki kopiowane do systemu bez zmian, razem z programami MoonLight
brand/source/logo źródłowe i tapety; katalog brand/out/ powstaje automatycznie
tools/gen-branding.pylogo źródłowe → animacja uruchamiania, GRUB, ekran logowania, ikony
tools/gen-themes.pyjedna paleta → oba kompletne motywy
po/tłumaczenia programów MoonLight
installer/konfiguracja i oprawa graficzna instalatora Calamares

Zanim powstanie obraz ISO, budowanie przeprowadza w nim ponad 120 obowiązkowych testów: jądro, podpisany shim, oba motywy, każdy program MoonTools, kodeki, sterowniki Wi-Fi, tłumaczenia oraz to, czy odblokowanie twarzą i hasło awaryjne są wyłączone. Jeden nieudany test zatrzymuje budowanie. Przestrzeń robocza to wolumin Dockera, a nie podmontowany katalog z komputera, bo w Windows i macOS podmontowanie nie zachowuje właścicieli plików, dowiązań symbolicznych ani plików urządzeń.

Dostosowanie

  • Tożsamość wydania

    W pliku config/moonlight.conf są wszystkie napisy, które definiują dystrybucję.

  • Grafika

    Podmień logo źródłowe albo tapetę, uruchom ponownie tools/gen-branding.py i od nowa powstaną animacja uruchamiania, GRUB, ekran logowania, ikony oraz grafika instalatora.

  • Kolory

    Skrypt tools/gen-themes.py ma jedną paletę ciemną i jedną jasną, a z tych samych reguł tworzy oba kompletne motywy.

  • Instalowane pakiety

    Pliki packages/*.list, jeden pakiet w wierszu, instalowane w kolejności nazw plików; w 99-purge.list jest to, co zostaje potem usunięte.

  • Domyślne ustawienia pulpitu

    Katalog rootfs/etc/dconf/db/moonlight.d/, w formacie plików kluczy dconf. To ustawienia domyślne, a nie blokady: każde z nich użytkownik może zmienić.

  • Szybkie przebudowanie

    Po zmianie w rootfs/ albo na listach pakietów build.sh rootfs powtarza etap chroota na zapisanej podstawie, a build.sh image przepakowuje obraz ISO; build.sh finish przydaje się przy pracy nad menu uruchamiania.

Pomoc i zgłaszanie błędów

Przydatne zgłoszenie mówi, czego się spodziewano, co się stało zamiast tego i na jakim komputerze. Trzecią część MoonLightOS ułatwia:

  • O systemie MoonLightOS → Kopiuj raport przenosi do schowka, jako tekst, wydanie, sprzęt, renderer grafiki i stan Secure Boot.
  • moonlight-selftest wypisuje aktualne ustawienia motywu, informację, czy arkusz stylów powłoki wczytał się poprawnie, który sterownik graficzny działa i które usługi się nie uruchomiły.
  • Przy problemie z uruchamianiem wpis Verbose boot wypisuje wszystkie komunikaty na ekran i na pierwszy port szeregowy.
  • Przy instalatorze: plik /var/log/moonlight-firstboot.log w zainstalowanym systemie oraz journalctl -b -p warning.

Gdzie to wysłać

Publiczny system zgłoszeń i kanał pomocy ogłosimy w tym miejscu. Do tego czasu zachowaj zgłoszenie: wszystko, co powinno zawierać, dają dwa opisane wyżej narzędzia.