Skip to content

Monero Ilaro

Rogue Maven requested to merge monero-ilaro into master

The Monero Ilaro Project

Preface

Reddit post: https://www.reddit.com/r/Monero/comments/rdtnii/project_monero_ilaro_a_bootable_linux_os_and/

After creating the above post in r/Monero, comments strongly suggested that I create a CCS proposal. Since I am new to this space, as well as the CCS process, I have attempted to craft a proposal with incremental milestones. Once achieved, these milestones have the ability to stand on their own as fully functional. The funding amounts for each milestone are somewhat arbitrary, but the overall intent is to balance any perceived risks caused by my being a newcomer. What I have done is calculated a total amount for 3 months of work and then evenly divided this amount among the milestones. Dividing in this way serves a few purposes. Primarily it is to allow the community to receive tangible code deliverables that can be utilized right away without needing to wait for the entire scope to be completed. It also accounts for and incentivizes my time while providing incremental proof of value to stakeholders. Some factors I took into consideration when calculating the funding amount include: my salary avg @ $120k/year, my freelance rate @ $125/hr, and an avg XMR price @ $200.

Up to this point in time, there has easily been 100+ hours of research and coding that have gone into this project. Much of it could be considered code-complete, but definitely needs user testing. The CLI and TUI components are functional enough for myself, but are not quite at the "drop-dead" simple state that I have envisioned for mass adoption purposes.

Since this project was not originally intended to be open source, the current code and build process steps are in a state that I would describe as "creative chaos". What is needed is structuring, possible code refactoring, and build process documentation so it can be an open source project. A project capable of being code-reviewed, vetted, adopted, and built upon by others in the Monero community.

Origin Story

This idea of Ilaro started to take shape around 2 months ago. Initially the need was for a quick/easy way to test hashing ability on a ton of computers with a variety of specs. Spending hours formatting hard drives and installing Ubuntu felt like a huge time waste. What I wanted was the ability to plug a USB into any computer and quickly start running XMRig while leaving the original OS untouched. After much research and experimentation I created the original version of this tool for myself. Since then many improvements have been added, all of which have been designed to make it possible for anyone to use Ilaro regardless of their technical expertise.

Who Am I?

For better and sometimes worse, I could be described as that mythical tech guy. The 10x coder, the unicorn, a jedi knight tech ninja assassin. I am this way largely due to a lifetime of autistic special-interest in computer systems. The positive side to this is whenever I am working on a technical solution to a problem, my current skill-set is not a factor in deciding the best approach. I will learn whatever skill/language/process is necessary to accomplish the most optimum results within the given time-frame. The negative side of this is not being a good fit for most corporate hierarchies. Notably this has not been much of an issue, as I have worked for myself or as an independent freelancer for most of my career. On occasion I have been enticed to lead dev teams and join small/mid sized tech start-ups that offered a good salary and a position which included final say on all tech decisions.

I deeply believe in the necessity of making Monero easily accessible to absolutely everyone, and I hope to be afforded the opportunity to make a significant impact on its adoption.

Proposal

monero: currency or coin

ilaro: kit or toolkit. a collection of tools

Highest Level Project Goals

  • To increase the adoption and use of Monero by the average everyday citizen of the world.
  • To accelerate the pace of new Monero software development by increasing the number of dev contributors.

What most engages the interest of a potential new user?

  • Privacy (obviously).
  • Mining which can be done on almost any computer.
  • Various philosophical beliefs that arrive at an identical conclusion that the existence of Monero is a necessity.

How can a greater percent of initial interest be converted into adoption?

  • "On-boarding" experience for the non-technical folks needs to be drop-dead simple. Users should be able to create a wallet and begin mining within the first 5 minutes.
  • Coders and tech-ninjas need a common computer system platform on which to build their towers of code. Coders should not have to take into consideration multiple different operating systems and UI software layers to be able to contribute to the Monero project.

So What Is Ilaro?

Basic summary: The ability to plug a USB stick into any computer and temporarily turn it into an XMR miner, p2pool node, and/or monero blockchain node. A simple reboot and the computer is returned back to normal. Current and future applications essential to using Monero will be included in this toolkit (Ilaro).

Technical summary: The source code of the Ilaro project creates a bootable ISO image of a Linux operating system customized for using Monero. An additional core component of the Ilaro project is a robust terminal user interface (TUI) system. Familiar UI concepts like button clicks, application windows, scrolling and other mouse events are emulated within the context of a CLI terminal.

Startup Screenshots

BIOS boot loader

ilaro-boot-isolinux

EFI boot loader

ilaro-boot-grub2

CLI prompt after startup

ilaro-monerOS-linux

Platform Details

  • Customized Alpine Linux distro with APK package system.
  • Does not require a hard drive. Allows for motherboard-only mining rigs.
  • Essential Monero CLI programs and dev libraries pre-installed. Can be recompiled from source.
  • !!Rock steady max hashrates!!

Boot System

  • BIOS and EFI motherboard bootloader compatible. BIOS uses Syslinux/isolinux. EFI uses Grub2.
  • Ilaro ISO file can be burned to CD or flashed to a USB stick. Currently ISO file size < 200MB.
  • "Live USB/CD" will boot on any x86_64 CPU hardware. Including Apple Mac desktops and laptops.
  • Installs to RAM (like Tails OS). Currently uses ~100MB of RAM total at startup.
  • Makes no modifications to the computer it is used on.

Operating System

  • Core operating system cannot be permanently hacked or modified by malware due to ISO filesystem. Reboot resets OS to base.
  • Can be user configured to run as a miner, p2pool, blockchain-node, or other in "plug-n-play" mode.
  • Linux customizations and additional packages can be installed and made to persist on reboot with OS "overlay" system.
  • When an ISO is flashed to a USB stick the remaining disk space becomes unusable. This issue has been solved. USB will appear as a "normal" drive if inserted into computer running Windows/Mac OS, while the boot partition will not be visible. This allows drag-n-drop config file transfer from an existing rig setup.

TUI System Details

  • Emulates the look and feel of traditional GUI application "windows" and mouse events, but runs entirely from the command line terminal.
  • "X", "Wayland", and other window-managers bloat-code is not required to build user interfaces that are easy to operate and understand.
  • Keeps ISO filesize and RAM system usage to a minimum.

TUI App Screenshot

The user interface depicted below is constructed entirely out of text/unicode characters. It is a C++ compiled app running in default shell. TUI-app-demo

Future stuff

  • Tor (for sure)
  • PXE network bootloader (maybe)
  • DEX node??? Haveno integration (???)

Other possibilities

  • Use case specific kits. Perhaps a USB kit just for merchants.
  • If there was enough Ilaro users then a uniquely Monero Tor protocol-variant could be devised.
  • Users could opt-in to share their Monero blockchain DB with other Ilaro users. Those that share DB would get hashrate "fees" from connected clients.

Merge request reports