@QingQ77: 用 Rust + ratatui 写的终端安装器,带乌克兰语/英语双语界面,专门给用 dinit 的 Artix Linux 做系统安装,也能进系统恢复模式。 https://github.com/YellowHearth1/artix-…

X AI KOLs Timeline 工具

摘要

用 Rust + ratatui 写的终端安装器,带乌克兰语/英语双语界面,专用于 dinit 的 Artix Linux 系统安装,支持 LUKS 加密、Btrfs 快照、EFISTUB 引导等功能。

用 Rust + ratatui 写的终端安装器,带乌克兰语/英语双语界面,专门给用 dinit 的 Artix Linux 做系统安装,也能进系统恢复模式。 https://github.com/YellowHearth1/artix-tui-installer…
查看原文
查看缓存全文

缓存时间: 2026/07/11 21:29

用 Rust + ratatui 写的终端安装器,带乌克兰语/英语双语界面,专门给用 dinit 的 Artix Linux 做系统安装,也能进系统恢复模式。 https://github.com/YellowHearth1/artix-tui-installer…


YellowHearth1/artix-tui-installer

Source: https://github.com/YellowHearth1/artix-tui-installer

🐧 Artix TUI Інсталятор

Двомовний (українська / англійська) термінальний інсталятор для власної збірки Artix Linux на системі ініціалізації dinit.

Написаний на Rust із ratatui й оформлений як сучасний графічний інсталятор: ліва панель кроків, заокруглені панелі, акцент Artix-блакитного, сегментовані перемикачі та живий прокручуваний журнал встановлення.

Мова: Rust TUI: ratatui Init: dinit

🇬🇧 English version → README.en.md


🤖 Авторство коду

Увесь код цього проєкту написано Claude — моделлю ШІ від Anthropic. Архітектура, ітеративне налагодження та реалізація — повністю згенеровані Claude у діалозі. Дизайн-візія, тестування на реальному залізі та віртуальних машинах, а також рішення, специфічні для Artix/dinit, належать авторові проєкту.


✨ Можливості

  • 🌐 Двомовний інтерфейс — українська та англійська, вибір на першому екрані.
  • ⚙️ Рідний dinit — налаштовує користувацький екземпляр dinit саме під цю систему ініціалізації, без жодних припущень про systemd:
    • turnstile для seatd (власний PAM-модуль, не потребує elogind);
    • userspawn для elogind (штатний Artix-варіант);
    • менеджер сеансів seatd/elogind та користувацькі сервіси PipeWire.
  • 📦 Інтерактивне встановлення пакунків — пакунки ставляться через pacman під псевдотерміналом, тож ви обираєте провайдерів (драйвери GPU/Vulkan, мультимедіа-бекенди тощо), а не береться мовчки перший. Однойменні пакунки з різних репозиторіїв автоматично беруться з Artix; запити [Y/n] підтверджуються.
  • 🔒 Шифрування диска LUKS — лише root, повне шифрування із зашифрованим /boot на UEFI, або USB-ключ (keyfile дозволяє вводити пароль лише раз).
  • 🥾 Вибір завантажувача — GRUB, rEFInd, Limine або EFISTUB; для GRUB — os-prober для виявлення інших ОС. Налаштовується перед розміткою додаткових дисків.
  • 📦 EFISTUB (завантаження без завантажувача) — прошивка UEFI вантажить ядро напряму, без проміжного завантажувача (ядра Artix уже зібрані як EFI-стаби, CONFIG_EFI_STUB=y). initramfs і параметри передаються через запис efibootmgr. Не потребує додаткових пакунків чи systemd — на відміну від UKI, якому потрібен systemd-stub. Лише UEFI; несумісний із зашифрованим /boot. Сумісний із відкатом — ядро, initramfs і параметри лишаються окремими файлами, тож інсталятор реєструє додаткові UEFI-записи для відкату та порятунку (вибираються з меню завантаження прошивки). Це основа для майбутнього Secure Boot.
  • 🗄️ Додаткові диски — змонтуйте інші диски чи розділи (у домівку, /mnt або власний шлях), за бажанням відформатуйте чи зашифруйте кожен. Зашифровані додаткові диски розблоковуються автоматично під час завантаження (ключ на зашифрованому корені, служба dinit), незалежно від способу розблокування кореня.
  • 💾 Вибір файлової системи — ext4, btrfs, xfs, f2fs, jfs, ext3, ext2.
  • 🌳 Btrfs зі знімками та відкатом — підтоми @/@home/@snapshots/@log/@cache, авто-знімки навколо кожної дії pacman (snapper + snap-pac) і відкат artix-rollback на будь-якому завантажувачі (у GRUB/rEFInd/Limine — окремим пунктом графічного меню, у EFISTUB — окремим записом у меню завантаження прошивки).
  • 🖥️ Вибір оточення — KDE Plasma, LXQt, Pinnacle (Wayland-композитор у стилі AwesomeWM), XFCE, Cinnamon, MATE, LXDE або без оточення.
  • 🎮 Драйвери GPU — NVIDIA (open-dkms), NVIDIA 580xx (застарілі), nouveau, AMD, Intel; nouveau автоматично блокується при виборі пропрієтарного драйвера.
  • 🛟 Режим відновлення системи — монтує наявну інсталяцію (з розшифруванням LUKS за потреби), визначає завантажувач і відкриває chroot-оболонку для ремонту.
  • 🔁 Підтримка AURparu збирається з джерел (щоб завжди відповідати системній libalpm), а потім встановлює обрані вами пакунки.
  • 🧩 Автоматичне ввімкнення сервісів dinit — будь-який встановлений пакунок *-dinit отримує ввімкнений сервіс автоматично, чи то з репозиторіїв, чи з AUR.
  • 📜 Системне логування з коробкиsyslog-ng збирає всі логи в /var/log, а logrotate (через cronie) тримає їх тиждень, видаляє старіше й ротує негайно, якщо файл перевищує 5 ГБ. Користувацькі сервіси логуються в буфер, тож dinitctl catlog працює для них одразу.
  • 🔥 Готовий фаєрвол — вбудований конфіг nftables відкриває порти для KDE Connect, LocalSend, Sunshine, RustDesk, Steam Remote Play, Syncthing та SSH.
  • 🎨 Вбудовані конфіги — kitty (Catppuccin Mocha), запит starship, fastfetch, а для Pinnacle ще й waybar та wofi; зовнішні файли не потрібні.
  • 🕹️ Готовність до ігор — піднімає ліміт відкритих файлів (nofile) для Wine/Proton fsync, а за бажанням автоматично налаштовує auto-cpufreq.
  • 🧳 Самодостатній — потрібні host-інструменти (artools, gptfdisk, cryptsetup тощо) встановлюються автоматично, тож інсталятор працює навіть із офіційного ISO Artix, а не лише з власного образу.
  • 🏷️ Налаштовувані імʼя компʼютера та назва запису UEFI.
  • 🚦 Обережний старт — розмітка диска починається лише після явного підтвердження на екрані «Перевірка та встановлення», а потрібні host-інструменти (git, gptfdisk, dosfstools, parted тощо) довантажуються у фоні одразу після зʼєднання з мережею.
  • ⚠️ Застереження перед розміткою — на екрані вибору диска інсталятор ненав’язливо попереджає (не блокуючи вибір), якщо: обраний диск є завантажувальним носієм, з якого запущено сам інсталятор (виявляється за файловою системою iso9660 live-образу); диск менший за 20 ГіБ (базова система вміститься, але для повного оточення може забракнути місця); або обраний режим UEFI/BIOS не збігається з тим, у якому реально завантажено комп’ютер (що дало б систему, яка не вантажиться). Кожне застереження — це повне, зрозуміле речення в окремому вікні з прокруткою (клавіша w на списку дисків); ви завжди можете продовжити, якщо свідомо цього хочете.
  • 🧨 Підтвердження стирання диска — останній крок перед форматуванням: окреме вікно прямо показує, який диск (шлях, модель, обсяг) і які наявні розділи буде безповоротно знищено, і вимагає явного Enter. Форматування ніколи не починається без цього другого підтвердження — випадково стерти не той диск важче.
  • 🪞 Швидкі та стійкі дзеркала — 5 найближчих країн (за вашим часовим поясом) ранжуються за реальною швидкістю й ставляться зверху; усі інші дзеркала світу лишаються активними нижче, від ближчих до дальших — жодне не закоментоване й не відкинуте. Тож якщо швидке дзеркало «помре» під час завантаження, pacman просто переходить до наступного (аж до головного сервера Artix), а не перериває встановлення. Російські дзеркала виключаються повністю. Плюс опційний Chaotic-AUR із готовими бінарними пакунками AUR.
  • 📊 Живий перебіг — журнал встановлення наживо з прокруткою (PgUp/PgDn, Home/End); після помилки — повторний запуск без втрати зробленого вибору.
  • 🏁 Три варіанти фіналу — перезавантажитись, вимкнути компʼютер або одразу зайти chroot-ом у нову систему; розділи в усіх випадках відмонтовуються безпечно.
  • 📀 Збирається як живий образ ISO через artools (buildiso).

👁️ Вигляд

Екран «Диск та розділи» наживо

Знімок — із графічного термінала; у чистому TTY кольори простіші (див. примітку в розділі «Знімки екрана»).

А схематично кожен екран влаштовано так:

┌───────────┬──────────────────────────────────────────────┐
│  ◆  01    │  09 · Диск та розділи                         │
│  ●  02    │  ┌────────────────────────────────────────┐   │
│  ●  …     │  │  Режим      ● UEFI   ○ BIOS             │   │
│  ◆  09    │  │  Диск: /dev/sda  256G                   │   │
│  ○  10    │  │  Додати SWAP?  [так]  [ 4 ГіБ ]         │   │
│  ○  …     │  │  Файлова система  ‹ ext4 ›  btrfs  xfs  │   │
│           │  │              ◂ Назад       Далі ▸       │   │
│           │  └────────────────────────────────────────┘   │
│           ├──────────────────────────────────────────────┤
│           │  ↑/↓ рух · ←/→ зміна · Enter далі             │
└───────────┴──────────────────────────────────────────────┘

Ліва панель показує лише номери кроків (на активному крутиться маленький ромб); повна назва кроку — у заголовку панелі.


⌨️ Керування

КлавішіДія
↑ / ↓рух списками та полями
Enterобрати / далі
Esc або Shift+Tabназад; Esc також закриває модальні вікна
↑ на верхньому пунктівихід на попередній екран
Пробілпозначити пункт / перемкнути перемикач
← / →змінити значення: файлова система, розмір SWAP, режим акаунтів, сесія
Набір текстуфільтр списків, пошук пакунків, редагування полів
Tabнаступне поле на екрані «Облікові записи»
oопції файлової системи (екран «Диск та розділи»)
w / sгортання опису в модальному вікні опцій ФС
PgUp / PgDn · Home / Endшвидке гортання довгих списків та журналу встановлення
qвихід з інсталятора (заблоковано під час встановлення)
Ctrl+Cаварійний вихід

Контекстні підказки для активного екрана завжди показані в нижньому рядку інтерфейсу.


🔨 Збірка

cd installer
cargo build --release
# → target/release/artix-installer

Кроки лише для читання (часовий пояс, клавіатура, Wi-Fi, пошук пакунків, перелік дисків) коректно деградують, коли їхні інструменти недоступні поза цільовою системою. Саме встановлення (розмітка, basestrap, chroot) потребує root і справжньої цілі, тож тестуйте у віртуальній машині.


🚀 Запуск на офіційному Artix

Інсталятор не обовʼязково запускати з власного образу — його можна запустити просто з будь-якого офіційного Artix: і з консольного «base» образу, і з образу спільноти, де є робочий стіл та графічний інсталятор (Calamares) — там достатньо відкрити термінал і запустити цей TUI замість Calamares. Усі host-інструменти, яких він потребує (artools, gptfdisk, cryptsetup тощо), він доставляє сам під час роботи.

Готовий бінарник (найпростіше)

Завантажте зібраний інсталятор зі сторінки релізів і запустіть від root:

curl -LO https://github.com/YellowHearth1/artix-tui-installer/releases/download/artix-tui-installer/artix-installer
chmod +x artix-installer
sudo ./artix-installer

Збірка з джерел

base-devel дає компілятор і компонувальник, потрібні cargo:

sudo pacman -S --needed git rust base-devel
git clone https://github.com/YellowHearth1/artix-tui-installer
cd artix-tui-installer/installer
cargo build --release
sudo ./target/release/artix-installer

Кілька зауваг:

  • Інсталятор має працювати від root — він розмічає диски, виконує basestrap і chroot.
  • Це повноекранний TUI: запускайте у справжній консолі (Ctrl+Alt+F2) або в терміналі живого робочого столу, розміром щонайменше 80×24.
  • На live-образі збірка з джерел іде в оперативну памʼять; якщо її обмаль — візьміть готовий бінарник вище або зберіть його на іншій машині з Artix і скопіюйте єдиний файл на цільову.
  • ⚠️ Інсталятор форматує диски — спершу перевіряйте у віртуальній машині.

🧭 Кроки майстра

Інсталятор починається з вибору режиму: Встановлення або Відновлення системи. Встановлення проходить 15 кроків:

  1. Мова — українська / англійська; задає мову інтерфейсу та локаль системи.
  2. Часовий пояс — повний список IANA з фільтром-пошуком.
  3. Wi-Fi — пропустити (дротове), сканувати або підключитися через nmcli.
  4. Клавіатура — консольні розкладки через localectl; перша обрана — основна.
  5. Ядро — linux / lts / zen / hardened.
  6. Оточення — вибір графічного оточення (або без нього) та менеджера сеансів.
  7. Пакунки — драйвер GPU + пошук і множинний вибір з репозиторіїв.
  8. AUR — підібраний рекомендований список та живий пошук AUR.
  9. Диск — режим завантаження, цільовий диск, SWAP і файлова система кореня.
  10. Завантажувач і шифрування — вибір завантажувача (GRUB / rEFInd / Limine), виявлення інших ОС (os-prober, для GRUB), назва запису UEFI та шифрування диска: лише root, повне (із зашифрованим /boot) чи USB-ключ, обсяг і пароль-фраза. Робиться перед додатковими дисками, щоб ключ на додатковому диску мав сенс.
  11. Додаткові диски — для кожного знайденого диска/розділу: формат (або «зберегти дані»), куди монтувати (домівка / /mnt / власний шлях із назвою теки) та окрема галочка шифрування. Нічого не змінюється, доки ви не оберете.
  12. Користувач — імʼя компʼютера, режим запису, імʼя користувача та паролі (тримаються лише в памʼяті, на диск інсталятором не пишуться).
  13. Параметри — sudo без пароля, репозиторій Chaotic-AUR та оптимізація дзеркал.
  14. Встановлення — огляд, а потім живий журнал виконує план крок за кроком; зупиняється при помилці й дозволяє повернутися Назад.
  15. Завершення — підсумок і перезавантаження.

Навігація всюди однакова: / рухає фокус (а стрілка вгору на найвищому пункті повертає на попередній крок), / змінює значення, Enter — далі, Esc — закрити віконце або повернутися назад.


🧱 Як організовано встановлення

src/system/install.rs будує один упорядкований список дій; екран встановлення виконує кожну, транслюючи вивід наживо. Орієнтовно:

встановлення host-інструментів → розмітка → форматування (за потреби LUKS) → монтування → фаза 1 basestrap мінімальної завантажуваної бази (ядро, firmware, dinit + сервіси, звук, логування) → налаштування репозиторіїв + ключів → фаза 2 інтерактивний pacman для оточення, драйверів і ваших пакунків → облікові записи → локаль / часовий пояс / розкладка / hostname + hosts → налаштування user-dinit (turnstile або userspawn) → initramfs (з хуком encrypt при шифруванні) → завантажувач → вбудований nftables → логротація → ввімкнення всіх сервісів dinit → фаза 3 AUR через paru.


🌳 Btrfs: підтоми, авто-знімки й відкат системи

Якщо на кроці «Диск та розділи» обрати btrfs, під вибором файлової системи зʼявляються додаткові опції (кожна — з поясненням «виграш/втрата» просто в інтерфейсі):

  • Підтоми — схема @ (корінь), @home, @snapshots/.snapshots, @log/var/log, @cache/var/cache. Знімки системи не чіпають /home і не роздуваються логами та кешем.
  • Авто-знімки (snapper + snap-pac) — знімок до та після кожної транзакції pacman/paru; вмикає підтоми автоматично (потрібен @snapshots).
  • Стиснення (zstd) — прозоре compress=zstd при записі.
  • TRIM для SSDdiscard=async у фоні.
  • Для будь-якої файлової системи окремо є noatime.

Корінь завжди монтується з rootflags=subvol=@ — за іменем, а не через default-підтом.

Що інсталятор налаштовує для знімків:

  • snapper конфігурується прямим записом /etc/snapper/configs/root (бо create-config у chroot не працює): TIMELINE_CREATE=no — знімки привʼязані до подій pacman, а не до годинника; NUMBER_LIMIT=10 — тримаються останні ~10.
  • Очищення за розкладом/etc/cron.d/snapper (щодня о 5:30) через cronie, бо на dinit немає systemd-таймерів.
  • Базовий знімок першого завантаження — одноразовий фоновий сервіс чекає, поки піднімуться D-Bus і snapper, робить знімок «clean system (post-install baseline)» і прибирає сам себе.

Відкат працює на будь-якому завантажувачі (GRUB, rEFInd, Limine):

  • sudo artix-rollback [N] — показує список знімків; обраний стає новим @, старий корінь зберігається як @.rollback-<час>, default-підтом перенацілюється, а застарілий pacman-лок зі знімка прибирається (snap-pac робить PRE-знімок ще під db.lck). Є також ярлик у меню програм.
  • Відкат до старту системи — параметр ядра artix.rollback відкриває вибір знімка прямо з initramfs; хук mkinitcpio виконується після encrypt, тож працює і з LUKS. На GRUB для цього є окремий пункт меню System Rollback.
  • Класичний snapper rollback теж працює.

Відкат не залежить від живого ядра: у /boot лежить заморожена пара vmlinuz-artix-rescue + initramfs-artix-rescue.img, яку pacman не чіпає. Саме її вантажать пункти System Rollback у GRUB, rEFInd і Limine — тож навіть коли оновлення зламало ядро чи initramfs, добірник знімків однаково запускається (а поруч є звичайний пункт rescue kernel — завантажитись на запасному ядрі без жодного відкату). Пара оновлюється лише після вдалого звичайного завантаження: сервіс artix-rescue-sync спрацьовує через 30 с аптайму і спершу звіряє, що зараз працює саме живе ядро (побайтове порівняння з /usr/lib/modules/$(uname -r)/vmlinuz), тому зламане ядро ніколи не отруїть копію. А одразу після відкату одноразовий artix-rollback-fixup сам узгоджує /boot із відновленою системою: повертає ядро зі знімкових /usr/lib/modules, перезбирає initramfs, оновлює меню GRUB і заморожує свіжу запасну пару.

Чому не grub-btrfs: його підменю вантажить знімки read-only через overlayfs-хук, зламаний на ядрах ≥ 6.8 (Antynea/grub-btrfs #328) — пункти просто не вантажаться. Натомість artix-rollback підмінює @ і вантажить відновлений корінь read-write, без overlay, на будь-якому ядрі й завантажувачі.


📀 Профіль ISO (iso-profile/, для artools buildiso)

  • Packages-Root / Packages-Live — пакунки для живого образу (лише dinit).
  • profile.conf — автологін/дисплей-менеджер для живого сеансу.
  • live-overlay/usr/bin/installer-launch — дає TUI справжній керівний термінал на tty1 (setsid -c), із запасним шеллом у разі збою.
  • live-overlay/etc/dinit.d/installer.conf — сервіс автозапуску інсталятора замість getty на tty1.
  • grub-overrides/loopback.cfg — завантажується одразу в інсталятор.

Покладіть скомпільований бінарник у live-overlay/usr/bin/artix-installer, тоді виконайте sudo buildiso -p <профіль>.


🗂️ Структура проєкту

installer/        Сирці Rust (TUI на ratatui + логіка встановлення)
  src/app.rs      модель стану + конфіг
  src/event.rs    глобальна обробка клавіш / навігація
  src/main.rs     точка входу + «графічна» оболонка інсталятора
  src/screens/    по модулю на кожен крок майстра
  src/system/     диск, runner (PTY), план встановлення, пакунки, відновлення
  src/assets/     вбудовані конфіги (kitty, fastfetch, waybar, wofi, pinnacle)
  i18n/           рядки інтерфейсу en.toml / uk.toml
iso-profile/      профіль artools buildiso + накладка живого образу
screenshots/      знімки екрана для README (15 кроків майстра)

📸 Знімки екрана

Примітка. Усі знімки зроблено в графічному емуляторі термінала на машині зі встановленим графічним оточенням. У чистому TTY (наприклад, одразу після завантаження базового образа Artix) інтерфейс виглядає значно скромніше: консоль ядра дає лише 16 кольорів і власний шрифт, тож частина ефектів ratatui — плавні відтінки, приглушені тони, заокруглені рамки — там недоступна або спрощена. Функційно все працює однаково.

Повний прохід майстра — усі 15 кроків. Інтерфейс двомовний (українська / англійська); знімки нижче зроблено українською.

Крок 1/15 — Мова. Мова інтерфейсу та майбутньої системи.

Крок 1 — Мова

Крок 2/15 — Часовий пояс. Пошук і вибір часового поясу.

Крок 2 — Часовий пояс

Крок 3/15 — Мережа. Пропустити (дротове зʼєднання) або просканувати Wi-Fi: вибір адаптера, мережі та введення паролю.

Крок 3 — Мережа

Крок 4/15 — Розкладка клавіатури. Мультивибір розкладок із фільтром; перша позначена стає основною.

Крок 4 — Розкладка клавіатури

Крок 5/15 — Ядро. Linux, Linux Zen, Linux Hardened або Linux LTS.

Крок 5 — Ядро

Крок 6/15 — Графічне оточення. Мультивибір оточень, перемикання сесії (Wayland/X11) та вибір екрана входу.

Крок 6 — Графічне оточення

Крок 7/15 — Додаткові пакунки. Драйвери відеокарти + пошук і вибір популярних пакунків.

Крок 7 — Додаткові пакунки

Крок 8/15 — Пакунки AUR. Пошук в AUR і рекомендовані пакунки (збірка через paru).

Крок 8 — Пакунки AUR

Крок 9/15 — Диск і розділи. UEFI/BIOS, вибір диска, розділ SWAP, файлова система кореня.

Крок 9 — Диск і розділи

Крок 10/15 — Завантажувач і шифрування. GRUB / rEFInd / Limine / EFISTUB, os-prober, назва UEFI-запису, шифрування LUKS.

Крок 10 — Завантажувач і шифрування

Крок 11/15 — Додаткові диски. Монтування інших дисків і наявних розділів (напр. Windows NTFS — зі збереженням даних).

Крок 11 — Додаткові диски

Крок 12/15 — Облікові записи. Імʼя компʼютера, користувач і паролі; режим облікових записів.

Крок 12 — Облікові записи

Крок 13/15 — Параметри встановлення. Пароль sudo, репозиторій Chaotic-AUR, оптимізація дзеркал.

Крок 13 — Параметри встановлення

Крок 14/15 — Перевірка та встановлення. Підсумок усіх виборів перед стартом.

Крок 14 — Перевірка та встановлення

Крок 15/15 — Завершення. QR-код для донату на оборону України та вибір: перезавантажити, вимкнути чи зайти у встановлену систему для ручних кроків.

Крок 15 — Завершення


📄 Ліцензія

Проєкт розповсюджується за ліцензією Apache 2.0 — повний текст у файлі LICENSE.

相似文章

@vintcessun: 午间看到一个解决下载目录乱象的工具,有点离谱——用Rust+Tauri写了个系统托盘文件整理器,内存占用才5MB,还刚补上Linux支持。核心是文件监控加规则引擎,按扩展名或正则自动分类,SQLite记操作历史可一键撤销。隐私方面零上报,…

X AI KOLs Timeline

介绍了一个开源的桌面文件整理工具Mouzi,基于Rust和Tauri构建,内存占用仅5MB,支持文件监控和规则引擎自动分类,强调隐私零上报。

@geekbb: 基于 Tauri(Rust + Svelte)的桌面应用,将编程 AI 代理、API 客户端、SQL/NoSQL 编辑器、SSH 终端、远程文件浏览器和项目管理看板整合在一个界面中,开发者不用在多个应用之间切换。 https://gith…

X AI KOLs Timeline

Clauge 是一个基于 Tauri(Rust + Svelte)的桌面应用,将编程 AI 代理、API 客户端、SQL/NoSQL 编辑器、SSH 终端、远程文件浏览器和项目管理看板集成在同一界面内,让开发者无需在多个应用间切换。

@QingQ77: 一个用 Rust 和 C 编写的开源项目,通过 JIT 编译技术在 macOS 上直接运行 Linux 容器。 https://github.com/ricccrd/dd 它不需要虚拟机、hypervisor 或 Linux 内核,而是将…

X AI KOLs Timeline

dd is an open-source tool written in Rust and C that runs Linux containers on macOS without a VM by using JIT compilation to translate container instructions and handle syscalls in userspace. It implements the Docker Engine API, supports arm64 and x86-64 Linux images, and offers performance comparable to or better than VM-based solutions.