Files
Das-OS/TODO.md
T
dasandClaude Opus 5.5 eba4516998 Stage 6: server image with a console installer (0.4.0)
- server/ profile and build-iso.sh [desktop|server]; make iso-server,
  make qemu-server, run-qemu.sh --serial; login on tty and ttyS0
- das-server: SSH, chrony, NetworkManager/dhcpcd, Docker with Compose,
  nftables (closed except SSH, own table), fail2ban reading socklog,
  sshd without root passwords, Docker log rotation, tools
- das-server-install: dialog installer in Ukrainian and English, or
  unattended with --config; GPT + Btrfs subvolumes, GRUB for UEFI and BIOS,
  serial console, SSH key with optional keys-only logins
- das-install-common: mount-source and postinstall shared with Calamares
- dsv: runit service manager (list, enable, disable, start, stop,
  restart, status, logs) with bash completion, also on the desktop
- das-update split into a subpackage without GTK; the window and tray
  icon move to /usr/libexec/das/das-update-gui
- das-snapper-setup enables dbus, which snapper needs
- TODO: ISO size review with measured numbers and options

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 21:28:26 +03:00

10 KiB
Raw Blame History

Das OS — що зробити далі

Стан на 2026-10-19: версія 0.4.0, етапи 1–6 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs, Go-утиліти das-update і das-welcome, серверний образ з консольним інсталятором). Далі: рішення щодо розміру ISO, потім профіль розробника (етап 7).

Етап 5. Go-утиліти (готово, лишилися перевірки)

  • das-update: вікно, значок у треї (лише коли є оновлення), консольний режим --cli, знімок snapper pre/post, встановлення через pkexec, підказка про відкат.
  • das-welcome: вікно першого входу (встановлення в live-сесії, мова, теки, оновлення, налаштування, довідка).
  • Англійські назви тек: xdg-user-dirs 0.20 шукає переклади лише в першій теці XDG_DATA_DIRS з підкаталогом locale (порожня /usr/local/share/locale). Виправлено в das-settings (/etc/X11/xinit/xinitrc.d/50-das-user-dirs), уже створені теки перейменовує das-welcome.
  • Тести go test ./... (make test і під час збирання пакета).
  • Перевірено у встановленій системі на Btrfs (QEMU, UEFI): оновлення з вікна й --cli створює пару знімків pre/post, вони з'являються в меню GRUB, завантаження в знімок і snapper-rollback повертають попередню версію пакета; вибір мови в das-welcome діє після перезавантаження.
  • Виправлено після перевірки: версія в Calamares береться з VERSION; значок у треї ховається, коли оновлення встановлено поза ним (стежить за базою пакетів xbps); інструменти VirtualBox прибираються з не-VirtualBox машин (у KVM було повідомлення при кожному вході); live-сесія не блокує екран під час встановлення.
  • Live ISO 0.4.0: екран не блокується під час встановлення.
  • Вікно автентифікації polkit (xfce-polkit) англійською: перекласти або замінити агент.
  • Повідомити авторів xdg-user-dirs про помилку з XDG_DATA_DIRS.
  • Пункт «Профіль розробника» в das-welcome (разом з етапом 7).

Етап 6. Серверний образ (готово, лишився розмір ISO)

Live ISO без графіки з консольним інсталятором: dasos-server-<версія>-x86_64.iso.

  • Профіль server/ поруч із live/; build-iso.sh [desktop|server], цілі make iso-server і make qemu-server. Kernel cmdline console=tty0 console=ttyS0,115200, вхід і на послідовній консолі.
  • Метапакет das-server: openssh, chrony, dhcpcd, NetworkManager, docker + docker-compose, nftables, fail2ban, socklog-void, python3, curl, lazydocker, lazygit, mc, tmux, htop, das-snapshots, das-update, dsv.
  • Налаштування: nftables «закрито все, крім SSH» (лише своя таблиця inet das, правила Docker і fail2ban не чіпає), jail sshd через nftables з розбором журналу socklog, sshd PermitRootLogin prohibit-password, журнали Docker з ротацією (local).
  • dsv: list, status, enable, disable, start, stop, restart, logs [-f], автодоповнення bash; є й на десктопі.
  • das-update окремим підпакетом без GTK (вікно й трей — /usr/libexec/das/das-update-gui у das-tools).
  • das-server-install: TUI на dialog українською й англійською (диск, ім'я, користувач і пароль, SSH-ключ і заборона паролів, часовий пояс, розкладка, мова, dhcpcd/NetworkManager) і режим без запитань --config. GPT + Btrfs з тими ж підтомами, GRUB для UEFI (і запасний BOOTX64.EFI) та BIOS.
  • Спільний пакет das-install-common (mount-source, postinstall) для обох інсталяторів; das-snapper-setup вмикає dbus, без нього snapper не працює.
  • scripts/run-qemu.sh --serial.
  • Перевірено в QEMU: встановлення через TUI на UEFI (з SSH-ключем) і BIOS (з паролем, NetworkManager, ua-utf), вхід по SSH лише за ключем, docker run hello-world, опублікований порт nginx, fail2ban бачить невдалі входи, das-update --cli зі знімками pre/post, dsv.
  • Перевірити das-server-install --config (код той самий, що й у TUI, окремо не запускався).
  • Розмір ISO: огляд зроблено (нижче), чекає рішення, що саме зменшувати.

Розмір ISO (0.4.0): десктоп 1,96 ГБ, сервер 1,57 ГБ

З чого складається: initrd 233 МБ і squashfs 1584 / 1215 МБ (xz). Прошивки в Void уже стиснуті zstd, тож xz їх майже не зменшує.

  • initrd live-образу: 157 МБ у ньому — прошивки GPU (NVIDIA 109 МБ, amdgpu 28 МБ) для раннього KMS. Без драйверів nouveau/amdgpu/radeon/i915/xe у live-initrd: ≈ −150 МБ в обох ISO. Драйвери все одно завантажаться з кореневої системи.
  • Сервер: без linux-firmware-nvidia, sof-firmware, alsa-firmware (GPU і звук): ≈ −160 МБ. Через mklive -g і ignorepkg у das-server, щоб оновлення не повертали їх.
  • Переклади /usr/share/locale (265 МБ на десктопі, 98 МБ на сервері) лише для uk і en через noextract у xbps: ≈ −60…80 МБ на десктопі. Мінус: інші мови інтерфейсу доведеться доставляти перевстановленням пакетів.
  • squashfs з блоком 1 МБ і фільтром BCJ x86 замість 128 КБ: ≈ −5 %.
  • Десктоп: зайві варіанти Papirus (ePapirus*, Papirus-Light) з 294 МБ іконок; з'ясувати, хто тягне gtk4, flite, ghostscript.
  • Не чіпати: Firefox (299 МБ), ядро й модулі (180 МБ), LLVM для Mesa (141 МБ), мережеві прошивки (442 МБ, Wi-Fi та мережеві карти).

Етап 7. Профіль розробника

  • Метапакет das-dev: go, git, docker, podman, vscode.
  • Android Studio та JetBrains на вимогу через Flatpak.
  • Вибір профілю в інсталяторі (модуль packagechooser) або в das-welcome.

Етап 8. CI

  • Збирання пакетів і обох ISO (десктоп і сервер) в контейнері Void (Gitea Actions на git.das.org.ua або GitHub Actions).

Репозиторій пакетів

  • Підпис через xbps-rindex --sign, ключ поза репозиторієм.
  • Хостинг репозиторію (власний сервер або GitHub Releases/Pages).
  • /etc/xbps.d/das.conf у встановленій системі, щоб пакети das-* оновлювалися. Зараз встановлена система бачить лише репозиторій Void.

Інсталятор

  • Перевірити встановлення десктопа на старий BIOS (MBR, grub-install --target=i386-pc); серверний інсталятор на BIOS перевірено.
  • Перевірити на реальному залізі: видалення гостьових інструментів VM, Wi-Fi, NVIDIA/AMD.
  • Шифрування диска (LUKS): luksbootkeyfile, crypttab, dracut, GRUB_ENABLE_CRYPTODISK.
  • Перевірити ручну розмітку з Btrfs (чи створюються підтоми) і встановлення на ext4/XFS (знімки мають вимкнутися без помилок).
  • Перевірити розкладку, відмінну від us,ua (автологін перевірено).

Знімки й відкат

  • Перевірити, що cron справді робить щогодинні знімки й очищує старі.
  • Графічний відкат (у das-update або окремою утилітою) замість sudo snapper-rollback N.
  • Прибирати старі корені @<дата>, які лишаються після відкату.

Оформлення та дрібниці

  • Прибрати значки томів live-носія («Том 6,6 ГБ») з робочого столу live-сесії.
  • Тема GRUB у встановленій системі (зараз стандартний чорний екран).
  • Перевірити меню Whisker вручну.
  • Прискорити make packages: не перезбирати Calamares, якщо його версія не змінилася.

Відкладено

  • ARM-образ для Raspberry Pi.
  • Вбудувати текстовий редактор MultiText.
  • Перший стабільний реліз: злиття dev → main.