{"id":13602931,"url":"https://github.com/lavabit/robox","last_synced_at":"2025-04-11T11:45:58.636Z","repository":{"id":39718107,"uuid":"136118957","full_name":"lavabit/robox","owner":"lavabit","description":"The tools needed to robotically create/configure/provision a large number of operating systems, for a variety of hypervisors, using packer.","archived":false,"fork":false,"pushed_at":"2025-03-01T07:03:11.000Z","size":28114,"stargazers_count":641,"open_issues_count":60,"forks_count":147,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-03T13:15:09.543Z","etag":null,"topics":["alpine","arch","bash","centos","debian","fedora","freebsd","gentoo","hyperv","libvirt","openbsd","opensuse","oracle","packer","parallels","rhel","ubuntu","vagrant","virtualbox","vmware"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lavabit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-05T04:17:20.000Z","updated_at":"2025-03-10T07:09:46.000Z","dependencies_parsed_at":"2023-11-20T04:23:10.828Z","dependency_job_id":"2973e464-2336-4b91-b686-4f287d20c402","html_url":"https://github.com/lavabit/robox","commit_stats":{"total_commits":3366,"total_committers":26,"mean_commits":"129.46153846153845","dds":"0.030897207367795554","last_synced_commit":"eadba7cd7a3aa58e6f6f2f3e92fc51585ab2828b"},"previous_names":[],"tags_count":121,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavabit%2Frobox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavabit%2Frobox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavabit%2Frobox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavabit%2Frobox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lavabit","download_url":"https://codeload.github.com/lavabit/robox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248388014,"owners_count":21095324,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","arch","bash","centos","debian","fedora","freebsd","gentoo","hyperv","libvirt","openbsd","opensuse","oracle","packer","parallels","rhel","ubuntu","vagrant","virtualbox","vmware"],"created_at":"2024-08-01T18:01:43.626Z","updated_at":"2025-04-11T11:45:58.615Z","avatar_url":"https://github.com/lavabit.png","language":"Shell","readme":"\n# Roboxes\n\nGeneric base boxes, providing a variety of operating systems, and available across a number of different virtualized platforms.\n\n## Website\nhttps://roboxes.org  \n\n## Vagrant Boxes  \nhttps://app.vagrantup.com/generic  \nhttps://app.vagrantup.com/lavabit  \nhttps://app.vagrantup.com/lineage  \n\n## Podman / Docker Images  \nhttps://hub.docker.com/u/roboxes/  \nhttps://hub.docker.com/u/lavabit/  \nor   \nhttps://quay.io/organization/roboxes  \nhttps://quay.io/organization/lavabit  \n\n## Pending Additions/Updates\n\nAdd support for the new \"architecture\" flag. This means adding \"386\" or \"amd64\" as appropriate. And it means we need to add \"arm64\" boxes to the pipeline.  \n\n## Upcoming Additions\n\nOct 23rd, 2023 / FreeBSD 14.0  \n\n\\* Repo updated.\n\\*\\* Beta/pre-prerelease added.  \n\n## Pending Tasks\n  \n\u003csup\u003e\u003csub\u003e_We would welcome community help (as a pull request) with any of the following tasks._\u003c/sub\u003e\u003c/sup\u003e  \nGenerate docker variants for the Ubuntu/Debian/Alpine configurations  \nIncorporate the upload/delete/release scripts into the robox.sh script as functions.  \nAdd vagrant user password randomization logic to the bundled Vagrantfiles.  \nImprove the unit box validation/check script with SSH command tests/checks.\nStart building ARM variants for some virtual machines/boxes.  \n ^-- WE NEED A HARDWARE DONATION TO MAKE ARM64 IMAGES  \n **THIS SHOULD, WE HOPE, IN THE WORKS --^**  \n  \n## Operating System Requests\n\nThe following variants of existing builds have been requested, and will be added at a future date, when time allows (or someone submits a pull request).\n  \n[Fedora Rawhide](https://fedoraproject.org/wiki/Releases/Rawhide)  \n[OpenSUSE Tumbleweed](https://software.opensuse.org/distributions/tumbleweed)  \n  \nThis operating system has been requested, but at present doesn't apppear to have sufficient interest. If that changes, it could be easily added by adapting the existing Debian/Ubuntu configurations.  \n\n[Pop\\!\\_OS](https://pop.system76.com/)  \n  \nThe following operating systems have been requested by a member of the Robox community, but require a volunteer to generate a configuration, before they can be incorporated into the workflow.\n\n[Haiku](https://www.haiku-os.org/get-haiku/)  \n[Minix](https://www.minix3.org/)  \n[Parrot](https://www.parrotsec.org/)  \n[SmartOS](https://www.joyent.com/smartos)\n\n## Operating System Candidates\n\nThe following operating systems are potential candidates. They may be added in the future. \n\nManjaro  \nMint  \nOpenSolaris  \nSlackware  \n\nMacOS  \nDarwin  \n  \nReactOS  \nWindows  \n\nTails  \nKali  \n\n## Adding Boxes\n\nSubmit a pull request with your favorite distro.  \n\n## Building a Box\n\nTo build a Robox locally, run the following:  \n\n```bash\ngit clone https://github.com/lavabit/robox \u0026\u0026 cd robox\n./robox.sh box generic-BOX-PROVIDER\n```\n\nYou will to replace the BOX and PROVIDER placeholders in the example above.  \n  \nReplace `BOX` with one of the these values:  `[alma8|alma9|alpine35|alpine36|alpine37|alpine38|alpine39|alpine310|alpine311|alpine312|alpine313|alpine314|alpine315|alpine316|alpine317|arch|centos6|centos7|centos8|centos8s|centos9s|debian8|debian9|debian10|debian11|devuan1|devuan2|devuan3|devuan4|dragonflybsd5|dragonflybsd6|fedora25|fedora26|fedora27|fedora28|fedora29|fedora30|fedora31|fedora32|fedora33|fedora34|fedora35|fedora36|fedora37|freebsd11|freebsd12|freebsd13|gentoo|hardenedbsd11|hardenedbsd12|hardenedbsd13|netbsd8|netbsd9|openbsd6|openbsd7|opensuse15|opensuse42|oracle7|oracle8|oracle8|rhel6|rhel7|rhel8|rocky8|rocky9|ubuntu1604|ubuntu1610|ubuntu1704|ubuntu1710|ubuntu1804|ubuntu1810|ubuntu1904|ubuntu1910|ubuntu2004|ubuntu2010|ubuntu2104|ubuntu2110|ubuntu2204|ubuntu2210|ubuntu2304]`\n  \nAnd replace `PROVIDER` with one of these values: `[docker|hyperv|libvirt|parallels|virtualbox|vmware]`.  \n  \nA configuration for all of the distros is available for every provider, EXCEPT Docker. At present we have only adapted a subset of the configurations to build Docker/Podman images.  \n\nThe above presumes you already have [`packer`](https://www.packer.io/) and the hypervisor for the targeted provider installed. The `res/providers/providers.sh` script may provide guidance on the steps required to setup a Linux build host for VMWare/Virtualbox/Docker/libvirt. Please note that this scripts was written for RHEL/CentOS 7. You will then need to adapt the package names and CLI commands to your environment.  \n  \n## VirtualBox Disks\n\nEnabling the discard/nonrotational options with our VirtualBox configs, appears to improve performance, but only on build robots equipped with SSDs or NVMe drives, and then only if the virtual machine is configured with VDI virtual disks. This combination allows guests to utilize discard/unmap/trim. However, if a virtual machine is deployed onto traditional magnetic hard disks with discard/nonrotational enabled, performance will drop significantly ( 1/50th of normal in some cases ). \n\nFurthermore, while Packer appears to use VDI disk image files, when the virtual machine is exported and converted into a Vagrant box, the disk gets converted into the VMDK format. The discard/nonrotational options are preserved, and the result is that when the base box is deployed, it results in a virtual machine with the discard/nonrotational options enabled with an unsupported VMDK virtual disk.\n\nAs a result, we are currently not using the following options in our Packer config files. \n```\n\"hard_drive_discard\": true,\n\"hard_drive_nonrotational\" : true,\n```\nA handful of relevant messages from VirtualBox when a Vagrant box is deployed with this issue.\n```\nFile system of 'generic-debian8-virtualbox/generic-debian8-virtualbox_default_1649216430418_60259/generic-debian8-virtualbox-disk001.vmdk' is xfs\n  Format              \u003cstring\u003e  = \"VMDK\" (cb=5)\n  Path                \u003cstring\u003e  = \"generic-debian8-virtualbox/generic-debian8-virtualbox_default_1649216430418_60259/generic-debian8-virtualbox-disk001.vmdk\" (cb=154)\nVMSetError: /home/vbox/vbox-5.2.44/src/VBox/Storage/VD.cpp(5662) int VDOpen(PVDISK, const char*, const char*, unsigned int, PVDINTERFACE); rc=VERR_VD_DISCARD_NOT_SUPPORTED\nMSetError: VD: Backend 'VMDK' does not support discard\nAIOMgr: Endpoint for file 'generic-debian8-virtualbox/generic-debian8-virtualbox_default_1649216430418_60259/generic-debian8-virtualbox-disk001.vmdk' (flags 000c0723) created successfully\nAIOMgr: generic-debian8-virtualbox/generic-debian8-virtualbox_default_1649216430418_60259/generic-debian8-virtualbox-disk001.vmdk\n```\nThe performance degradation leads to write timeouts, and the logs become filled with messages like the following.\n```\nVD#0: Write request was active for 36 seconds\nVD#0: Aborted write (524288 bytes left) returned rc=VERR_PDM_MEDIAEX_IOREQ_CANCELED\nAHCI#0P0: Canceled write at offset 82372182016 (524288 bytes left) returned rc=VERR_PDM_MEDIAEX_IOREQ_CANCELED\n```\n\n## Donate\n\nThe roboxes are maintained by volunteers, and provided for free. As such we rely on donations to cover the cost of the hardware, and bandwidth. If you find this project useful, and would like to see it grow, please help by making a Bitcoin, Bitcoin Cash, Monero or [monetary donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=99THGS6F4HGLU\u0026source=url). If you represent a public cloud, and would like to provide infrastructure support, please contact us directly, or open a ticket.\n\nMonero\n8B3BsNGvpT3SAkMCa672FaCjRfouqnwtxMKiZrMx27ry1KA7aNy5J4kWuJBBRfwzsKZrTvud2wrLH2uvaDBdBw9cSrVRzxC\n\nBitcoin\n3NKSTPEeTGmuA95CGGqnyi3zPASSApLZbE\n\nBitcoin Cash\nqqxyedtn68jg84w4mkd3vsw2nu6pgkydnudza0ed0m\n\n[Roboxes](https://roboxes.org) is maintained by Ladar Levison, with infrastructure provided by [Lavabit LLC](https://lavabit.com).\n","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=99THGS6F4HGLU\u0026source=url"],"categories":["vagrant","Shell","bash"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flavabit%2Frobox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flavabit%2Frobox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flavabit%2Frobox/lists"}