- Calamares branding takes the version from VERSION at ISO build time - das-update tray hides its icon when updates were installed elsewhere (watches the xbps package database) - Installer removes guest tools of other hypervisors; the live image starts VBoxClient only inside VirtualBox - Live session no longer locks the screen while the installer runs - das-tools 0.2.0, das-installer 0.2.0, das-settings 0.4.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
64 lines
8.1 KiB
Markdown
64 lines
8.1 KiB
Markdown
# Das OS — що зробити далі
|
||
|
||
Стан на 2026-10-19: версія 0.3.0, етапи 1–5 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs, Go-утиліти `das-update` і `das-welcome`). Далі: серверний образ (етап 6).
|
||
|
||
## Етап 5. Go-утиліти (готово, лишилися перевірки)
|
||
- [x] `das-update`: вікно, значок у треї (лише коли є оновлення), консольний режим `--cli`, знімок snapper pre/post, встановлення через pkexec, підказка про відкат.
|
||
- [x] `das-welcome`: вікно першого входу (встановлення в live-сесії, мова, теки, оновлення, налаштування, довідка).
|
||
- [x] Англійські назви тек: 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`.
|
||
- [x] Тести `go test ./...` (`make test` і під час збирання пакета).
|
||
- [x] Перевірено у встановленій системі на Btrfs (QEMU, UEFI): оновлення з вікна й `--cli` створює пару знімків pre/post, вони з'являються в меню GRUB, завантаження в знімок і `snapper-rollback` повертають попередню версію пакета; вибір мови в `das-welcome` діє після перезавантаження.
|
||
- [x] Виправлено після перевірки: версія в Calamares береться з `VERSION`; значок у треї ховається, коли оновлення встановлено поза ним (стежить за базою пакетів xbps); інструменти VirtualBox прибираються з не-VirtualBox машин (у KVM було повідомлення при кожному вході); live-сесія не блокує екран під час встановлення.
|
||
- [ ] Перевірити в наступному live ISO, що екран більше не блокується (властивості xfconf звірено з двійковими файлами).
|
||
- [ ] Вікно автентифікації polkit (`xfce-polkit`) англійською: перекласти або замінити агент.
|
||
- [ ] Повідомити авторів xdg-user-dirs про помилку з `XDG_DATA_DIRS`.
|
||
- [ ] Пункт «Профіль розробника» в `das-welcome` (разом з етапом 7).
|
||
|
||
## Етап 6. Серверний образ
|
||
Live ISO без графіки з консольним інсталятором: `dasos-server-<версія>-x86_64.iso`.
|
||
- [ ] Профіль `server/` поруч із `live/` (`packages.x86_64`, `services`, `include/`); параметризувати `scripts/container/build-iso.sh` профілем; ціль `make iso-server`. Kernel cmdline з `console=tty0 console=ttyS0` для серійної консолі.
|
||
- [ ] Метапакет `das-server`: openssh, chrony, dhcpcd (NetworkManager/nmtui на вибір), das-snapshots, docker (без podman), nftables, fail2ban, python3, lazydocker, lazygit, mc, tmux, htop, socklog-void.
|
||
- [ ] Налаштування в `das-server`: nftables «закрито все, крім SSH», jail sshd для fail2ban, sshd без входу root за паролем.
|
||
- [ ] `dsv` (das services): керування службами runit замість systemctl (`list`, `enable`, `disable`, `start`, `stop`, `restart`, `status`, `logs`): посилання `/etc/sv/X` → `/var/service`, логи через socklog/svlogd. Знадобиться й на десктопі.
|
||
- [ ] `das-server-install`: TUI-інсталятор на `dialog` (диск, ім'я хоста, користувач, SSH-ключ, часовий пояс, розкладка). Розмітка GPT: ESP + Btrfs з тими ж підтомами, що й у Calamares (`@`, `@snapshots`…); копіювання з `live-base` (перевикористати `mount-source`); GRUB для UEFI і BIOS.
|
||
- [ ] Винести спільну частину `postinstall` (локалі, `/tmp`, гостьові інструменти VM, `das-snapper-setup`, переписування ядер) в окремий скрипт для обох інсталяторів.
|
||
- [ ] `scripts/run-qemu.sh --serial` (`-nographic`) для перевірки серверного ISO.
|
||
- [ ] Перевірка: встановлення в QEMU, вхід по SSH, `docker run hello-world`, знімок snapper перед `das-update --cli`.
|
||
- [ ] Наостанок — розмір ISO: виміряти обидва образи, знайти, що займає найбільше (розміри пакетів через `xbps-query`, прошивки `linux-firmware-*`, локалі, документація, `-devel`-пакети, гостьові інструменти VM, компресія squashfs `xz`/`zstd`), і вирішити, що й як зменшити.
|
||
|
||
## Етап 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`).
|
||
- [ ] Перевірити на реальному залізі: видалення гостьових інструментів 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`.
|