https://github.com/guysoft/custompios-test
Test repo, do not use
https://github.com/guysoft/custompios-test
Last synced: 11 months ago
JSON representation
Test repo, do not use
- Host: GitHub
- URL: https://github.com/guysoft/custompios-test
- Owner: guysoft
- License: gpl-3.0
- Created: 2019-11-11T15:00:00.000Z (over 6 years ago)
- Default Branch: devel
- Last Pushed: 2019-11-17T09:48:22.000Z (over 6 years ago)
- Last Synced: 2025-06-05T23:41:13.628Z (about 1 year ago)
- Language: Shell
- Size: 660 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
CustomPiOS
==========
A `Raspberry Pi `_ and other ARM devices distribution builder. CustomPiOS opens an already existing image, modifies it and repackages the image ready to ship.
This repository contains the source script to generate a distribution out of an existing `Raspbian `_ distro image, or Armbian devices.
Donate
------
CustomPiOS is 100% free and open source and maintained by Guy Sheffer. If its helping your life, your organisation or makes you happy, please consider making a donation. It means I can code more and worry less about my balance. Any amount counts.
Also many thanks to people contributing code.
|paypal|
.. |paypal| image:: https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif
:target: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9KKRS7ERGDCCG&source=url
Where to get it?
----------------
`Clone this repo `_. Then follow instructions either to build an existing distro or create your own.
How to use it?
--------------
#. Clone this image ``git clone https://github.com/guysoft/CustomPiOS.git``
#. Run ``src/make_custom_pi_os -g `` in the repo, distro folder should not exist and contain no spaces. This will both create a folder to build a new distro from, and also download the latest raspbian lite image. The initial distro has a module that has the name of your distro, and you can find it under ``/src/modules/`` (there should be only one module in the modules folder).
#. cd to ``/src``
#. Edit your ``/src/config``, you can also edit the starting module, which is named as your distro at ``modules/``. More on that in the Developing section.
#. Run ``/src/build_dist`` to build an image. If this fails use the method described in the vagrant build section (which makes sure sfdisk and other things work right).
Features
--------
* Modules - write one module and use it for multiple distros
* Write only the code you need for your distro - no need to maintain complicated stuff like building kernels unless its actually want to do it
* Standard modules give extra functionality out of the box
* Supports over 40 embedded devices using `Armbian `_ and Raspbian.
Developing
----------
Requirements
~~~~~~~~~~~~
#. `qemu-arm-static `_
#. Downloaded `Raspbian `_ image.
#. root privileges for chroot
#. Bash
#. git
#. realpath
#. sudo (the script itself calls it, running as root without sudo won't work)
#. p7zip-full
#. Python 3.2+
Known to work building configurations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Linux (Ubuntu / Debian etc)
2. OS X - `See this thread for information `_
Modules
-------
`See Modules entry in wiki `_
chroot_script
~~~~~~~~~~~~~
This is where the stuff you want to execute inside the distro is written.
In ``start_chroot_script`` write the main code, you can use ``end_chroot_script`` to write cleanup functions, that are run at the end of the module namespace.
Useful commands from common.sh
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CustomPiOS comes with a script ``common.sh`` that has useful functions you can use inside your chroot_script.
To use it you can add to your script ``source /common.sh``.
``unpack [from_filesystem] [destination] [owner]`` - Lets you unpack files from the ``filesystem`` folder to a given destination. ``[owner]`` lets you set which user is going to be the owner. e.g. ``unpack /filesystem/home/pi /home/pi pi``
``gitclone __REPO destination`` - Lets you clone a git repo, and have the settings preset in the ``config`` file. Example usage in OCTOPI module.
In chroot_script::
gitclone OCTOPI_OCTOPRINT_REPO OctoPrint
In ``config``::
[ -n "$OCTOPI_OCTOPRINT_REPO_SHIP" ] || OCTOPI_OCTOPRINT_REPO_SHIP=https://github.com/foosel/OctoPrint.git
Export files from image
~~~~~~~~~~~~~~~~~~~~~~~
CustomPiOS has a feature to export files created in the chroot to archives you can ship as a tar.gz archive.
To export run inside of a chroot_script:
``custompios_export [name of archive] [file path in chroot]``
You can also use:
``copy_and_export [name of archive] [source] [destination]``
and:
``copy_and_export_folder [name of archive] [folder] [destination]``
The results would be saved in the workspace folder.
filesystem
~~~~~~~~~~
Lets you add files to your distro, and save them to the repo. The files can be unpacked using the ``unpack`` command that is in ``common.sh``.
config
~~~~~~
This is where you can create module-specific settings. They can then be overwritten in a distro or variant.
The naming convention is the module name in
Build a Distro From within Raspbian / Debian / Ubuntu / CustomPiOS Distros
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
`See building entry in wiki `_
Building Distro Variants
~~~~~~~~~~~~~~~~~~~~~~~~
`See building entry in wiki `_
Building Using Docker
~~~~~~~~~~~~~~~~~~~~~~
`See Building with docker entry in wiki `_
Building Using Vagrant
~~~~~~~~~~~~~~~~~~~~~~
`See Building with Vagrant entry in wiki `_
Usage
~~~~~
#. If needed, override existing config settings by creating a new file ``src/config.local``. You can override all settings found in ``src/config``. If you need to override the path to the Raspbian image to use for building your distro, override the path to be used in ``BASE_ZIP_IMG``, which is part of the base module. By default the most recent file matching ``*-raspbian.zip`` found in ``src/image`` will be used.
#. Run ``src/build`` as root.
#. The final image will be created at the ``src/workspace``
List of Distributions using CustomPiOS
--------------------------------------
* `OctoPi `_ - The ready-to-go Raspberry Pi image with OctoPrint
* `FullPageOS `_ - A Raspberry Pi distro to display a full page browser on boot
* `Zynthian `_ - Open Synth Platform
* `ElectricSheepPi `_ - A Raspberry Pi distribution to run Electric Sheep digital art
* `AlarmPi `_ - A Raspberry Pi distribution that turns a Raspberry Pi to an IOT telegram-controlled alarm clock
* `RealtimePi `_ - An out-of-the-box Raspebrry Pi/Raspbian distro with a realtime kernel
* `RMS Pi `_ - Raspberry Pi Distro for Winlink RMS
* `V1PI `_ - Use your Raspberry Pi to control your V1Engineering machine
* `HotSpotOS `_ - Makes a Raspberry Pi start a hotspot, if no wifi was found to connect to
Code contribution would be appreciated!