133 lines
4.6 KiB
HTML
133 lines
4.6 KiB
HTML
<!DOCTYPE html>
|
||
<html> <head>
|
||
<meta name="generator" content="Hugo 0.71.0-DEV" />
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>gokrazy - a pure-Go userland for your Raspberry Pi 3 appliances</title>
|
||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
|
||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||
<link href="/jumbotron-narrow.css" rel="stylesheet">
|
||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400">
|
||
<style type="text/css">
|
||
body {
|
||
font-family: "Open Sans";
|
||
}
|
||
.table-striped>tr:nth-child(odd){
|
||
background-color:red;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container"><div class="header"><nav>
|
||
<ul class="nav nav-pills pull-right">
|
||
|
||
|
||
|
||
<li role="presentation" class="active"><a href="/">Home <span class="sr-only">(current)</span></a></li>
|
||
|
||
|
||
<li role="presentation" class=""><a href="/platforms/">Platforms </a></li>
|
||
|
||
|
||
<li role="presentation" class=""><a href="/quickstart/">Quickstart </a></li>
|
||
|
||
|
||
<li role="presentation" class=""><a href="/showcase/">Showcase </a></li>
|
||
|
||
|
||
<li role="presentation" class=""><a href="https://github.com/gokrazy/gokrazy">Source </a></li>
|
||
|
||
</ul>
|
||
</nav>
|
||
<h3 class="text-muted">gokrazy</h3>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="jumbotron" style="padding: 1em; padding-right: 0; padding-left: 2em; text-align: left">
|
||
<img src="logo.svg" width="200" height="217" align="right" text="gokrazy 'crazy gopher' logo">
|
||
<h2>gokrazy is a pure-Go userland for your Raspberry Pi 3 appliances</h2>
|
||
<p>
|
||
For a long time, we were unhappy with having to care about security
|
||
issues and Linux distribution maintenance on our various Raspberry Pis.
|
||
</p>
|
||
<p>
|
||
Then, we had a crazy idea: what if we got rid of memory-unsafe
|
||
languages and all software we don’t strictly need?
|
||
</p>
|
||
<p>
|
||
Turns out this is feasible. gokrazy is the result.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="row marketing">
|
||
<div class="col-lg-6">
|
||
<h4>Your app(s) + only 4 moving parts</h4>
|
||
<ol style="margin-bottom: 0">
|
||
<li>the <a href="https://github.com/gokrazy/kernel">Linux kernel</a></li>
|
||
<li>the <a href="https://github.com/gokrazy/firmware">Raspberry Pi firmware files</a></li>
|
||
<li>the <a href="https://golang.org/">Go</a> compiler and standard library</li>
|
||
<li>the gokrazy userland</li>
|
||
</ol>
|
||
<p>
|
||
All are updated using the same command.
|
||
</p>
|
||
|
||
<h4>Web status interface</h4>
|
||
<p>
|
||
On a regular Linux distribution, we’d largely use systemctl’s start,
|
||
stop, restart and status verbs to manage our applications. gokrazy
|
||
comes with a <a href="overview.png">convenient web interface</a> for
|
||
seeing process status and stopping/restarting processes.
|
||
</p>
|
||
|
||
<h4>Debugging</h4>
|
||
<p>
|
||
Sometimes, an interactive <code>busybox</code> session or a quick
|
||
<code>tcpdump</code> run are invaluable. <a
|
||
href="https://github.com/gokrazy/breakglass">breakglass</a> allows
|
||
you to temporarily enable SSH/SCP-based authenticated remote code
|
||
execution: scp your statically compiled binary, then run it
|
||
interactively via ssh.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="col-lg-6">
|
||
<h4>Constraints</h4>
|
||
<p>
|
||
Due to no C runtime environment being present, your code must compile
|
||
with the environment variable <code>CGO_ENABLED=0</code>. To
|
||
cross-compile for the Raspberry Pi 3, use <code>GOARCH=arm64</code>.
|
||
If your program still builds, you’re good to go!
|
||
</p>
|
||
|
||
<h4>Network updates</h4>
|
||
<p>
|
||
After building a new gokrazy image on your computer, you can easily
|
||
update an existing gokrazy installation in-place thanks to the A/B
|
||
partitioning scheme we use. Just specify the <code>-update</code>
|
||
flag when building your new image.
|
||
</p>
|
||
|
||
<h4>Minimal state and configuration</h4>
|
||
<p>
|
||
A tiny amount of configuration is built into the images (e.g.
|
||
hostname, password, serial console behavior). In general, we prefer
|
||
auto-configuration (e.g. DHCP) over config files. If you need more
|
||
configurability, you may need to replace some of our programs.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<footer class="footer" style="text-align: center">
|
||
<p>© 2017 gokrazy authors (Michael Stapelberg and contributors)</p>
|
||
</footer>
|
||
</div>
|
||
</body>
|
||
</html>
|
||
</div>
|
||
</body>
|
||
</html>
|