MoonLightOS

Основа от Ubuntu, но без рабочего стола Ubuntu

Ни у одной другой основы для Linux нет такого обширного репозитория и такой широкой поддержки оборудования. Один только пакет linux-firmware закрывает подавляющее большинство встречающихся адаптеров Wi-Fi и Bluetooth, видеокарт и чипсетов, а ubuntu-drivers-common как следует управляется с картами NVIDIA. Secure Boot работает сразу: подписанные shim и GRUB от Canonical лежат в репозитории, ядро тоже подписано. Вдобавок у самой основы двенадцать лет поддержки безопасности.

Рабочий стол — как раз та часть Ubuntu, которую стоило заменить: он тяжёлый, и в нём нет ни кнопки «Пуск», ни значков на рабочем столе, ни панели задач. В Cinnamon есть и то, и другое, и третье. Поэтому MoonLightOS начинает с минимальной основы и строит рабочий стол сам. Ни один компонент рабочего стола Ubuntu не устанавливается, и ничто из того, что видит пользователь, об основе не напоминает.

Одно оставлено как было намеренно: кодовое имя выпуска, которое видит apt, по-прежнему «resolute» — от него зависят PPA и всё, что обращается к lsb_release. То, что видят люди, берётся из /etc/os-release.

Снимок экрана MoonLightOS
Логотип стоит на месте, а свет вокруг него пульсирует. Два изображения гало с периодами 2,6 и 3,1 секунды постепенно расходятся по фазе, поэтому свечение никогда не выглядит механическим. Оба создаются из исходной графики при сборке, и тот же логотип с гало встречается в меню GRUB, на экране входа в систему, в установщике, на странице «О MoonLightOS» и в обзоре «Добро пожаловать».

Оформление

Одна панель внизу, высотой 52 пикселя. Слева — кнопка «Пуск» и поле поиска, в центре — запущенные приложения с самыми крупными значками на панели, справа — область состояния. В меню — ваша фотография, имя и отметка о том, можете ли вы управлять компьютером; поле поиска в нём находит приложения, параметры, файлы и результаты из интернета.

Снимок экрана MoonLightOS
Снято с настоящего запуска установленного образа — это не макет.

Три компоновки

  • MoonLight

    Одна панель внизу. В доке лежат и избранные приложения, так что второй ряд значков не нужен.

  • Две панели

    Тонкая полоса сверху — часы и значки состояния, внизу — док, который прячется сам.

  • Компактная

    Одна тонкая полоса сверху. Занимает меньше всего места на экране и меньше всего требует от старой графики.

Светлая и тёмная

Обе темы создаёт один скрипт из одной цветовой палитры — и для GTK 2, 3 и 4, и для оболочки Cinnamon, и для рамок окон. Темы GTK подключают Adwaita и меняют только её цвета, поэтому новые элементы интерфейса и исправления из апстрима появляются сами. Тема значков основана на Papirus: заменены лишь те значки, по которым узнаётся дистрибутив. Акцентный цвет меняется на странице «Рабочий стол и док».

Переключение по расписанию

По умолчанию светлая с 07:00, тёмная с 19:00. Небольшая фоновая служба следит, чтобы тема не отставала от расписания.

Виджеты на рабочем столе

По умолчанию показаны большие часы и монитор процессора, памяти и диска. По правой кнопке добавляются календарь и записки, которые сохраняются обычным текстом по мере ввода.

Анимация при запуске

Логотип стоит на месте, а свет вокруг него пульсирует. Два изображения гало с периодами 2,6 и 3,1 секунды постепенно расходятся по фазе, поэтому свечение никогда не выглядит механическим. Оба создаются из исходной графики при сборке, и тот же логотип с гало встречается в меню GRUB, на экране входа в систему, в установщике, на странице «О MoonLightOS» и в обзоре «Добро пожаловать».

Шрифты

Inter для интерфейса, JetBrains Mono для кода и Noto для всего остального, включая китайский, японский, корейский и цветные эмодзи.

Семь вариантов обоев

Пять фотографических сюжетов — пингвин, озеро и серп луны — плюс сгенерированная пара «день и ночь». В выпуске по умолчанию стоит «Закат над озером».

Сочетания клавиш, которые вы уже знаете

Почти для всего в Windows и macOS приняты разные сочетания клавиш. Друг с другом они почти никогда не конфликтуют, поэтому MoonLightOS понимает и те и другие: за клавишей Super — привычки Windows, за Ctrl — привычки macOS.

ДействиеКак в WindowsКак в macOS
Открыть менюSuperSuper
ПоискSuper+SpaceSuper+Space
Файловый менеджерSuper+E—
Заблокировать экранSuper+LCtrl+Super+Q
Показать рабочий столSuper+DCtrl+Super+D
Окно на половину экранаSuper+Left / Right—
Развернуть / восстановитьSuper+Up / Super+DownAlt+F10 / Alt+F5
СвернутьSuper+HAlt+F9
Закрыть окноAlt+F4Super+Q
Во весь экранSuper+FCtrl+Super+F
Переключение между окнамиAlt+Tab, Super+TabAlt+Tab
Следующее окно этой программыAlt+`Super+`
Все окнаSuper+WCtrl+Up
Все рабочие столыSuper+SCtrl+Down
Сменить рабочий столCtrl+Alt+Left / RightCtrl+Left / Right
Перенести окно на другой рабочий столCtrl+Shift+Alt+Left / RightCtrl+Shift+Left / Right
ПараметрыSuper+ISuper+,
Системный мониторCtrl+Shift+Esc—
Выполнить командуSuper+R, Alt+F2—
ТерминалCtrl+Alt+TCtrl+Alt+T
БраузерSuper+BSuper+B
КалькуляторSuper+CSuper+C
Микшер и эквалайзерSuper+ASuper+A
История буфера обменаSuper+VSuper+V
ЗаметкиSuper+NSuper+N
Преобразовать файлыSuper+Shift+CSuper+Shift+C
Снимок всего экранаPrintShift+Super+3
Снимок областиShift+PrintShift+Super+4
Снимок окнаAlt+Print—
Панель снимков и записиCtrl+Shift+PrintShift+Super+5
Выйти из системыCtrl+Alt+Delete—

Если подвести указатель к левому верхнему углу, откроется обзор окон. Одна клавиша Super открывает меню, а Super+Space открывает его сразу с курсором в поле поиска.

Три формата пакетов, один магазин приложений

Все три — apt, snap и Flatpak — установлены, и GNOME Software показывает их вместе: сначала snap, затем пакеты из репозитория Ubuntu, затем Flathub. Пакет .deb всегда самый экономный вариант, а Flathub закрывает всё остальное.

Само приложение Snap Store — это snap, зависимости которого занимают около гигабайта: слишком много для образа, рассчитанного на компьютеры с 2 ГБ оперативной памяти. Поэтому магазин приложений показывает и устанавливает snap-пакеты с первого запуска, а само приложение Snap Store догружает отдельная служба, как только появится соединение.

Страница параметров «Приложения» показывает, что установлено, из какого из трёх форматов пришло каждое приложение и не стоит ли что-нибудь дважды.

Приложения в образе

Подобраны так, чтобы обычный рабочий стол был готов к работе с первого запуска — даже без интернета.

Интернет

Firefox (сборка Mozilla, с uBlock Origin в виде локального расширения, поэтому он доступен и без сети), Thunderbird, Geary, Transmission

Офис и документы

LibreOffice Writer, Calc, Impress и Draw; Evince; текстовый редактор GNOME; Xournal++; PDF Arranger; MoonLight PDF; «Календарь»; «Часы»; «Погода»; «Карты»; «Калькулятор»

Мультимедиа

VLC; Celluloid; Rhythmbox; GStreamer с libav, наборами плагинов «bad» и «ugly» и VA-API, поэтому H.264, H.265 и AAC воспроизводятся в любой программе

Графика и сканирование

GIMP; «Рисование»; Eye of GNOME; MoonLight Export; Simple Scan; просмотр шрифтов; «Снимок экрана»

Система

GNOME Software; системный монитор; «Диски»; GParted; анализатор использования диска; Timeshift; Redshift; File Roller; Seahorse; Blueman; «Принтеры»; MoonLight Tweaks

Сеть и VPN

NetworkManager с поддержкой OpenVPN, OpenConnect (Cisco AnyConnect, GlobalProtect, Fortinet), L2TP, PPTP, SSH и встроенного WireGuard

Разработка

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

Терминал

GNOME Terminal; bash, zsh и 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

Совместимость с Windows

Wine с поддержкой 32-битных программ, winetricks, DXVK (Direct3D с 9 по 11) и VKD3D (Direct3D 12)

Оборудование и драйверы

Прошивки

Полный набор linux-firmware, микрокод Intel и AMD, а также fwupd для обновления прошивок.

Графика

Mesa с Vulkan, VA-API и VDPAU для Intel и AMD. Драйвер NVIDIA лежит на самом ISO, поэтому его можно включить на странице «Драйверы» даже без интернета.

Wi-Fi и проводная сеть

Больше пятидесяти драйверов беспроводных адаптеров в ядре, плюс собранные через DKMS broadcom-sta и r8168 — для чипов, с которыми штатные драйверы справляются плохо.

Принтеры и сканеры

CUPS с полным набором драйверов, печать в PDF, SANE и Simple Scan.

Bluetooth

BlueZ, Blueman и кодеки Bluetooth из PipeWire, а страница параметров прямо говорит, если модуля Bluetooth в компьютере нет.

Звук

PipeWire с WirePlumber, совместимость с PulseAudio и встроенный десятиполосный эквалайзер.

Ноутбуки

power-profiles-daemon, thermald, заряд батареи в панели, включённые по умолчанию нажатие касанием и естественная прокрутка, поддержка устройств ввода Wacom и Synaptics.

Виртуальные машины

В образ входят гостевые дополнения для VirtualBox, QEMU/SPICE и VMware, поэтому экран подстраивается под размер окна, а буфер обмена становится общим.

Сканеры отпечатков пальцев

fprintd, libfprint и загрузчик TOD установлены и связаны с PAM. MoonLight Fingerprint определяет сенсор и проводит через регистрацию отпечатка.

Разблокировка по лицу

Работает на OpenCV — на экране входа в систему, на заблокированном экране и в sudo. По умолчанию выключена, пока вы сами её не включите.

Безопасность

В установленной системе MoonLightOS всё перечисленное ниже включено по умолчанию.

  • Secure Boot

    Прошивка → shim от Canonical → подписанный GRUB → подписанное ядро. Включён ли он на вашем компьютере, видно в «Параметры» → «О MoonLightOS».

  • Шифрование диска

    Шифрование всего диска LUKS2 — одна галочка в установщике.

  • Брандмауэр

    ufw включён: входящие соединения блокируются, исходящие разрешены.

  • AppArmor

    Принудительный режим, в том числе для snap-пакетов.

  • Автоматические обновления безопасности

    Из репозитория безопасности Ubuntu и с packages.mozilla.org, каждый день. Ненужные ядра и зависимости удаляются, а компьютер никогда не перезагружается сам.

  • Заблокированный root, отслеживаемый sudo

    Первая учётная запись управляет компьютером через sudo. Пароль root не задаётся никогда.

  • Требования к паролю и блокировка

    Не меньше восьми символов из двух разных групп. После восьми неверных попыток учётная запись блокируется на пятнадцать минут.

  • Усиленная защита ядра

    Ядро настроено так, чтобы программы без прав узнавали о системе и друг о друге как можно меньше: указатели ядра и сообщения загрузки скрыты, отладка чужого процесса запрещена, а подменить ядро во время работы нельзя. Сетевой стек усилен против подделанных маршрутов и шквала соединений, адреса IPv6 регулярно меняются.

  • Сокращённая поверхность атаки

    FireWire и набор редко нужных модулей файловых систем и сетевых протоколов не могут загружаться автоматически, поэтому подключённое устройство или пришедший пакет не подтянут код, которым этот компьютер никогда не пользуется.

  • Уникальность с первого запуска

    Идентификатор машины и ключи хоста SSH создаются на установленном компьютере. Если бы ключ хоста был один на все установки, проверять подлинность хоста было бы незачем.

  • Никакой телеметрии

    Служб отправки отчётов об ошибках и статистики использования в образе нет. Телеметрия Firefox, исследования, Pocket и спонсируемое содержимое отключены политикой, а защита от слежения включена.

  • Защита портов USB

    USBGuard установлен, поэтому устройство, подключённое при заблокированном экране, доверия не получает. По умолчанию выключен — включается одной кнопкой на странице «Безопасность».

  • Пароль на крайний случай

    Второй пароль, который делает что угодно, кроме входа в систему. В режиме стирания он уничтожает ключи LUKS на диске и выключает компьютер, в подставном режиме — открывает пустой сеанс и через пять минут его замораживает. По умолчанию отключён, для настройки нужен ваш настоящий пароль, и совпадать с ним он не может.

  • Пароль на меню загрузки

    Предлагается на странице «Безопасность»: иначе любой, кто способен перезагрузить компьютер, поправит меню загрузки и получит оболочку root.

  • Понятные запросы пароля

    У каждой служебной программы MoonLight есть своё именованное действие polkit, поэтому в запросе пароля написано, на что именно вы соглашаетесь.

Снимок экрана MoonLightOS
Снято с настоящего запуска установленного образа — это не макет.

Работа на компьютерах с малой памятью

Сжатая память (zram)Половина оперативной памяти, но не больше 8 ГБ, сжатие zstd, приоритет 100. На страницах памяти рабочего стола сжатие выходит около 3:1.
Настройка подкачкиПо умолчанию ядро ставит 60, исходя из того, что подкачка — это обращение к диску. С zram это копирование в памяти.
Защита от нехватки памятиВступает в дело при 4 % свободной памяти и отправляет SIGKILL при 2 %. Никогда не трогает Cinnamon, Xorg, LightDM и Nemo; первыми останавливает Firefox, Thunderbird, Code, LibreOffice и компиляторы.
Без индексатораНи tracker, ни фоновое сканирование диска.
Автонастройка графикиПри входе в систему проверяется отрисовщик OpenGL. Если это llvmpipe или другая программная отрисовка, анимации выключаются. Если потом вы настроите иначе, система ваш выбор не отменит.
GRUBЗапрашивает скромный графический режим и держит запасные варианты, поэтому меню появляется даже в виртуальной машине с небольшой видеопамятью.
SquashfsСжат zstd, поэтому live-сеанс быстро загружается с флешки.

Языки

В окне первоначальной настройки коротким списком предложены английский (США и Великобритания), итальянский, французский, немецкий, испанский, португальский (Бразилия), нидерландский, польский и русский, а все остальные локали — в пункте «Другие языки». Раскладка клавиатуры подставляется по выбранному языку, поэтому на втором шаге обычно достаточно нажать «Далее».

Все MoonTools — 774 строки — переведены на эти восемь языков, не считая английского, и сборка прерывается, если в программе найдётся видимая непереведённая строка. Итальянский языковой пакет и словари LibreOffice лежат в образе, поэтому установка без сети в Италии сразу полностью переведена; остальные языковые пакеты скачиваются одним нажатием.

Программы для командной строки намеренно оставлены на английском: их вывод читают рядом с документацией и вставляют в сообщения об ошибках, а это проще делать на одном языке.

Снимок экрана MoonLightOS

Решения, о которых стоит знать

  • Темы GTK подключают Adwaita и перекрашивают её.

    Тема, написанная руками, ломается при каждом новом элементе интерфейса в GTK. Эта наследует исправления апстрима.

  • Страница «Сведения о системе» из Cinnamon перенаправлена, а не удалена.

    Обновление Cinnamon не сможет втихую вернуть её рядом с нашей, а если удалить пакеты MoonLightOS, она аккуратно вернётся на место.

  • В squashfs остаётся своя копия ядра.

    Установщик копирует на диск именно этот squashfs. Убрать из него /boot — и установится система, которой нечем запускаться.

  • Тема запуска называется moonlightos, а не moonlight.

    В пакете desktop-base из Debian уже есть тема Plymouth с именем moonlight, и обновление молча подменило бы анимацию.

  • uBlock Origin встроен, а не скачивается.

    Политика, указывающая на addons.mozilla.org, установит расширение только при первом запуске Firefox с работающим соединением. Расширение лежит в образе, и удалить его вы по-прежнему можете.

  • Docker Engine, а не Docker Desktop.

    В Linux Docker Desktop запускает движок внутри своей виртуальной машины, то есть добавляет на ноутбуке второе ядро и второй расход памяти.

  • Тяжёлые наборы для разработки — по желанию.

    Виртуальные машины, PHP с базами данных и LaTeX ставятся одним нажатием в «Добро пожаловать», вместо гигабайта, который иначе тащила бы за собой каждая установка.