github.com/tgrennan/goes

GO Embedded System


License
Other
Install
go get github.com/tgrennan/goes

Documentation

When imported by a machine main, package goes provides a monolithic embedded distro for Linux systems,

How is this pronounced?

We prefer "go e-s", aka. "go e[mbedded]-s[ystem]".

How is it monlithic?

The Live CD of most Linux distributions is an assembly of binary packages and base configuration. It may also include a guided self installer that copies its contents to the target along with other network acquired packages. These binary packages are built from interdependent source packages by a maintainer.

With goes, the package assembly, base configuration, and interdependency is handled by go build. The result is a single, thus monolithic, program including all of the commands that the maintainer intends to support on the target machine. This may include a guided self installer that, generally, doesn't require network install of anything else.

Alternatively, goes may run as a self-spawning daemons and interactive sub- commands within a minimal Linux distribution.

What are machines?

Machines are main packages that provide a goes command manifest, configuration, and customization before calling Goes.Main(). See https://github.com/platinasystems/goes-MACHINE for examples.

These machines are available at https://github.com/platinasystems/,

Most machines are built with just go build but some, like the bmc, may also use goes-build to build a properly configured kernel and embed itself as an initrd.

To install,

$ sudo ./goes-MACHINE install
...

To stop and remove,

$ sudo goes uninstall

To enable BASH completion after install,

. /usr/share/bash-completion/completions/goes

To run commands without install,

$ ./goes-MACHINE COMMAND [ARGS]...
...

To see the commands available on the installed MACHINE,

$ goes help

Or,

$ goes
goes> help

Then man any of the listed commands or man cli to see how to use the command line interface.

To debug,

$ gdb ./goes-MACHINE

Each goes/cmd provides apropos, completion, man, and usage. The command may also provide context sensitive help, README, and godoc.

See also errata.


© 2015-2019 Platina Systems, Inc. All rights reserved. Use of this source code is governed by this BSD-style LICENSE.