A RISC-V machine, configured here and running in this tab. Nothing to install, and the only thing the server does is hand over the images.
Kept in this browser's storage, so they are added once.
Releases come through this app's server, which is what makes them readable here at all — GitHub serves release assets with no cross-origin headers. Anywhere else has to allow the read itself; a file already on this machine goes in with add a file.
The library is empty. A machine needs at least a kernel.
The root filesystem comes from the image library above. Extra drives appear to the guest as /dev/pmem1 and on, and init mounts each of them under /mnt.
Memory ranges with no filesystem on them, which the guest reaches as /dev/uio0 and on — running nvram with a label there says which.
The entrypoint runs after init. Left empty, an interactive machine gets a shell and any other halts with nothing to do.
Rarely needed, and exactly what the emulator calls them.
Exactly what create() is called with.
{
"config": {
"ram": {
"length": 134217728
},
"processor": {
"registers": {
"iunrep": 1
}
},
"virtio": [
{
"type": "console"
}
],
"dtb": {
"bootargs": "quiet earlycon=sbi console=hvc1 uio_pdrv_genirq.of_id=generic-uio init=/usr/sbin/cartesi-init",
"init": "echo \"\n .\n / \\\\\n / \\\\\n\\\\---/---\\\\ /----\\\\\n \\\\ X \\\\\n \\\\----/ \\\\---/---\\\\\n \\\\ / CARTESI\n \\\\ / MACHINE\n '\n\"\nexport TERM=xterm-256color\nexport LANG=C.utf8\n",
"entrypoint": "sh -i"
}
},
"runtime": {
"console": {
"output_destination": "to_buffer",
"output_flush_mode": "every_char",
"input_source": "from_buffer",
"tty_cols": 80,
"tty_rows": 25
}
}
}