clipi CLI!
Find this project on my github here!
…post updated 07/19/2020
An efficient toolset for Pi devices
Emulate, organize, burn, manage a variety of distributions for Raspberry Pi.
Choose your own adventure…
Emulate:
clipi virtualizes many common sbc operating systems with QEMU, and can play with both 32 bit and 64 bit operating systems.
- Select from any of the included distributions (or add your own to/sources.toml!) and
clipiwill handle the rest.
Organize:
clipi builds and maintains organized directories for each OS as well a persistent & convenient .qcow2 QEMU disk image.
- Too many huge source .img files and archives?
clipicleans up after itself under theUtilities...menu. - additional organizational & gcc compilation methods are available in /kernel.py
Write:
clipi burns emulations to external disks! Just insert a sd card or disk and follow the friendly prompts. All files, /home, guest directories are written out.
- Need to pre-configure (or double check) wifi? Add your ssid and password to/wpa_supplicant.conf and copy the file to
/bootin the freshly burned disk. - Need pre-enabled ssh? copy/ssh to
/boottoo. clipiprovides options for writing from an emulation’s.qcow2file via qemu…- …as well as from thesource’s raw image file with the
verbatimargument
Manage:
clipi can find the addresses of all the Raspberry Pi devices on your local network.
- Need to do this a lot?
clipican install itself as a Bash alias (option under theUtilities...menu, fire it up whenever you want.
Shortcuts:
Shortcuts & configuration arguments can be passed to clipi as a .toml (or yaml) file.
Shortcut files access clipi’s tools in a similar fashion to the interactive menu:
<shortcut>.toml
you can access the same tools and functions visible in the interactive menu like so:
‘Burn a bootable disk image’ = true
same as selecting in the interactive cli
‘image’ = ‘octoprint’ ‘target_disk’ = ‘sdc’
clipiexposes many features only accessible via configuration file arguments, such as distribution options and emulation settings.<shortcut>.toml
important qemu arguments can be provided via a shortcut file like so:
‘kernel’ = “bin/ddebian/vmlinuz-4.19.0-9-arm64” ‘initrd’ = “bin/ddebian/initrd.img-4.19.0-9-arm64”
qemu arguments like these use familiar qemu lexicon:
‘M’ = “virt” ‘m’ = “2048”
default values are be edited the same way:
‘cpu’ = “cortex-a53” ‘qcow_size’ = “+8G” ‘append’ = ‘“rw root=/dev/vda2 console=ttyAMA0 rootwait fsck.repair=yes memtest=1”’
extra arguments can be passed too:
‘**args’ = """ -device virtio-blk-device,drive=hd-root \ -no-reboot -monitor stdio """
additional network arguments can be passed like so:
(clipi may automatically modify network arguments depending on bridge / SLiRP settings)
‘network’ = """ -netdev bridge,br=br0,id=net0 \ -device virtio-net-pci,netdev=net0 """
Supply a shortcut file like so:
python3 clipi.py etc/find_pi.tomltake a look in/etc for some shortcut examples and default values
TODOs & WIPs:
bridge networking things:
- working on guest —> guest, bridge —> host, host only mode networking options.
as of 7/17/20 only SLiRP user mode networking works,
see branch broken_bridge-networking
to see what is currently cooking here
kernel stuff:
automate ramdisk & kernel extraction-
most functions to do so are all ready to go in /kernel.pyother random kernel todos-
- working on better options for building via qemu-debootstrap from chroot instead of debian netboot or native gcc
- add git specific methods to sources.py for mainline Pi linux kernel
- verify absolute binutils version
- need to get cracking on documentation for all this stuff
gcp-io stuff:
formalize ddns.py & dockerfile
make sure all ports (22, 80, 8765, etc) can up/down as reverse proxy
clone:
git clone https://github.com/Jesssullivan/clipi cd clipi
preheat:
pip3 install -r requirements.txt
(or pip install -r requirements.txt)
begin cooking some Pi:
python3 clipi.py
Related
Originally published at transscendsurvival.org