Чи оснащений портативний пристрій в інших UNIX (наприклад, macOS)?


10

Мені подобається ідея за оснащенням і розіграна з нею на Ubuntu VM.

Огляд Snapcraft

Snapcraft - це інструмент для складання та упаковки, який допоможе вам упакувати програмне забезпечення як оснащення. Це дозволяє легко включати компоненти з різних джерел та будувати технології чи рішення. Основні поняття

Пакет .snap для системи Ubuntu Core містить усі його залежності. Це має кілька переваг перед традиційною залежністю на основі деб / хв / хв. Найважливішим є те, що розробник завжди може бути впевнений, що немає регресій, викликаних змінами в системі під їх додатком.

Snapcraft спрощує поєднання цих залежностей, дозволяючи вказати їх як "частини" у файлі snapcraft.yaml. Веселий

Snappy Ubuntu Core - це нове видання Ubuntu з транзакційними оновленнями - мінімальне зображення сервера з тими ж бібліотеками, що і сьогоднішній Ubuntu, але програми надаються через більш простий механізм.

Snappy програми та сам Ubuntu Core можна модернізувати атомно та повернути назад у разі потреби. Додатки також суворо обмежені та надають пісочницю для захисту ваших даних та системи.

IoT ›Створюйте програми

На яких технологіях базується оснащення? Як виглядають архітектура та набори інструментів? Чи залежить оснащення від функцій ядра Linux?

Я запитую, бо мені цікаво, чи зможу я в майбутньому використовувати ті самі пакети оснащення також на macOS?

Пояснення після першого коментаря:

Я знаю, що macOS і Ubuntu не сумісні з бінарними файлами. Потрібна перекомпіляція. Практично будь-який відкритий код доступний вже для macOS з Homebrew . Розробник може розроблятись на macOS та розгортатись на Ubuntu, коли оснащення стане (у майбутньому) доступним для macOS.


1
Навіть якби не було залучено жодних функцій ядра, я б не очікував, що будь-яке нетривіальне додаток, навіть статично скомпільоване, запускається без повторної компіляції на macOS та Linux - формати виконуваних файлів різні, ABI будуть різними для основної системи POSIX виклики були б різними, особливо для додатків, що надходять за межі POSIX, еквівалентні системні дзвінки мають бути різними. Це не перешкоди, я думаю, що будь-яка упаковка може подолати. Інакше такі проекти, як Wine and Darling, давно мали б успіх.
muru

Отже, ви хочете встановити знімки на macOS або створити знімки на macOS? Ваше запитання спочатку виглядало як колишнє, а тепер схоже на друге.
muru

У будь-якому разі, оскільки знімки досі не були повністю перенесені на інші дистрибутиви Linux , я очікую, що будь-які дії на macOS будуть мрією.
muru

Відповіді:


20

Так, завдяки стабільності інтерфейсу syscall Linux це можливо.

Одне з великих зобов'язань Лінуса Торвальдса перед користувачами Linux полягає в тому, що набір інтерфейсів, пропонованих ядром, є стабільним. Багато людей не оцінюють цінність цього або наскільки складно це як лідера відкритого проекту для досягнення цього зобов'язання. Розглянемо для прикладу, наскільки контрастними є непередбачувані зміни в API GNOME! Коли ви чуєте про те, що Лінус стає інтенсивним у списку розсилки, це майже завжди тому, що якийсь прихильник ядра вирішив змінити такий інтерфейс, "оскільки вони мали кращу ідею". Лінус каже, що ви можете дивовижно впроваджувати ВНУТРІ ядро, але, будь ласка, не порушуйте програми "користувацького простору", які залежать від існуючих системних дзвінків.

Як наслідок цієї стабільності, інші ядра можуть пропонувати ті самі системні виклики, що дозволяє додаткам, побудованим на Linux, працювати на цих інших ядрах.

Одним із прикладів цього є проект Joyent Triton, який пропонує сумісні з Linux систематичні виклики в контейнерах на SmartOS (нащадок IllumOS, нащадок Solaris).

Широко відомий приклад - нова підсистема Linux у Windows .

Звичайно, скільки запропонованих системних дзвінків і наскільки сумісні вони з помилками, - це справжнє питання. Принаймні, поки що немає іншого середовища, де є всі необхідні систематичні виклики, тому що ті, які використовують знімки, є відносно новими і глибокими в тому, як ядро ​​думає про речі, якими він керує.

Але вони, безумовно, прийдуть вчасно, і я думаю, що знімки, таким чином, можуть бути використані в широкому діапазоні контекстів.

Що дуже круто, патчі вітаються :)


11

Поки я не можу знайти ніякої інформації про macOS, цей OMG! У статті Ubuntu є цікава цитата від Марка Шуттлворта:

Що стосується запуску Snaps в Windows 10? "Це абсолютно правдоподібно", - сказав Шуттлворт.

«Snaps використовує сучасні функції в ядрі Linux для обмеження безпеки, налаштування доступу до файлової системи тощо, і все це включає використання сучасних механізмів у ядрі. І Canonical приводить багато [цього твору]. Microsoft займе певний час, щоб [дістатися до нього]. "

Якщо це "правдоподібно" запустити його в Windows, я б сказав те саме для macOS, за винятком того, що Microsoft, здається, співпрацює з Canonical, і це не те, що я чув про те, що Apple робить.


Документація щодо політики безпеки Snap та пісочниці та запис Arch Wiki щодо оснащення є інформативними:

З Arch Wiki:

Зауважте, що функція оснащення побудована за допомогою параметра - відключити-обмеження; Повне обмеження покладається на ядро ​​з підтримкою AppArmor та пов'язаний профіль для оснащення.

З політики:

Під капотом пускова установка:

  • Встановлює різні змінні середовища: […]
  • Коли апаратне забезпечення призначене для оснащення, встановлюйте групу пристроїв із пристроями за замовчуванням (наприклад, / dev / null, / dev / urandom тощо) та будь-якими пристроями, призначеними для цього оснащення
  • Налаштовує приватний / tmp, використовуючи приватний простір імен для монтування за командою та монтуючи каталог для команд на / tmp
  • Встановлює команду, яка розробляє новий екземпляр
  • Встановлює фільтр seccomp для команди
  • Виконує команду під специфічним для команди профілем AppArmor за значенням nice за замовчуванням

Це поєднання обмежувальних профілів AppArmor (які опосередковують доступ до файлів, виконання програм, можливостей Linux (7), монтаж, ptrace, IPC, сигнали, крупнозернисті мережі), чітко визначені області застосування файлової системи, фільтр системного виклику білого списку через seccomp, приватний / tmp, нові розробки примірників та групи пристроїв забезпечують сильне обмеження та ізоляцію додатків.

Хоча AppArmor і seccomp є лише Linux, схоже, що обмеження можна зробити необов’язковим, тому ми можемо ігнорувати це. Потім є використання devpts, cgroups та простору імен для монтування. Якщо є якесь блокування, я думаю, це було б для тих. Я недостатньо знайомий з BSD, щоб сказати, що таке еквіваленти.

Сама snapdзаявка написана на Go, що повинно зробити її розумовою платформою. Дійсно, деякі файли мають дуже цікаві цілі побудови :

osutil/group_other.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build !linux,!darwin,!freebsd

osutil/group_linux.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build darwin freebsd linux
// +build cgo

Так виглядає, що хтось має до цього інтерес.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.