Tạo hình ảnh thẻ SD được chuẩn bị trước


19

Đối với một dự án tôi đang làm việc, tôi muốn tạo một hình ảnh "stock" dựa trên Raspbian mà tôi có thể cài đặt trên nhiều Pis.

Lý tưởng nhất là tôi muốn có thể (trên máy tính của mình) lấy hình ảnh Raspbian, apt-get một số gói, chỉnh sửa một số cấu hình, sau đó tạo và hình ảnh thẻ SD từ đó để đưa vào Pis của tôi.

Có một cách đơn giản hoặc được đề nghị để làm điều này? Bất kỳ cạm bẫy nào tôi có thể gặp phải?

Tôi muốn tránh tự mày mò với một pi và sau đó nhân bản hình ảnh đó. Có lẽ Raspbian được tạo ra theo một cách nào đó mà không phải ai đó nhấp vào nút thủ công trên Pi. Tôi muốn làm theo cách đó, nếu tôi có thể.

Lý tưởng nhất là tôi muốn tạo một cái gì đó có thể được xây dựng tự động trên một máy chủ tích hợp liên tục - Tôi không muốn một quy trình xây dựng liên quan đến việc "viết thẻ SD, đặt nó vào Pi" vì tôi muốn được tạo ra hình ảnh mà không cần bất kỳ truy cập vật lý vào Raspberry Pi.


3
Có thể có ích: Làm cách nào tôi có thể gắn ảnh distro Raspberry Pi Linux? - lưu ý dòng nhấn mạnh trong câu trả lời được chấp nhận, "Nếu bạn thay đổi bất cứ điều gì, những thay đổi đó sẽ được bao gồm trong tệp .img." Thật không may, điều này không cung cấp cơ hội để áp dụng apt-get; Cách dễ nhất để làm điều đó là sử dụng VM và rsyncvới hình ảnh được gắn giống hệt với hình ảnh được sử dụng để khởi động VM (vì hình ảnh VM không tốt cho việc này) nhưng tôi nghĩ tùy chọn VM duy nhất ở đây là QEMU, AFAICT là một Pita.
goldilocks

Một cách tiếp cận khác sẽ là khởi động mạng.
lexu

Win32DiskImager có chức năng Đọc, bạn đã thử chưa?
Kong Chun Ho

Câu trả lời:


6

Nền tảng Raspberry Pi sử dụng một tập các bash script tự động hóa QEMU để tạo hình ảnh của chúng. Bạn vẫn nên xem xét các bản dựng "tiêu chuẩn công nghiệp" và Yocto.

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

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


Nếu OP đang tìm cách tạo ra một hình ảnh phát hành tiêu chuẩn công nghiệp .. vâng đó là cách để đi nhưng đó là một đường cong học tập lớn và tôi muốn không có người có sở thích đi theo con đường đó.
Piotr Kula

1
Điều này nghe có vẻ như những gì tôi đang tìm kiếm! Có hướng dẫn nào về việc sử dụng này không? build.sh dường như giả định một loạt các biến môi trường được đặt.
Andy Smith

Có lẽ được bao phủ bởi Số 4 trong TODO ;) Đã không được chạm vào trong một vài tháng nên những người liên quan đang bận rộn với những thứ khác hoặc đã mất hứng thú với nó.
goldilocks

@goldilocks vậy đây không phải là nơi hình ảnh rasbian cơ sở đến từ đâu?
Andy Smith

3
Tôi sẽ thành thật và nói rằng ấn tượng của tôi là bạn đang theo đuổi khía cạnh Y của một vấn đề XY với quá nhiều sức mạnh - nó ngụ ý bạn nghĩ rằng phương pháp đơn giản hơn (chỉ cần thiết lập một hình ảnh trên pi, có thể được thực hiện từ một máy tính thông qua đăng nhập từ xa và hình ảnh được điều chỉnh bằng cách gắn, có thể được thực hiện trên PC và tất cả điều này có thể được tự động hóa bằng kịch bản) là quá nhiều rắc rối, và vì vậy bạn đã đặt hy vọng vào một phương pháp thực sự nhiều nhiều rắc rối .
goldilocks

5

Dự án Nard SDK của tôi có nhiều tính năng bạn muốn. Nó không phải là Raspbian nhưng nó có mô phỏng nhị phân Raspbian và do đó rất gần. Với Nard, bạn xây dựng mọi thứ trên PC và quá trình này rất nhanh và có thể tái tạo. Mọi thứ đều có thể viết được và có thể được thực hiện bằng cách tích hợp liên tục hàng đêm.
http://www.arbetsmyra.dyndns.org/nard/


0

Theo tôi , thực hiện theo cách bạn đề xuất (gắn kết, thực hiện các giải pháp để cập nhật và định cấu hình, v.v.) đưa ra nhiều thách thức hơn các giải pháp thực tế . Chắc chắn, sẽ rất thú vị khi làm theo cách của bạn nếu bạn quan tâm, nhưng cách tốt nhất và dễ nhất có thể là cách bạn tránh.

Tôi khuyên bạn nên lấy một Pi và làm những gì bạn phải làm trên đó, sau đó tạo một hình ảnh của thẻ SD của nó. Sau đó, sử dụng hình ảnh đó trên Pis khác của bạn vì hình ảnh đó đã được cấu hình.

Lưu ý: Tôi sẽ cho rằng bạn sẽ sử dụng Raspbian. Tôi cũng sẽ cho rằng bạn chỉ là một người bình thường chứ không phải một số người thường xuyên chuẩn bị hình ảnh (ví dụ Raspberry Pi Foundation).


Các bước nếu bạn làm tinker với Pi của bạn:

  1. Tải xuống và cài đặt hình ảnh hệ điều hành mới mà bạn chọn
  2. Cắm cáp Ethernet / kết nối với WiFi
    • Có thể thực hiện quét LAN nếu bạn không biết địa chỉ IP của Pi
  3. Làm công cụ thông qua SSH
    • apt-get update -y && apt-get upgrade để cập nhật các gói
    • Nhu cầu cấu hình cá nhân của bạn
  4. Tạo một hình ảnh, sau đó sử dụng hình ảnh đó cho các Pis khác.

Các bước nếu bạn không tinker với Pi của bạn (xem ghi chú ở trên):

  1. Tải xuống hình ảnh hệ điều hành mới
  2. Gắn hình ảnh bằng cách sử dụng các hướng dẫn từ /raspberrypi//a/13138/24224 (bạn cũng phải xem xét hệ điều hành / hình ảnh nào bạn có vì một số bố cục FS khác nhau)
    • Có một máy tính sẵn sàng.
  3. Tìm debtệp cho mỗi và mọi gói bạn muốn cập nhật, cộng với các phụ thuộc của chúng , cộng với các phụ thuộc của các phụ thuộc đó , cộng với các phụ thuộc 'phụ thuộc' phụ thuộc đó . apt-offlinelà một rắc rối Tham khảo liên kết này
    • Sau đó tìm cách cài đặt tất cả các gói đó mà không cần sử dụng / mày mò với Pi của bạn. apt-getsẽ không hoạt động ngoại tuyến. deb chi tiết tập tin ở đây . Chúc may mắn.
  4. Cập nhật hạt nhân Pi và các công cụ cấp thấp bằng công cụ của Hexxeh
  5. Cấu hình theo yêu cầu của bạn
  6. Viết hình ảnh đã sửa đổi vào thẻ SD của Pis.

Tôi không thấy bất kỳ lợi ích nào khi không mày mò với Pi của bạn.

Cắt cho mình một chút chùng và tinker với Pi của bạn. Bạn chỉ phải làm một lần.


Hầu như không thể nhận được các chương trình theo cách thủ công bằng cách nhận, phụ thuộc và có phụ thuộc, và có phụ thuộc, v.v. Nhưng nếu bạn sử dụng apt-get và nói rằng bạn muốn VLC bạn sẽ làm, apt-get install vlc --yes --print- uris Điều đó sẽ đưa ra một danh sách các liên kết; Sau khi tải xuống, hãy đặt chúng vào / var / cache / apt / archives / part và chạy dpkg -i part / *. deb để cài đặt. Thậm chí tốt hơn, nếu bạn nhận được Synaptics, nó có tùy chọn để tạo tập lệnh tải xuống gói. Chạy tập lệnh đó trên Máy tính Linux và bạn đã có các gói của mình. Sau đó, bạn có thể cài đặt chúng với synaptics một lần nữa.
NULL

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

@NULL Theo tôi biết, bạn chỉ có thể sử dụng dpkgtrên chính hệ thống, không phải trên một hình ảnh được gắn kết. Ngoài ra, OP đang lên kế hoạch sử dụng PC của anh ấy / cô ấy, vì vậy các *.debtệp bạn có là kiến ​​trúc sai ở vị trí đầu tiên (PC là x86 / x64, Pi là ARMv6 / v7)
PNDA

Như tôi đã chỉ định trong câu hỏi của mình, tôi không muốn làm 1. Đối với 2, điều đó nghe có vẻ tệ :). Điều gì khiến bạn nghĩ rằng đề xuất @flakeshakes khó khăn hơn từ 2?
Andy Smith

@AndySmith Tôi sẽ trích dẫn nhận xét của goldilock: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.
PNDA

0

Tôi nghĩ rằng những gì bạn đang tìm kiếm là một số loại (software) configuration management. Với điều này, bạn sẽ có thể khởi động một hình ảnh raspbian chứng khoán và sau đó đẩy qua cấu hình của riêng bạn (bao gồm các gói mới và tương tự). Có rất nhiều hệ thống SCM ngoài kia. Nhược điểm là hầu hết các hệ thống này đều nhằm hỗ trợ các mạng quy mô lớn và do đó có thể hơi quá mức cho mục đích của bạn. Bạn cũng cần một số loại máy chủ cung cấp. SCM phổ biến nhất dường như là Puppet , Chef , Ansible . Các bài viết để giúp bạn bắt đầu:

Đây là một loại câu trả lời chung chung nhưng SCM là một lĩnh vực rộng. Có lẽ điều này đáng để đào sâu vào tùy thuộc vào kế hoạch của bạn.


Ansible có vẻ đầy hứa hẹn vì nó không có tác dụng và bạn không cần một máy chủ toàn diện để chạy nó.
duenni

1
Không thực sự, tôi muốn hình ảnh đã được xây dựng, không phải là thứ mà tôi đã xử lý. Đề xuất này không hoạt động nếu Pi của tôi không có kết nối mạng.
Andy Smith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.