Створення заздалегідь підготовленого зображення SD-карти


19

Для проекту, над яким я працюю, я хотів би створити "запасний" образ на основі Raspbian, який я можу встановити на багатьох Pis.

В ідеалі я хотів би мати можливість (на моєму комп’ютері) зробити зображення Raspbian, вдало отримати деякі пакунки, відредагувати деякі конфігурації, а потім створити і зображення SD-карти з цього, щоб поставити на мій Pis.

Чи існує простий чи рекомендований спосіб зробити це? Будь-які підводні камені, які я можу зіткнутися?

Мені хочеться уникати вручну торкатися пі, а потім клонувати це зображення. Імовірно, Raspbian зроблений певним чином, що це не хтось, хто вручну натискає кнопки на Pi. Я хотів би зробити це саме так, якщо зможу.

В ідеалі я хочу створити те, що може бути автоматично побудовано на сервері безперервної інтеграції - я не хочу процес збирання, який передбачає "написати SD-карту, помістити її в Pi", тому що я хочу бути алею для створення зображень без будь-яких фізичний доступ до Raspberry Pi.


3
Можливо, стане в нагоді: Як я можу встановити дистрибутив на дистрибутиві Raspberry Pi Linux? - відзначте підкреслений рядок у прийнятій відповіді: "Якщо ви щось зміните, ці зміни будуть включені у файл .img". На жаль, це не дає можливості подати заявку apt-get; найпростішим способом зробити це було б використовувати VM та rsyncіз змонтованим зображенням, ідентичним тому, яке використовується для запуску VM (оскільки самі VM зображення для цього не підходять), але я думаю, що єдиний варіант VM тут - QEMU, який АФАЙКТ - ПІТА.
золотинки

Іншим підходом було б завантаження мережі.
lexu

У Win32DiskImager є функція читання, ви пробували це?
Kong Chun Ho

Відповіді:


6

Фонд Raspberry Pi використовує набір базових сценаріїв, що автоматизують QEMU для створення своїх зображень. Ви все ще повинні вивчити "галузеві стандарти" buildroot та Yocto.

https://github.com/RPi-Distro/pi-gen

http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/


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

1
Це звучить як те, що я шукаю! Чи є посібники щодо використання цього? здається, що build.sh передбачає купу змінних середовищ.
Енді Сміт

Ймовірно, охоплено №4 під TODO ;) Його не чіпали протягом декількох місяців, тож люди, які займаються, зайняті іншими речами або втратили інтерес до нього.
goldilocks

@goldilocks, отже, звідси не походить базовий rasbian образ?
Енді Сміт

3
Я чесно скажу, що моє враження, що ви переслідуєте Y- проблему XY з надто великою енергійністю - це мається на увазі, ви думаєте, простіший метод (просто встановіть зображення на pi, що можна зробити з комп'ютер за допомогою віддаленого входу в систему, а саме зображення, підроблене монтуванням, яке можна зробити на ПК, і все це можна автоматизувати за допомогою сценаріїв) - це занадто багато клопоту, і тому ви покладаєте свої сподівання на метод, який насправді багато більше клопоту .
goldilocks

5

Мій проект Nard SDK має багато необхідних функцій. Це не Raspbian, але він має бінарну емуляцію, і тому вони дуже близькі. Завдяки Nard ви створюєте все на ПК, і процес дуже швидкий і відтворюваний. Все є сценарієм, і це можна зробити, наприклад, за нічну безперервну інтеграцію.
http://www.arbetsmyra.dyndns.org/nard/


0

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

Я рекомендую вам отримати Pi і зробити все, що вам потрібно зробити, а потім зробити зображення його SD-карти. Потім використовуйте це зображення на іншому Pis, оскільки це зображення вже налаштоване.

Примітка. Я припускаю, що ви будете використовувати Raspbian. Я також припускаю, що ви просто пересічна людина, а не людина, яка готує зображення часто (наприклад, Raspberry Pi Foundation).


Кроки , якщо зробити підправляти з Pi:

  1. Завантажте та встановіть свіже зображення ОС на ваш вибір
  2. Підключіть кабель Ethernet / підключіться до WiFi
    • Можливо, скануйте локальну мережу, якщо ви не знаєте IP-адреси свого Pi
  3. Робіть речі через SSH
    • apt-get update -y && apt-get upgrade для оновлення пакетів
    • Ваші особисті потреби в конфігурації
  4. Створіть зображення, а потім використовуйте це зображення для інших Піс.

Кроки, якщо ви не роздумуєте з Pi (див. Примітку вище):

  1. Завантажте свіже зображення ОС
  2. Змонтуйте зображення, використовуючи інструкції з /raspberrypi//a/13138/24224 (ви також повинні врахувати, яка ОС / зображення у вас є, оскільки деякі мають різні макети FS)
    • Готовий калькулятор.
  3. Знайдіть debфайл для кожного пакету, який ви хочете оновити, плюс їх залежність , плюс залежність цих залежностей , а також залежності цих залежностей . apt-offlineце клопоти. Перейдіть за цим посиланням
    • Тоді знайдіть спосіб встановити всі ці пакети без використання / поправки з вашим Pi. apt-getне працюватиме в режимі офлайн. deb тут деталі файлу . Удачі.
  4. Оновіть ядра Pi та речі низького рівня за допомогою інструмента Hexxeh
  5. Налаштуйте під свої вимоги
  6. Запишіть змінене зображення на SD-картки Pis '.

Я не бачу ніякої користі в тому, щоб не повозитися з вашим Пі.

Поріжте собі піклувальника. Ви повинні це зробити лише один раз.


Це майже неможливо отримати програми вручну шляхом отримання, залежності, і там залежності, і там залежності, і т. Д. Але якщо ви використовуєте apt-get і говорите, що хочете VLC, ви б це зробили, apt-get install vlc --yes --print- урис. Це дасть список посилань; щойно завантажені, покладіть їх у / var / кеш / apt / архіви / часткові та запустіть dpkg -i частковий / *. deb для встановлення. Ще краще, якщо ви отримаєте Synaptics, у нього є можливість генерувати сценарій завантаження пакету. Запустіть цей скрипт на комп’ютері Linux, і ви отримали ваші пакети. Потім ви можете встановити їх за допомогою synaptics знову.
НУЛЬ

@NULLThen find a way to install all of those packages without using/tinkering with your Pi.
PNDA

@NULL Наскільки я знаю, ви можете використовувати лише dpkgв самій системі, а не на змонтованому зображенні. Також ОП планує використовувати свій / її ПК, тому у *.debвас файли - це неправильна архітектура, в першу чергу (ПК x86 / x64, Pi - ARMv6 / v7)
PNDA

Як я вказую у своєму питанні, я не хочу робити 1. Що стосується 2, це звучить гарно :). Що змушує вас думати, що пропозиція @flakeshakes є складнішою з 2?
Енді Сміт

@AndySmith Я цитую коментар I'll be honest and say that my impression is you are pursuing the Y side of an XY problem with too much vigour -- it's implied you think the simpler method (just set up an image on a pi, which can be done from a computer via remote login, and the image itself tweaked by mounting, which can be done on a PC, and all of this can be automated with scripting) is too much hassle, and so you have put your hopes in a method that is actually much more hassle.
goldilock

0

Я думаю, що те, що ти шукаєш, якесь (software) configuration management. За допомогою цього ви зможете завантажувати запасний малюнок розспіву, а потім натискати на власну конфігурацію (включаючи нові пакети тощо). Є багато систем SCM. Мінус полягає в тому, що більшість цих систем спрямовані на підтримку широкомасштабних мереж, і, можливо, це є дещо зайвим для вашої мети. Вам також потрібен якийсь сервер забезпечення. Найпопулярніший SCM - х , здається, Puppet , Chef , анзібль . Статті для початку:

Це свого роду загальна відповідь, але SCM - це широке поле. Можливо, це варто розібратися в залежності від ваших планів.


Ansible здається багатообіцяючою, оскільки він не є агентом, і для його запуску вам не потрібен повноцінний сервер.
дуені

1
Насправді я не хочу, щоб зображення було вже побудовано, а не те, на що я лежу. Ця пропозиція не працює, якщо мій Pi не має мережевого з'єднання.
Енді Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.