- 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>
10 KiB
10 KiB
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 cmdlineconsole=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, sshdPermitRootLogin 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 їх майже не зменшує.
initrdlive-образу: 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.