- das-helpers replaces the dsv package and adds shared functions in /usr/lib/das/helpers.sh (bilingual messages, sudo re-exec, prompts). - dsv new creates a runit service (command, user, directory, environment, svlogd log) and checks it stays up; dsv rm deletes one not from a package. - duser: list, add (installer groups, --admin, key, password), del, passwd, lock/unlock (key logins too), key add|list|rm, groups +/-. - dfw: allow/deny/status/reload for the tcp_ports and udp_ports sets of the inet das table, kept in /etc/nftables.d/dfw.nft and checked with nft -c. - dsys: info, hostname, timezone, locale, keymap. - xtools-minimal on both images. - nftables.conf no longer suggests restarting the nftables service: its finish script flushes the whole ruleset, fail2ban's and Docker's included. - das-server-install 0.2.0 mentions the helpers when it finishes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 KiB
12 KiB
Das OS — що зробити далі
Стан на 2026-10-20: версія 0.5.0, етапи 1–7 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs, Go-утиліти das-update і das-welcome, серверний образ з консольним інсталятором, менші ISO, консольні помічники). Далі: профіль розробника (етап 8).
Етап 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(разом з етапом 8).
Етап 6. Серверний образ (готово)
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, das-helpers, xtools-minimal. - Налаштування: 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перевірено (0.5.0, UEFI).- Розмір ISO: див. нижче.
Розмір ISO: 0.4.0 → 0.5.0
Десктоп 1,96 → 1,72 ГБ, сервер 1,57 → 1,14 ГБ.
initrdlive-образу без драйверівamdgpu/radeon/nouveau/i915/xeі їхніх прошивок (--omit-driversу виклику dracut у mklive): 245 → 89 МБ в обох ISO. Драйвери завантажуються з кореневої системи; десктоп у QEMU доходить до робочого столу.- Сервер без
linux-firmware-nvidia,sof-firmware,alsa-firmware:mklive -gі/etc/xbps.d/das-server.conf(ignorepkg), тож оновлення їх не повертають. Службовийmklive-ignore.confінсталятори видаляють. - squashfs з блоком 1 МБ і фільтром BCJ x86: десктоп −5 %; сервер разом із прошивками 1274 → 999 МБ.
- Перевірити на реальному залізі з AMD/Intel/NVIDIA, що графіка вмикається після
switch_root(у QEMU — virtio-gpu). - Переклади
/usr/share/locale(265 МБ на десктопі, 98 МБ на сервері) лише для uk і en черезnoextractу xbps: ≈ −60…80 МБ на десктопі. Мінус: інші мови інтерфейсу доведеться доставляти перевстановленням пакетів. - Десктоп: зайві варіанти Papirus (
ePapirus*,Papirus-Light) з 294 МБ іконок; з'ясувати, хто тягне gtk4, flite, ghostscript. - Не чіпати: Firefox (299 МБ), ядро й модулі (180 МБ), LLVM для Mesa (141 МБ), мережеві прошивки (442 МБ, Wi-Fi та мережеві карти).
Етап 7. Консольні помічники (готово)
Пакет das-helpers (на десктопі й сервері), спільні функції в /usr/lib/das/helpers.sh, українська й англійська, автодоповнення bash, запитання в терміналі й аргументи для скриптів.
dsvпереїхав уdas-helpers;dsv new(команда, користувач, каталог, змінні, журнал svlogd, перевірка, що служба не падає) іdsv rm(лише не з пакетів).duser:list,add(групи як у Calamares,--admin, ключ, пароль),del,passwd,lock/unlock(і вхід за ключем),key add|list|rm,groups +/-; захист від видалення чи блокування себе та єдиного адміністратора.dfw:status,allow,deny,reload; набориtcp_ports/udp_portsу таблиціinet das, порти в/etc/nftables.d/dfw.nft, перевіркаnft -c; показує порти Docker і заблоковані fail2ban адреси.dsys:info,hostname,timezone,locale,keymap.xtools-minimal(xi,xq,xrs,xcheckrestart) в обох образах.- Виправлено: коментар у
nftables.confрадивdsv restart nftables, аfinishслужби Void робитьnft flush rulesetі стирає правила fail2ban та Docker. Теперdfw reload. - Перевірено на встановленому сервері:
dsv newз Python-сервером на 8080, доступ з хоста післяdfw allowі закриття післяdfw deny;duser addз ключем, вхід,lockблокує й вхід за ключем;dsys(часовий пояс, ім'я, мова, розкладка);dfw reloadпоруч із контейнером nginx. - Повідомлення наприкінці
das-server-installзгадуєdsv,duser,dfw,dsys.
Етап 8. Профіль розробника
- Метапакет
das-dev: go, git, docker, podman, vscode. - Android Studio та JetBrains на вимогу через Flatpak.
- Вибір профілю в інсталяторі (модуль packagechooser) або в
das-welcome.
Етап 9. 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.