- /etc/issue shows the Das OS version instead of the kernel's; the server installer carries it into the installed system. - das-server-installer: setfont -C /dev/tty0 before the language menu (sudo runs it in its own pty, so the Cyrillic was drawn as Latin), and floppy drives are no longer offered as install targets. - ncdu on the desktop image and in das-server 0.4.0. - das-shell 0.2.0: each prompt line sets its own color; the dbanner start screen buttons are no longer covered by the key bar; on the Linux console (TERM=linux) dprompt and dbanner draw solid borders and swap the glyphs that no console font has (▊▎▔▁ and others) for ones it has. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 KiB
Das OS — що зробити далі
Стан на 2026-10-21: версія 0.9.2, етапи 1–8 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs, Go-утиліти das-update і das-welcome, серверний образ з консольним інсталятором, менші ISO, консольні помічники, профіль розробника), CI (етап 9: пакети й обидва ISO збираються на власному runner, ~45 хв).
Етап 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: див. нижче.
- Запрошення до входу (
/etc/issue) показувало версію ядра (\ragetty, 6.18): тепер версія Das OS зVERSION(@VERSION@уbranding/issue), серверний інсталятор переносить перший рядок у встановлену систему (0.9.2). - Українська в
das-server-installна консолі показувалася латиницею («Ukra■ns'ka»): стандартний шрифт підміняє кирилицю схожими латинськими літерами, аsetfontне спрацьовував, боsudoзапускає інсталятор у власному pty (tty→/dev/pts/N). Теперsetfont -C /dev/tty0 cyr-sun16до вибору мови (перевірено в QEMU: «Гаразд їєіґ»). - Серед дисків для встановлення був дисковод
/dev/fd0: тепер пропускається. - Перевірено серверний ISO 0.9.2 у QEMU: «Das OS Server 0.9.2 (tty1)» у запрошенні, «Українська» в меню мови,
/dev/fd0немає серед дисків.
Розмір 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. Профіль розробника (готово)
Не метапакет, а dprofile у das-helpers зі списком пакетів Void у /usr/share/das/profiles/dev.conf: встановлена система поки не бачить репозиторію Das OS, тож метапакет das-dev звідти не встановився б, а пакети Void доступні завжди.
dprofile install dev: base-devel, gdb, strace, git, git-lfs, github-cli, lazygit, go, gopls, delve, golangci-lint, python3-pip, virtualenv, uv, nodejs, docker, docker-compose, docker-buildx, lazydocker, podman, podman-compose, jq, ripgrep, fd, fzf, direnv, shellcheck, sqlite; на десктопі ще vscode (code-oss), meld, flatpak і портали. Пара знімків snapper pre/post, підказка про відкат; спершу оновлює xbps, якщо треба.- Налаштування: служба docker, група
dockerдля того, хто запустив,/etc/subuid/subgidдля rootless Podman,/як спільне монтування (/etc/runit/core-services/60-das-shared-root.sh; runit лишає його приватним, і Podman попереджає). - Flathub на вимогу (лише десктоп): Android Studio, IntelliJ IDEA Open/Ultimate, PyCharm, GoLand, WebStorm, VS Code від Microsoft; вибір номерами перед встановленням,
dprofile app add|rm(з--unused, бо рантайми займають 1–4 ГБ). PyCharm Community на Flathub застарів (2024.3), томуPyCharm-Professional(безкоштовний режим). - Запитання й план — до
sudo, пароль питається після них;--yes,--apps ID,...|all|noneдля скриптів. das-welcome: рядок «Профіль розробника» відкриваєxfce4-terminalзdprofile install dev; після встановлення — «Додати середовища».- Calamares packagechooser не додаємо: інсталятор копіює live-образ без мережі, а профіль завантажує ≈ 550 МБ.
- Перевірено: сервер (QEMU) —
go run, Node.js, uv,docker run, rootlesspodman runбез попередження після перезавантаження; десктоп — встановлення зdas-welcome, Code - OSS і VS Code з Flathub у меню після входу,dprofile app rmзвільняє рантайми. - Повідомлення наприкінці
das-server-installзгадуєdprofile install dev.
Етап 9. CI (готово)
- Workflow
.gitea/workflows/build.yml:make iso iso-serverна власному runnerdasci:host(push уmain/dev, тегиv*, ручний запуск). - CI-хост: Windows-машина (192.168.88.193), WSL2 Ubuntu 24.04
dasciуC:\DasOS\wsl(SSD), Docker Engine,gitea-runner5.1.1 як служба systemd, автозапуск завданням планувальника (ci/runner). DASOS_OUTуscripts/builder.sh: кешout/на CI-хості в/var/lib/dasos-ci/out.- Runner зареєстровано, перший запуск у Gitea (run 1) успішний за 46 хв.
- Після перезавантаження Windows runner піднімається сам, без входу в систему (завдання S4U).
- Тег
v*публікує обидва ISO іSHA256SUMSяк реліз Gitea (ci/release.sh). Ліміт вкладення релізу — 2 ГБ на файл ([repository.release] FILE_MAX_SIZE). - Перша публікація: реліз v0.8.0 з обома ISO і
SHA256SUMS(завантаження ~9 хв). Перша спроба впала на 502: Traefik на git.das.org.ua обривав запити довші за 60 с,readTimeoutпіднято до 30m.
Етап 10. Термінал (0.9.1)
Пакет das-shell (десктоп і сервер), Python + Textual.
- Запрошення bash за замовчуванням, як на робочому комп'ютері автора:
┌─[✗]─[user@host]─[дата]─[час]─[каталог]/└─╼ $(/etc/bash/bashrc.d/das-prompt.sh, заміна PS1 зі/etc/skel/.bashrcVoid). dprompt: конструктор запрошень (5 готових, сегменти, кольори, живий перегляд), застосування для себе або для всіх.dbanner: редактор банера при вході по SSH (7 готових, полотно з інструментами, поля зі змінними, віджети, службаdas-bannerдля кешу), малюнки: логотип Das OS і тризуб (tools/art).scripts/run-qemu.sh: SSH гостя наlocalhost:2222.- Запрошення за замовчуванням:
└─╼другого рядка міг бути білим, бо колір успадковувався з першого рядка, а readline перемальовує лише останній. Тепер кожен рядок задає колір заново (das-shell 0.2.0). - Перевірити в терміналі автора, що
└─╼червоний. dbanner: кнопки внизу стартового екрана перекривав рядок підказок клавіш (обидва були прикріплені до низу): тепер кнопки — звичайний рядок під списком.- У консолі Linux (
TERM=linux) рамки кнопок, полів і списківdprompt/dbannerбули квадратиками: Textual малює їх символами▊▎▔▁, яких немає в жодному консольному шрифті (до 512 символів; перевіреноcyr-sun16,default8x16,eurlatgr, Terminus). Тепер там рамки┌─┐, а решта відсутніх символів замінюється на наявні. Символи палітри малювання (★ ☀ ♥…) лишаються як є: це вміст банера для SSH-клієнтів. - Перевірити
dpromptіdbannerу консолі встановленої системи. - Перевірити в QEMU: сервер — банер при вході по SSH,
dbanner apply dashboardзі службою,ssh host cmdбез банера; десктоп — запрошення в xfce4-terminal, обидва редактори.
Репозиторій пакетів
- Підпис через
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 вручну.
ncdu(аналіз зайнятого місця на диску в терміналі): у десктопному образі й уdas-server0.4.0.- Прискорити
make packages: пакет перезбирається лише після змін уsrcpkgs/<назва>, без бінарного пакета або коли у Void зникла потрібна йому бібліотека (xbps-install -n).DASOS_REBUILD=1перезбирає все.
Відкладено
- ARM-образ для Raspberry Pi.
- Вбудувати текстовий редактор MultiText.
- Перший стабільний реліз: злиття
dev→main.