Nerves.Runtime
Nerves.Runtime is an optional component of Nerves but it's really handy and has a small footprint. Here are some of its features:
- A custom shell for debugging and running commands in a
bashshell like environment - A small Linux kernel
ueventapplication for capturing hardware change events and more - More to come...
The Nerves Runtime Shell
Nerves devices typically only expose an Elixir or Erlang shell prompt. While
this is handy, so tasks are quicker to run in a more bash shell-like
environment. The Nerves runtime shell provides a limited approximation to this
that can be run without leaving the Erlang runtime. Here's an example run:
iex(1)> [Ctrl+G]
User switch command
--> s sh
--> j
1 {erlang,apply,[#Fun<Elixir.IEx.CLI.1.112225073>,[]]}
2* {sh,start,[]}
--> c
Nerves Interactive Command Shell
Type Ctrl+G to exit the shell and return to Erlang job control.
This is not a normal shell, so try not to type Ctrl+C.
/srv/erlang[1]>
There are a few caveats to using this shell right now, so you'll have to be careful when you use it:
Ctrl+C Ctrl+Cexits the Erlang VM and will reboot or hang your system depending on howerlinitis configured.- Because of the
Ctrl+Ccaveat, you can't easily break out of long running programs. As a workaround, start another shell usingCtrl+Gandkillthe offending program. - Commands are run asynchronously. This is unexpected if you're used to a regular shell. For most commands, it's harmless. One side effect is that if a command changes the current directory, it could be that the prompt shows the wrong path.
Installation
The package can be installed
by adding nerves_runtime to your list of dependencies in mix.exs:
def deps do
[{:nerves_runtime, "~> 0.2.0"}]
end
Docs can be found at https://hexdocs.pm/nerves_runtime.