gokrazy, 用于 树莓派 3设备的纯 go

分享于 

5分钟阅读

GitHub

  繁體 雙語
a pure-Go userland for your Raspberry Pi 3 appliances
  • 源代码名称:gokrazy
  • 源代码网址:http://www.github.com/gokrazy/gokrazy
  • gokrazy源代码文档
  • gokrazy源代码下载
  • Git URL:
    git://www.github.com/gokrazy/gokrazy.git
    Git Clone代码到本地:
    git clone http://www.github.com/gokrazy/gokrazy
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/gokrazy/gokrazy
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    Build StatusGo Report Card

    概述

    gokrazy将你的go应用程序打包为 树莓派 3的SD卡映像除了Linux内核和专有 树莓派 bootloader - 只包含go软件。

    它的动机是,@stapelberg 在C 软件和各种问题上花费的时间比他所想的要多。 因此,他只在可行的地方去。

    用法

    安装

    安装 go 1.8 如果你还没有。

    然后,使用 go 工具下载并安装 gokr-packer:

    
    go get -u github.com/gokrazy/tools/cmd/gokr-packer
    
    
    
    

    覆盖 树莓派 3的SD卡

    要分区并覆盖SD卡 /dev/sdb,请使用:

    
    sudo setcap CAP_SYS_ADMIN,CAP_DAC_OVERRIDE=ep ~/go/bin/gokr-packer
    
    
    gokr-packer -overwrite=/dev/sdb github.com/gokrazy/hello
    
    
    
    

    然后,将SD卡放入 树莓派 3并打开电源 ! 一旦 树莓派 3引导( 大约 10秒),你应该能够到达 gokr-packer 打印的URL的gokrazy web接口。

    在引擎盖下 gokr-packer

    。pack将最新的固件内核二进制文件打包到引导文件系统中。

    使用 go install 构建指定的go包,并将它们的所有二进制文件打包到 root 文件系统的/user 目录中。

    。创建了一个最小的gokrazy init程序来管理所有二进制文件( 例如。 当它们退出时重新启动它们)。

    更新你的安装

    要更新 gokrazy,包括固件和内核二进制文件,请使用:

    
    go get -u github.com/gokrazy/tools/cmd/gokr-packer
    
    
    
    

    要更新gokrazy安装( 在 树莓派 3上运行),请使用:

    
    GOKRAZY_UPDATE=http://gokrazy:mysecretpassword@gokrazy/gokr-packer github.com/gokrazy/hello
    
    
    
    
    SD卡内容

    gokrazy使用以下分区表:

    批量目的文件系统
    1100 MB引导( kernel+firmware )FAT16B
    2500 MBroot2 ( gokrazy+apps )FAT16B ( 但请参见问题 #10 )
    3500 MBroot3 ( gokrazy+apps )FAT16B ( 但请参见问题 #10 )
    4剩余永久数据ext4

    在更新时,两个 root 分区使用 alternatingly ( 避免修改当前活动的文件系统)。

    如果你想存储永久数据( 例如。 下次更新时不会覆盖的数据),你需要在最后一个分区上创建一个ext4文件系统。 如果你的SD卡是 /dev/sdb,请使用 mkfs.ext4/dev/sdb4

    文档级自定义项

    更改gokrazy的程序行为

    gokr-packer 为条件编译设置"gokrazy"构建标记

    在执行gokrazy特定的控制器时,你可以找到一个示例提交,它在 : 1 处每星期触发一个主程序逻辑。

    更改初始化行为

    假设要在gokrazy上创建的应用程序存在于存储库 github.com/stapelberg/mediaserver 中,这就是如何使gokrazy转储生成的init源代码。

    
    mkdir -p $(go env GOPATH)/src/github.com/stapelberg/mediaserver/cmd/init
    
    
    gokr-packer 
    
    
     -overwrite_init=$(go env GOPATH)/src/github.com/stapelberg/mediaserver/cmd/init/init.go 
    
    
     github.com/gokrazy/hello
    
    
    
    

    ( 注意包必须产生一个名为"初始化"的二进制文件。

    然后,将 github.com/stapelberg/mediaserver 包编辑为你喜欢的。 完成后,使用你自己的初始化软件包打包映像:

    
    gokr-packer 
    
    
     -init_pkg=github.com/stapelberg/mediaserver/cmd/init 
    
    
     -overwrite=/dev/sdb 
    
    
     github.com/gokrazy/hello
    
    
    
    
    库结构

    相关文章