OS X 下给 Raspberry Pi 安装 XBian

搞了个 Raspberry Pi 来用用 XBMC 和当个下载机。最简单的安装就是直接下载 NOOBS ,解压丢进格式化过的 SD 卡,然后插入 Rasberry Pi 接上电源启动,当然显示器、键盘鼠标啥的也要接上,然后就进入安装了。

最开始我也是用 NOOBS 装的 Raspbian,不过 Raspbian 编译 XBMC 太麻烦,对比了 OpenELEC,RaspBMC 和 XBian,还是决定安装 XBian 。我没用 OS X 的 installer 安装,据说下载太慢,下面说说用终端安装的方法:

使用BerryBoot使树莓派支持多系统启动

如果你想花最短的时间更换系统卡并且拥有更多的时间在你的树莓派的使用上, 安装BerryBoot的multi-boot manager可使在一张SD卡上实现多系统的选择启动。 以下我们将详细讲解BerryBoot是如何实现树莓派多系统的:

我们为什么要这样做?

BerryBoot是一款基于树莓派启动的启动管理工具, 它最大的优势是可以在不通过SD卡的前提下在多个系统中选择启动, 你既可以将系统存放在卡上,也可以, 如果你需要更多空间的话,将系统运行在外接的硬盘上并配置BerryBoot只将SD卡作为一个启动器。

同时BerryBoot配置工具使得下载适应树莓派的稳定linux系统更容易。目前BerryBoot支持的树莓派linux系统版本有:

BerryWebserver (Webserver Bundle: Lighttpd + PHP + SQLITE)

Berry Terminal (LTSP/Edubuntu Thinclient)

Raspbian (Debian Wheezy)

MemTester

OpenElec (Media Center Software)

Puppy Linux

RaspRazor (Unofficial Rasbian branch, lots of programming tools)

Sugar (The One-Laptop-Per-Child OS)

除了上述的这些版本以外, 你也可以添加的自制的linux版本到BerryBoot中,后文会详细介绍如何手动添加新的系统。

总之,如果你不想用不同的SD卡存储不同的树莓派系统,并且省掉更换不同系统SD卡的繁琐, BerryBoot绝对是一个一款能帮你解决掉这些问题的理想工具。

我们需要准备什么?

你需要一个树莓派, 相对应的外接设备, 一个可用的网络. 我们建议读者先阅读关于初识树莓派的文章,确保读者已经具备所有关于树莓派的基础知识(比如如何给树莓派供电和基础的配置)。

除了上述需要的硬件配置以外, 读者同时需要下载BerryBoot的安装文件:

BerryBoot Installer

从下载的.zip的压缩文件中解压并安装BerryBoot到经过FAT格式格式化过的SD卡中。

配置BerryBoot

当你下载好安装文件并且解压到你的SD卡后, 将SD卡插入树莓派中并接上电源启动它, 你会看到短暂的启动过程并最终显示以下的配置界面:

花些时间调整屏幕显示(看屏幕上方和下方是否出现绿色的校准条来选择是否选择或者撤销overscan选项)。 设置你的网络连接类型(network connection)为有线(wired)或者无线(Wi-Fi)。最后设置的你的键盘布局。

如果你选择了无线连接你的网络,安装程序会让你选择连接的无线网络名称和相应的密码。

注意:这里的无线网络连接设置只适用于BerryBoot安装过程,一旦你安装了树莓派的linux系统比如Raspbian,你需要在Raspbian再次设置你的无线网络连接。

当你链接上网络后,安装程序会让你选择安装树莓派系统的位置(SD卡或是外接的硬盘):

这里默认的是SD卡, 如果你想将树莓派的系统安装在外接的闪存或是硬盘上,现在就连接上它们。一旦显示出你连接上的闪存或者硬盘,选择并点格式化键(Format), 注意这里格式化会清楚掉所有闪存或者硬盘上的内容,请格式化前自行备份。

大约一分钟后, 会弹出一个添加系统(Add OS)的窗口中, 这里你可以选择安装到BerryBoot卡上的第一个系统。 这里我们以安装Raspbian为例, 点击确认(OK)进行安装。

一旦Raspbian的安装镜像文件下载并安装完成后, BerryBoot的Menu Editor就会弹出并显示以下内容:

在这个menu editor中,你可以进行多项操作。你可以添加(Add OS)新的系统或者移除(Delete)现有的系统, 同样的你可以选择默认的启动系统(Make default)。你可以编辑(Edit)每一个单独系统的属性比如更改名称或是内存的位置。你可以在这里复制(Clone)系统(比如在Raspbian上运行两个不同的项目)。有也可以备份(Backup)整个SD卡或者外接存储设备中的单独的某一个系统。

除了上述的这些外,你可以进行更高级的配置(在窗口上面最后的小箭头处), 比如BerryBoot的密码设置, 修复坏损的文件系统, 转换使用命令行窗口进行设置。

上面的这些都是BerryBoot很好的功能, 但是我们这里的重点是添加一个新的系统。点击添加系统(Add OS), 屏幕转回到刚刚的添加系统(Add OS)的窗口中, 现在我们要再添加OpenELEC到我们的BerryBoot系统启动项中。选择并点击确认。

当第二个系统安装完毕后,你就可以在Menu Editor中选择默认的启动系统了, 这里我们选择Raspbian做为我们默认的启动系统:

到这,我们就可以退出Menu Editor开始我们的多系统选择启动了。 点击退出(Exit)按钮。一会就会弹出以下的BerryBoot menu窗口

如果在之前的配置中你已经选择了默认的启动系统, 这里会在倒数后自动启动它。如果你没有选择默认的系统, BerryBoot会停在这里窗口直到用户做出选择要启动的系统。默认的倒数时间长度为10秒。

如果你想更改默认的倒数时间长度的话可以在这里点击右下角的编辑菜单(Edit menu)按钮, BerryBoot会转向menu editor窗口。点击右上角的高级配置(Advanced Configuration)按钮,编辑uEnv.txt文件中‘bootmenutimeout’的值。

无论你是否改变这个值,BerryBoot menu总会你在你启动,关闭或是重启树莓派时最先看到。你可以通过键盘,鼠标来选择要启动的系统版本。如果你将树莓派通过HDMI线连上家中的支持

CEC(Consumer Electronics Control)的媒体中心的电视,你也要可以通过对应的遥控器来选择你想启动的系统项。

手动添加系统到BerryBoot系统启动项中

当你只是使用那些BerryBoot中自带的镜像linux系统版本时,比如Raspbian和Puppy Linux, 安装只是简单的点击和选择确认。如果你想试一些非常规的新系统可能就会变得有些棘手。

在BerryBoot中添加新的linux系统版本时,需要先用SquashFS编译这个linux系统并获得它的镜像文件.IMG。你可以通过以下的三种方式获得这个文件。

首先,最简单的方法就是从BerryBoot官网中获取那些没有正式添加到安装文件中的linux系统镜像文件, 这些文件可以从这里获得,这些镜像文件可以直接使用不需要通过SquashFS的编译。

其次,在BerryBoot官网上没有的但是在树莓派的官网上提供的linux系统镜像文件,同样的可以不通过SquashFS的编译直接使用添加到BerryBoot中。

最后,例如像Raspbmc这样的需要用户使用安装工具直接下载到树莓派上并在树莓派上进行安装的linux版本。你需要创建一个SD卡的镜像文件来添加到BerryBoot中,如何创建一个卡的镜像文件点击这里。

对于.IMG格式的文件添加(无论是下载的还是创建的),你都需要通过linux系统来使用SquashFS先进行编译。因为SquashFS只有在linux的系统下运行最为稳定,所以这里我们也只介绍在linux系统下如何使用SquashFS。

如果你现在用的linux版本中没有安装SquashFS, 在terminal里面输入以下指令下载并安装SquashFS:

sudo apt-get install squashfs-tools

将含有镜像文件的SD卡或者USB链接到运行linux的主机上进行.IMG格式文件转换。这里我们将用NewBerryBoot.img为例,在命令行输入一下指令:

sudo kpartx -av NewBerryBoot.img

kpartx命令用于创建分区表的设备映射, -av 用于添加映射和映射的详细内容,这样便于我们查阅输出。 这时的输出类似如下的内容:

add map loop0p1 (252:5): 0 117187 linear /dev/loop0 1 add map loop0p2 (252:6): 0 3493888 linear /dev/loop0 118784

第二个也是最大的一个分区 loopOp2就是我们想要的存有linux系统的分区, 在你的镜像文件中分区大小可能会有些不同(比如最大的一个是loop3p2),记录下最大的分区名字,输入如下的指令:

sudo mount /dev/mapper/loop0p2 /mnt sudo sed -i ‘s/^\/dev\/mmcblk/#/g’ /mnt/etc/fstab sudo mksquashfs /mnt converted_image_for_berryboot.img -comp lzo -e lib/modules sudo umount /mnt sudo kpartx -d NewBerryBoot.img

上述一系列的指令使得我们想要系统分区被挂载,并且从原分区中提取出文件系统表格,接着使用SquashFS来重建这个分区的.IMG文件(去掉不同系统文件共享文件lib/modules),最后撤销挂载的分区并且删除相应的映射。

这之后,我们可以回到温馨可爱的BerryBoot的图形界面了。无论你是下载的已经处理好的.IMG文件还是自己创建的独有的.IMG文件,现在是时候将它们添加到BerryBoot中了。

连接上存有新建的.IMG文件的存储设备(若是SD卡,请连接相应的读卡器)到树莓派上或是连接到USB扩展器上。 启动含有BerryBoot SD卡的树莓派,在启动选择菜单里面,选择编辑(Edit)启动BerryBoot的menu editor。

如图所示,就可以添加你新建的.IMG文件了。

选择Copy OS from USB stick(从USB设备中拷贝系统), 随后.IMG文件选择窗口就会弹出:

你可能会注意到在最底层文件类型的选择上会 有些奇怪的扩展名(.img128, .img192)。当生成添加到BerryBoot的镜像文件的时候你可以选择文件的扩展名为128/192/224/240来指示BerryBoot你想要分配哪块内存区域给这个新添加的系统。如果你没有特意指定也不用担心,你同样可以在BerryBoot的menu editor的Edit选项里面进行内存分布的设定。

当你选择并打开你新建的.IMG文件后就可以暂时放松一下了,.IMG文件在这个时候会被解包并安装。这之后,你会在BerryBoot的menu editor中看到新添加的系统:

成功!现在我们快速的回顾一下这个章节,三种获取.IMG文件并放入BerryBoot的方法(从最稳定的版本到相对不太稳定的版本):从BerryBoot的官网上获取的但是不在BerryBoot安装包中的linux版本,通过SquashFS处理现有.IMG文件,或是先建立SD卡中现有的系统的.IMG文件,再经过SquashFS处理。当然越是不太被官网认定的版本越容易出现棘手的问题。我们的项目开发一员Sam Nazarko就遇到过一个问题,在使用SquashFS重建Raspbmc的.IMG文时系统就崩溃了。所以读者在自己试验的同时也要留个心(无论结果怎么都请留个言,这将对后面想要尝试应用BerryBoot的同学有很大的帮助)

本文由 极客范 – tien 翻译自 Jason Fitzpatrick。

Linux命令行烧录树莓派镜像至SD卡

首先下载镜像压缩包

树莓派资源下载

验证压缩包的未被串改

sha1sum 2013-09-25-wheezy-raspbian.zip

对此命令的输出结果和官网给出的SHA-1 Checksum进行比对,如果一致,则说明数据未被串改或损坏,否则需要重新下载。

解压缩镜像。

unzip 2013-09-25-wheezy-raspbian.zip

查找SD卡

运行df -h命令查看当前哪些设备已经挂载,结果如下图第一次显示。只执行 df 命令也是可以的,但是-h选项给出的分区大小更加直观易读,h是human的缩写。插入SD卡后,再次运行 df -h,找出两次运行区别。如下图:我们插入的SD卡设备名称就是/dev/sdb它包含两个分区,分别是/dev/sdb1 和 /dev/sdb2。注意下面我们要在“设备”中写入镜像,而不是只向某个分区写入。

为了防止在写入镜像的时候有其他读取或写入,我们需要卸载设备。两个分区都要卸载。

umount /dev/sdb1 umount /dev/sdb2

使用dd命令写入镜像至SD卡

bs代表一次写入多大的块,是blocksize的缩写,4M一般都没问题,如果不行,试试改成1M,if参数为下载的镜像的路径(应该是input file缩写),of后参数为设备地址(应该是output file的缩写,linux上一切都是文件)千万不要写错这里的参数,否这你可能丢失硬盘所有数据。

因为dd命令没有进度显示,所以看上去可能感觉假死了,此时只要等待几分钟即可,泡壶茶,刷个微博吧。

sudo dd bs=4M if=2013-09-25-wheezy-raspbian.img of=/dev/sdb

当然如果你非常想看到此时的拷贝进度也是可以的。打开另一个命令行执行

sudo pkill -USR1 -n -x dd

移除SD卡,插入树莓派,爱丽丝的奇幻世界从此开启~

参考:

注意:

用树莓派做个专属iBeacon基站

上周,苹果在北美全部254家Apple Store均部署了iBeacon基站。当消费者手持升级了iOS 7并支持低功耗蓝牙(Bluetooth 4.0)的设备走进店铺时,即可收到商店自动推送的消息提示。而现在,得益于硬件运动的发展,我们完全可以用Raspberry Pi自制一个iBeacon基站。

iBeacon是什么?

在今年WWDC上,苹果正式发布了iOS 7,而iBeacon也是该系统的重要特性之一。 种种迹象 表明,iBeacon技术将是苹果未来的重要发展对象之一。

iBeacon是基于Bluetooth 4.0LE协议开发的技术。在店内部署iBeacon基站后,它可以定位用户在室内的位置,据称精度可以厘米计算。这意味着,当用户走到商店内不同位置的时候,商店可以推送不同的产品信息或打折信息。

尽管是新技术,但是在苹果推出它的同时,便已经有相应产品了。新创公司 Estimote已经开始为商家提供iBeacon基站产品,它的售价为99美元。

美国百货商店Macy’s已经部署了iBeacon基站。 据称 ,它会向安装有专为其设计的应用发送大约31字节的数据,其中包含了128位的UUID,可以通过两个16位的识别码来确定用户所在的门店,以及在店内的区域。通过这样的技术,iPhone 5S的用户甚至可以通过扫描指纹直接购买商品。

用Raspberry Pi制作iBeacon基站

近日,一位叫Tony Smith的创客用一个Raspberry Pi和一个蓝牙适配器制作了一个iBeacon基站,它还配备了Linux Bluetooth软件栈、BlueZ和多种USB开发包。正如之前所说,iBeacon技术是基于低功耗蓝牙开发的,所以它同样可以支持Android 4.3以上的设备。

苹果在iOS的Corelocation架构层中定义了一个CLLocationManager类,用以检测在iBeacon基站所覆盖的区域内(iBeacon的信息传输距离最远可达50m左右)的移动设备,即监控触发事件。(详细的软硬件开发过程,可以参考 Tony Smith的教程 。)

树莓派新里程碑:销量突破 200 万台

Raspberry Pi 被制造出100万台就在前不久,Raspberry Pi 基金会在今天宣布他们的单板机微电脑的销量已经 突破 200 万台 。

这是个相当瞩目的成绩,尤其是他们最早的 100 万台销量足足花费了一年多才实现。但这次不同,很多 Raspberry Pi 爱好者在此前就已经注意到,和去年相比,Raspberry Pi 今年的销售在明显加快。

Raspberry Pi 创始人丽兹·阿普顿(Liz Upton)在 博客中写道 ,去年销量突破 100 万台时,团队预计要到 2014 年一月或者稍晚后才能达到 200 万台销量。当得知今年 11 月时销量已经突破 200 万时,他们感到十分震惊。

这距离他们宣布卖出175 万台Raspberry Pi 才过去不到两个月。一年前,他们在中国工厂生产出最初的 2000 台 Raspberry Pi 单板机电脑;一年后,他们的工厂已经大部分迁到英国。从今年开始,Raspberry Pi 的两个制造伙伴欧时电子(RS Components)和派睿电子(Premier Farnell)已经陆续将生产线迁到南威尔士的索尼工厂,过去几个月,所有出货的 Raspberry Pi 单板机电脑全部由英国工厂生产。

谈到如何向全球推广 Raspberry Pi 时,创始人埃本·阿普顿(Eben Upton)对TechCrunch 说道 ,分销商们已经在南非建立仓库,未来他们可以更方便地向更多国家输送产品。

Kano kit,基于树莓派的PC产品

Raspberry Pi并不让Maker们感到陌生,估计就在你看这句话的时候,已经有不少Maker用Raspberry Pi在家完成了自己的创作。不过最初Eben Upton的团队制作Pi的初衷是让孩子们能拥有一台小型廉价的电脑,以此改变计算机教学的发展。

近日一款新的硬件产品Kano朝着与Raspberry Pi相同的方向迈出了第一步,它以99美元的价格开始在 Kickstarter 上进行众筹,预计于2014年夏天出货。

Kano是一款只有信用卡大小的,基于Raspberry Pi的电脑,任何人甚至是孩子都可以用Kano工具包制作自己的电脑。Kano可以运行GNU、Linux,并包含了一台完整电脑所需的所有外设和软件。初次启动时,Kano会运行一个名为“Kano OS”的定制版Debian Linux,它专为教育设计,并配有图形化编程语言Kano Blocks。

相对于直接利用Raspberry Pi进行编程开发来说,使用Kano会更加简单。Kano Blocks可以生成JavaScript或Python代码,而且对于好奇的开发者来说,也无需停留于block level,可以进入代码层,直接修改底层代码。更重要的是,使用Kano Blocks编程的过程更像是在玩游戏。Kano团队一整个夏天都在与一群孩子一起测试产品。“我们与孩子们坐在一起,设计了这套产品”Kano的联合创始人Alex Klein说,“对于我们来说Lego是我们学习的对象。其中的理念是让产品让人有一种循序渐进、富有互动乐趣的体验”。

“人们对电脑都有一窥其究竟的潜在欲望,任何年龄的人皆是如此”,谈到初衷时,Alex Klein解释道,“我认为这也是为什么那么多人都买了Raspberry Pi。但问题是,那些人其实并不是Raspberry Pi最初所设定的用户群体。他们都是工程师、Maker、hacker,这些人早已谙熟此道。我们希望让更多人了解这些技术”。

树莓派将免费安装 Mathematica 和 Wolfram Language

为了帮助有志程序开发的用户更方便地学习代码编写,著名软件公司 Wolfram Research(WR)在今天宣布和硬件制造商 Raspberry Pi 达成合作,后者生产的微电脑将预装 WA 的 Mathematica 计算软件以及早期版本的 Wolfram Language。

提供消息的 The Verge 说道,尽管 Mathematica 的授权费用异常昂贵,但 WR 还是愿意在 Raspberry Pi 上投入成本。Raspberry Pi 在不久前宣布他们的微电脑销量突破 200 万台,未来这款价值 25 美元的微电脑将带着 WR 的软件销往各地。

一手创建 WR 的科学家史蒂芬·沃尔夫拉姆(Stephen Wolfram)介绍说,上一次 Mathematica 与电脑捆绑销售的经历还得追溯到 1988 年史蒂夫·乔布斯发明的 NeXT,这次与 Raspberry Pi 的合作让他想起了尘封已久的往事。不过本次合作和以往不同,购买 Raspberry Pi 的个人用户将免费使用这两款软件,企业用户则要支付一定的授权费用。

“Wolfram Language 是编程语言的首选。”上周 Wolfram Language 发布时,沃尔夫拉姆骄傲地说道 。Wolfram Language 基于 Wolfram Alpha,即便在处理类似自然语言输入等复杂任务时,也可以保持简单轻灵。

已经拥有 Raspberry Pi 的用户今天就可以下载这两款软件。沃尔夫拉姆说,此次合作也将是新版软件的预演,Mathematica 已经推出 25 年了,但 Wolfram language 还在不断开发中。或许这次与 Raspberry Pi 的“亲密接触”能让它变得更加智能。

树莓派上安装mono和jexus运行ASP.NET程序

前面有过在树莓派下安装.NET环境的方法。下面通过进一步安装Web服务程序jexus来实现在树莓派上跑ASP.NET程序。

1、树莓派上安装mono环境,使其支持asp.net

本人使用9-25的系统,据说稳定

sudo apt-get update sudo apt-get upgrade

pi上直接源码编译时通不过的,在make的时候失败。据报的错误来查是gcc的版本问题,毕竟pi是arm系的处理器,好在有人已经把armv6的编译出来了,我们只需要下载解压缩就可以了。

用debian的apt-get install的不行,不支持硬浮点运算。

整体的详细安装步骤请参照:https://shumeipai.nxez.com/2013/11/02/raspberry-pi-install-the-dotnet-environment.html

由于我们只需要安装支持asp.net的环境搭建的仅仅是webserver,所以大家只需看其中的第一步,有兴趣的童鞋当然是看完了。

简单测试是否支持浮点运算方法,mono安装完成后,输入:csharp命令,(注,最好在putty下,选择utf8编码ssh secure shell会乱码,怎么处理先不管了),继续输入,(上张图吧还是)

Console.WriteLine(DateTime.Now);

看输出结果是不是正常的时间格式,时间是否和你linux终端下输入date命令显示的时间一致,正常如下图

一定要注意大小写,退出命令是quit;

看mono的版本信息:mono -V(大写),一定要有hardfp-abi

如果仅仅是下面的,那估计你要重新安装了

2、安装jexus5.4.3,安装for pi的补丁

安装jexus的时候如果是pi的话初次尝试,建议就下5.4.3的包吧,如果是其他Linux系统建议直接下最新的jexus5.4.5,新版本可以减少一些不必要的问题

当然了,我们是在pi上安装,初次安装先试试5.4.3吧,想尝试新版本的童鞋,强烈测试下,结果可以分享出来。

wget -c http://www.linuxdot.net/down/jexus-5.4.3.tar.gz tar zxvf jexus-5.4.3.tar.gz cd jexus-5.4.3

sudo ./install

然后下载补丁,http://pan.baidu.com/s/1eS5AE

linux的rar不是免费的,建议下载后解压将exe用SSH Secure Shell(自行搜索)传过去。

一、下载并安装jexus-5.4.2或5.4.3或5.4.3.1。

二、如果jexus已经在工作,那么,请停止它的运行。

三、把本jwsHttpd.exe复制到树莓派上的jexus工作文件夹(一般是/usr/jexus)中,覆盖旧文件。

四、在树莓派的jexus文件夹中,以管理员运行: sudo ./jws regsvr

五、启动jexus。

现在启动jws吧(开机启动,将jws命令加入$PATH中等等自行搜索吧)

curl localhost/info

如果看到welcome之类的,说明ok了

netstat -lntp

pi是不是自带了个httpd呢Apache,不想删除的可以用下面的命令停止或者修改jexus的监听端口

sudo apt-get remove apache2

3、将asp.net程序发布到web上(本人采用的是.netframework2.0的asp.net程序)

查看webroot的路径

ssh Secure Shell

index.html删了吧

传上去试试看

修改/usr/jexus/siteconf目录下的default文件,当然你还可以建立新的配置文件(具体请参考linuxdot.net社区)

见证奇迹的时刻到了

上个图:

C#原来能做这么多事,爱折腾有兴趣的童鞋并且有pi的童鞋,尝试下吧?

参考:

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=37174

via

Linux上vi(vim)编辑器使用教程

vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。下面vps侦探整理一下vi的使用教程:包含vi的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等,算是一篇比较适合新手学习vi的教程。

vi有3个模式:插入模式、命令模式、低行模式。

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。

命令模式:可以移动光标、删除字符等。

低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。

一、打开文件、保存、关闭文件(vi命令模式下使用)

vi filename //打开filename文件 :w //保存文件 :w vpser.net //保存至vpser.net文件 :q //退出编辑器,如果文件已修改请使用下面的命令 :q! //退出编辑器,且不保存 :wq //退出编辑器,且保存文件

二、插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)

a //在当前光标位置的右边添加文本 i //在当前光标位置的左边添加文本 A //在当前行的末尾位置添加文本 I //在当前行的开始处添加文本(非空字符的行首) O //在当前行的上面新建一行 o //在当前行的下面新建一行 R //替换(覆盖)当前光标位置及后面的若干文本 J //合并光标所在行及下一行为一行(依然在命令模式)

三、移动光标(vi命令模式下使用)

1、使用上下左右方向键

2、命令模式下:h 向左、j 向下 、k 向上、l 向右。

空格键 向右、Backspace 向左、Enter 移动到下一行首、- 移动到上一行首。

四、删除、恢复字符或行(vi命令模式下使用)

x //删除当前字符 nx //删除从光标开始的n个字符 dd //删除当前行 ndd //向下删除当前行在内的n行 u //撤销上一步操作 U //撤销对当前行的所有操作

五、搜索(vi命令模式下使用)

/vpser //向光标下搜索vpser字符串 ?vpser //向光标上搜索vpser字符串 n //向下搜索前一个搜素动作 N //向上搜索前一个搜索动作

六、跳至指定行(vi命令模式下使用)

n+ //向下跳n行 n- //向上跳n行 nG //跳到行号为n的行 G //跳至文件的底部

七、设置行号(vi命令模式下使用)

:set nu //显示行号 :set nonu //取消显示行号

八、复制、粘贴(vi命令模式下使用)

yy //将当前行复制到缓存区,也可以用 “ayy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。 nyy //将当前行向下n行复制到缓冲区,也可以用 “anyy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。 yw //复制从光标开始到词尾的字符。 nyw //复制从光标开始的n个单词。 y^ //复制从光标到行首的内容。 VPS侦探 y$ //复制从光标到行尾的内容。 p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用”ap 进行粘贴。 P //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用”aP 进行粘贴。

九、替换(vi命令模式下使用)

:s/old/new //用new替换行中首次出现的old :s/old/new/g //用new替换行中所有的old :n,m s/old/new/g //用new替换从n到m行里所有的old :%s/old/new/g //用new替换当前文件里所有的old

十、编辑其他文件

:e otherfilename //编辑文件名为otherfilename的文件。

十一、修改文件格式

:set fileformat=unix //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M。

总结:vi(vim)教程虽然有比较多的命令,但是只要勤加练习,相信你会很快的熟练掌握,同时也会给你的工作或学习带来更高的效率。当如果不知道自己处在什么模式时可以按2次Esc键即可回到命令模式,会有最后提醒一点:注意大小写!!!

via

树莓派实现DDNS(PHP计划任务)

之前介绍了DNSPod动态IP解析更新程序,是Python实现的。下面介绍一个PHP实现的脚本,实现了同样的动态域名解析功能。

getMessage(); return null; } } function api_call($api, $data) { if ($api == ” || !is_array($data)) { exit(‘内部错误:参数错误’); } $api = ‘https://dnsapi.cn/’ . $api; $data = array_merge($data, array(‘login_email’ => $this->dnspod_user, ‘login_password’ => $this->dnspod_pwd, ‘format’ => ‘json’, ‘lang’ => ‘cn’, ‘error_on_empty’ => ‘no’)); $result = $this->post_data($api, $data); if (!$result) { exit(‘内部错误:调用失败’); } $results = @json_decode($result, 1); if (!is_array($results)) { exit(‘内部错误:返回错误’); } if ($results[‘status’][‘code’] != 1) { exit($results[‘status’][‘message’]); } return $results; } private function post_data($url, $data) { if ($url == ” || !is_array($data)) { return false; } $ch = @curl_init(); if (!$ch) { exit(‘内部错误:服务器不支持CURL’); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_USERAGENT, ‘LocalDomains_PHP/1.0.0(roy@leadnt.com)’); $result = curl_exec($ch); curl_close($ch); return $result; } public function exec() { $ip = $this->getMyIp(); $domainInfo = $this->api_call(‘domain.info’,array(‘domain’ => $this->domain)); $domainId = $domainInfo[‘domain’][‘id’]; $record = $this->api_call(‘record.list’,array(‘domain_id’=> $domainId,’offset’ =>’0′,’length’ => ‘1’,’sub_domain’ =>$this->sub_domain)); if($record[‘info’][‘record_total’] == 0) { $this->api_call(‘record.create’, array( ‘domain_id’ => $domainId, ‘sub_domain’ => $this->sub_domain, ‘record_type’ => ‘A’, ‘record_line’ => ‘默认’, ‘value’ => $ip, ‘ttl’ => ‘3600’ )); } else { if($record[‘records’][0][‘value’] != $ip) { $this->api_call(‘record.modify’, array( ‘domain_id’ => $domainId, ‘record_id’ => $record[‘records’][0][‘id’], ‘sub_domain’ => $this->sub_domain, ‘record_type’ => ‘A’, ‘record_line’ => ‘默认’, ‘value’ => $ip )); } else { echo ‘指向正常’; } } } } $dns = new Dns(); $dns->exec(); ?>

sudo chmod 777 dnspod.php

加入到定时任务,每个小时执行一次。

vi /etc/crontab

*/55 * * * * root /usr/bin/php /home/pi/dnspod.php >> /home/pi/dnspod.log 2>&1

利用xively监控树莓派的CPU温度

前言

在RaspberryPi搭建博客后发现个问题,就是我如何能够知道RaspberryPi的一些运行信息,比如CPULoad或者温度。初步想法是利用图表形式汇总信息,然后 通过网页图表展示。该方案主要有以下几个关键点:

1.打点,将收集的信息进行打点,通常是将数据写入文件。

2.收集打点数据文件,然后分析出数据内容。

3.根据分析结果,进行画图用于展示。

而针对以上几点来看让Raspberry Pi去打点没什么问题,收集打点数据分析内容,利用分析结果画图展示这个两条如果让RaspberryPi来做的话有些浪费本地资源, 本身Raspberry Pi的资源就有限如CPU。所以如果可以将打点数据上传到第三方的服务中,让第三方分析并且画图展示岂不是更好。所以,参考了一粟同学的方案。 利用xively.com 提供的服务来进行数据收集和描点画图。

xively账户准备

1.注册账户,因为需要邮箱收取激活邮件,所以需要填写正确的邮件地址。(激活邮件到达比较慢,至少我是等了半天才收到激活邮件)

2.添加一个设备

菜单上develop, 然后点击Add Device

提交后会得到Feed ID,Feed URL,API Endpoint相关信息,后续API使用要用。

*设置API的密钥 在API Keys选择添加一个API,设置属性Read,Create,Update,Delete,标签随便命名。

到此为止你的FEED相关需要的东西经创建好了,有空的话可以看下创建成功页面下的一些示范API的连接,支持JAVA,CURL等。这里主要用CURL

xively http API

上面已经创建好了数据的FEED,剩下的就是向这个FEED里提交数据了,这里用的是CURL API详情

1.数据格式(JSON)

{ “datastreams”: [ { “id”: “load”, “current_value”: “9.00” }, { “id”: “temp”, “current_value”: “89.15” } ] }

每条线的点的数据结构是KEY-VALUE形式,其中id代表是这个点属于线的ID(自己定义有意义的名称 如Load),current_value是指这个点的VALUE。 推荐一个在线的JOSN格式化和校验工具 jsoneditoronline

2.提交数据

cosm提供了HTTP的API方式

URL: https://api.xively.com/v2/feeds/${FEED_ID}?timezone=+8 HEAD:需要增加X-ApiKey:${apiKey} putData:上面的JSON数据

浏览器调试

利用chrome的一个插件叫Dev Http Client, 在连接地址里填入API的地址其中feed_id换成你真实的FEED_ID

如:https://api.xively.com/v2/feeds/80400859?timezone=+8

启用HEADERS 添加一个X-ApiKey 的KEY VALUE就是你的APPKEY.

BODY 处填写需要发送的JSON数据,方式选择PUT

点击发送即可,RESPONSE 处会显示200表示y成功 。如下图:

这个时候访问下 https://xively.com/feeds/80400859 这个地址就可以看到刚才PUT过去的数据就OK了代表你的API已经调试OK.

准备SHELL打点脚本

1.cpuLoad 数据收集

cat /proc/loadavg | awk ‘{print $2}’`

2.CPU温度 数据收集

cat /sys/class/thermal/thermal_zone0/temp | awk ‘{print $1/1000}’

通过以上2条命令就可以查看当前的CPU对应的LOADE和温度,下面就需要将收集到的数据组装成cosm的API需要的JSON格式在PUT给cosm就可以了。

下面是脚本的例子:

#!/bin/bash LOCATION=’/home/pi/sysdata’ #生成JSON文件路径,替换成你的路径 API_KEY=’l9eHDf_fLzQx9Qfc8hCVrIan9DOSAKxrN21EOTdyL1IxST0g’ #API使用的KEY,替换成你的KEY FEED_ID=’126908′ #提交数据的FEED,替换成你的FEED_ID #################################################### COSM_URL=https://api.xively.com/v2/feeds/${FEED_ID}?timezone=+8 cpu_load=`cat /proc/loadavg | awk ‘{print $2}’` for i in 1 2 3 4 5; do cpu_t=`cat /sys/class/thermal/thermal_zone0/temp | awk ‘{print $1/1000}’` if [[ “${cpu_t}” =~ ^- ]] then cpu_t=’0.0’ else echo ${cpu_t} break fi done STR=`awk ‘BEGIN{printf “{\”datastreams\”:[ {\”id\”:\”load\”,\”current_value\”:\”%.2f\”}, {\”id\”:\”temp\”,\”current_value\”:\”%.2f\”}] } “,’$cpu_load’,’$cpu_t’}’` echo ${cpu_t} echo ${cpu_load} echo ${STR} echo ${STR} > ${LOCATION}/cosm.json curl -s -v –request PUT –header “X-ApiKey: ${API_KEY}” –data-binary @${LOCATION}/cosm.json ${COSM_URL}

修改脚本中需要替换成你自己的三个变量LOCATION,API_KEY,FEED_ID 之后 赋予改脚本文件 755权限并且运行。

例如:该脚本名称testSys.sh

chmod 755 testSys.sh ./testSys.sh

可以看到以下结果:

将打点脚本添加到CRONTAB中

crontab -e

*/1 * * * * /home/pi/sysdata/testSys.sh>/dev/null 2>&1 & #每一分钟运行一次/home/pi/sysdata/testSys.sh

页面引入图表

在需要暂时图表的地方加入以下代码:

${FEED_ID}:替换成你创建FEED的ID,上个例子中就是126908

${LINE_ID}:替换成你FEED里具体LINE的ID,上个例子中就是load或者temp

${TITLE} :图表展示上的标题,可以自己按照需要命名,比如CPU的LOAD

经过以上步骤就可以将你的PI上的CPU的LOAD还有温度数据采集到放到cosm展示,其他原理类似如统计在线人数等需求都可以用这个xively的服务来实现。

用树莓派搭建Minecraft服务器

我们已经有教程教你怎么在windows/OSX盒子上搭建自己的方块世界Minecraft服务器了,但是如果我们需要更轻量级,更省电,而且要一直在线,朋友们随时可以上来玩的服务器呢?下文介绍了如何用树莓派搭建低能耗的Minecraft服务器,你可以全天不间断地开着,每天的电费大概只要一个便士。

为什么要折腾这个?

这个教程分为两个部分:搭建你自己的Minecraft服务器,以及在树莓派上搭建Minecraft服务器。为什么要自己搭Minecraft服务器呢?因为在自己的服务器上玩Minecraft,不是随便谁都可以做的。你可以让服务器一直运行,当你不玩的时候,你的朋友和家人还可以加入到游戏中,继续建造你的世界。你可以尝试修改游戏参数,制作mod,而且还能让你体验一把GM的感觉,这在公共服务器里可是做不到的,而且也不用花很多钱去租远程主机来做服务器。

对于Minecraft狂热粉丝而言,搭建Minecraft服务器已经很有吸引力了。但是在树莓派上搭则会更有吸引力。小小的树莓派耗电非常少,你可以不间断地开着服务器,一年的电费也不过几块钱而已。只要一个树莓派,一张SD卡,花上一点时间设置一下,就能有一台全天候的Minecraft服务器,月运行费用只不过一条口香糖的价格。

需要的东西

这篇教程需要一些硬件和软件;除了树莓派和SD卡之外的东西都是免费的。

1个树莓派(512MB的版本比较好)

1张4GB的SD卡

教程假设你已经熟悉了树莓派的环境,而且已经安装了Debian衍生的Raspbian。如果你的树莓派还没跑起来,可以参考:HTG树莓派起步教程。

针对Minecraft服务器优化Raspbian

和我们之间分享过的那些可以同时运行的项目不大一样(例如,树莓派的性能足以同时用作天气/电子邮件提醒器和一台谷歌云打印机),对于小小的树莓派而言,运行Minecraft服务器是一项非常耗费系统资源的任务,我们强烈推荐树莓派上只运行这一项任务。Minecraft看上去只有些方块,似乎不太耗资源。但事实上在简单的外表下有着非常复杂游戏核心,要耗费很多处理能力的。

所以我们接下来要修改配置文件以及其他一些设置,针对Minecraft服务器来优化Rasbian。第一步要做的是进入Raspi-Config,进行几项微调,如果你已经安装了Raspi-Config,那么进入终端,输入”sudo raspi-config”来运行。

第一项,也是最重要的一项是进行超频。我们要把处理能力设置得尽可能高一些,以保证Minecraft流畅运行。在Raspi-Config中,选择第七项”超频”。

关于超频,虽然能听到些很吓人的警告,但事实上超频是树莓派基金会官方支持的,自从2012年年末,设置菜单中就有了超频选项。进入超频菜单后,选择“Turbo 1000MhHz”。然后你又会看到这个级别的超频可能出现的危险的提示信息(有可能损坏SD卡,但事实上对硬件不会有危险)。点击OK,等待设备重启。

然后,记得启动后登陆到命令提示符,而不是桌面。选择第三项”启动“,选择”命令提示符“。

返回到Raspi-Config菜单,选择第八项”高级选项“。这里有两个关键的更改,还有一个是可选的。先说关键的更改,选择A3 “内存分配”。

将分配给GPU的内存调到16MB(默认是64MB)。我们的Minecraft服务器运行的时候不需要图形界面,所以分配给GPU的内存有最低值就可以了。

改完GPU内存后,返回到主菜单。选择”高级选项“,然后选择A4 “SSH”。在子菜单中,开启SSH。一般来说没什么理由给这台Pi一直连着显示器和键盘,开启SSH我们就可以从有网络的任何地方来远程控制这台机器了。

最后(这项是可选的),回到“高级选项”菜单,选择A2 ”主机名“。在这里可以把主机名从”raspberrypi“改成一个更适合Minecraft服务器的名字,而且可以根据个人爱好加一些修饰,例如creepertown, minecraft4life或者miner-box。这些都是挺适合minecraft服务器的名字。

Raspbian的设置就这么多。按Tab到主屏幕的底端,选择”Finish”来重启。在重启后,可以用SSH来登录到树莓派的终端,也可以继续用连接到树莓派上的键盘(我们强烈推荐用SSH,因为SSH可以更容易地复制粘贴命令)。如果你之前从来没用过SSH,可以看这篇介绍如何使用PuTTy访问树莓派的文章。

在树莓派上安装Java

Minecraft服务器需要Java运行环境,所以我们应该在刚刚改过配置的树莓派上安装Java。用SSH登录到树莓派上,在命令提示符下输入下面的命令,给java的安装创建一个目录:

sudo mkdir /java/

然后下载最新版的Java。在本文写作时,最新版本是OCT 2013,链接和文件名会显示出版本信息。在你下载的时候,应该在Java下载页检查一下有没有更新版本的Linux ARMv6/7 Java,如果有请使用最新版本。

在命令提示符下输入:

sudo wget –no-check-certificate http://www.java.net/download/jdk8/archive/b111/binaries/jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz

下载完成后,输入:

sudo tar zxvf jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz -C /opt/

豆知识:/opt/这个目录名是早期Unix设计的残留物,/opt/目录是在操作系统安装完成后,用来安装可选(optional)软件的,也就是Unix世界的/Program Files/(译者:个人感觉/Program Files更类似于/usr)。

在文件解压完成后,输入:

sudo /opt/jdk1.8.0/bin/java -version

这个命令会显示Java安装包的版本号,例如:

java version “1.8.0-ea” Java(TM) SE Runtime Environment (build 1.8.0-ea-b111) Java HotSpot(TM) Client VM (build 25.0-b53, mixed mode)

如果没有出现上面的信息(如果你用的是更新版本的安装包,版本号可能有所不同),试试再解压一次。如果你看到了上面的信息,输入下面的命令,删掉不要的东西。

sudo rm jdk-8-ea-b111-linux-arm-vfp-hflt-09_oct_2013.tar.gz

到这里,Java就安装好了,我们可以开始安装Minecraft服务器了!

Minecraft服务器的安装和配置

现在Minecraft服务器安装所需要的基础都有了,到了安装服务器自身的时候了。我们这里使用SpigotMC,一个轻量化而且稳定的Minecraft服务器版本,在树莓派上运行得很好。

首先,用下面的命令下载一份代码:

sudo wget http://ci.md-5.net/job/Spigot/lastSuccessfulBuild/artifact/Spigot-Server/target/spigot.jar

这个链接可以一直用,因为它指向的是Spigot最新的稳定版,如果有任何问题,可以参考SpigotMC的下载页。

下载完成后,输入下面的命令:

sudo /opt/jdk1.8.0/bin/java -Xms256M -Xmx496M -jar /home/pi/spigot.jar nogui

注意:如果你在用256MB的树莓派,把上面的256和496分别改成128和256。

接下来服务器会启动,屏幕上会出现一大堆东西。等上大概3-6分钟,程序会搭建服务器,生成地图。之后的启动会快很多,大概20-30秒。

注意:如果在配置或游戏过程中发生异常(例如新建的服务器里的人物一出来就会死掉),在命令行用“stop”就可以优雅地关掉服务器,然后你就可以重启服务器,找出问题在哪里。

在上面的流程完成后,你就可以坐在电脑旁普通地玩Minecraft,启动程序,选择多人游戏。你会看到自己建的服务器:

如果搜不到自己建的服务器,点击“添加”按钮然后手动输入你的树莓派的地址。

连接到服务器后,你能在服务器状态窗口中看到状态的改变:

从服务器端显示的信息就能知道,我们已经进入游戏了。从客户端来看,也可以确定我们已经正常进入游戏了,但是游戏是在午夜的生存模式下:

出生在死亡之夜,没有武器和房子,游戏是没办法进展的。不用担心,我们接下来要进行一些设置,没有时间继续打骷髅了。另外,如果你一开始就这么玩下去,会发现游戏会很不稳定。我们现在只是为了确定服务器能够启动,能正常运行,并且能连接到客户端。

现在我们已经确认服务器能正常运行,能连接到客户端(虽然还没什么可玩性),可以关掉服务器了。在服务器的控制台里输入”stop”,就可以把服务器关掉。

退回到命令提示符后,输入下面的命令:

sudo nano server.properties

设置文件打开,进行下列更改(可以直接复制粘贴过去,前面两行以#开头的不用复制):

#Minecraft server properties #Thu Oct 17 22:53:51 UTC 2013 generator-settings= #Default is true, toggle to false allow-nether=false level-name=world enable-query=false allow-flight=false server-port=25565 level-type=DEFAULT enable-rcon=false force-gamemode=false level-seed= server-ip= max-build-height=256 spawn-npcs=true white-list=false spawn-animals=true texture-pack= snooper-enabled=true hardcore=false online-mode=true pvp=true difficulty=1 player-idle-timeout=0 gamemode=0 #Default 20; you only need to lower this if you’re running #a public server and worried about loads. max-players=20 spawn-monsters=true #Default is 10, 3-5 ideal for Pi view-distance=5 generate-structures=true spawn-protection=16 motd=A Minecraft Server

用SSH连到树莓派上,在服务器状态窗口中,输入下面的命令,给自己管理员权限(于是就可以在游戏里用更强力的命令,不用退回到服务器状态窗口了)。

op [minecraft里的昵称]

现在游戏变得好一点了,但是在游戏真正变好玩之前,还需要一些设置。我们来装一些插件。

第一个要装的插件是NoSpawnChunks。首先访问NoSpawnChunks的网页,复制最新版的下载链接。本文写作时,最新版是v0.3。

回到命令提示符(树莓派的命令提示符,不是服务器的控制台——如果你的服务器还开着,可以把它关掉了),输入下面的命令:

cd /home/pi/plugins sudo wget http://dev.bukkit.org/media/files/586/974/NoSpawnChunks.jar

然后访问ClearLag插件的页面,复制最新版的下载链接(本文写作时是2.6.0)。在命令提示符下输入下面的命令:

sudo wget http://dev.bukkit.org/media/files/743/213/Clearlag.jar

因为文件没有用.ZIP或者其他类似的东西来压缩,所以做到这一步就够了:插件已经放在插件目录里了。(记得以后如果要下载插件,文件名应该是xxx.jar,如果是压缩文件,就得在插件目录里解压缩)

重启服务器:

sudo /opt/jdk1.8.0/bin/java -Xms256M -Xmx496M -jar /home/pi/spigot.jar nogui

这次启动花费的时间会长一点(大概3-6分钟,比你期望中的30秒会长很多),因为这些插件会影响到世界地图,所以需要一些时间来进行更改。人物出生后,在服务器控制台中输入:

plugins

这个命令会列出当前正在运行的插件。你看到的信息应该是下面这个样子的:

如果插件没有被载入,就要停掉然后重启服务器了。

确认插件已经载入之后,就可以加入游戏了。你会发现游戏变好玩了。另外,你会时不时看到插件的一些信息,表明它们正在活动,就像下面的图中信息一样:

现在,Java装好了,服务器搭建好了,树莓派的配置也改好了,可以开始和朋友一起搭建世界了!

无矿机情况下使用树莓派CPU挖矿

最近挖矿很火热,就利用树莓派cpu挖矿试试,做个蛋疼的实验。虽然知道会惨不忍睹,但也就是玩玩。有兴趣的,可以尝试下。

1.安装好依赖

sudo apt-get update sudo apt-get install libusb-1.0-0-dev libusb-1.0-0 libcurl4-openssl-dev libncurses5-dev libudev-dev

2.安装挖矿工具cgminer

wget http://ck.kolivas.org/apps/cgminer/cgminer-2.11.4.tar.bz2 tar -jxvf /boot/cgminer-2.11.4.tar.bz2 cd cgminer-2.11.4 sudo ./configure –enable-cpumining sudo make

上面操作正确的话,安装好cgminer之后,可能会出现以下内容:

———————————————————————— cgminer 2.11.4 ———————————————————————— Configuration Options Summary: curses.TUI………..: FOUND: -lncurses OpenCL……………: NOT FOUND. GPU mining support DISABLED scrypt……………: Disabled (needs OpenCL) ADL………………: SDK NOT found, GPU monitoring support DISABLED BitForce.FPGAs…….: Disabled Icarus.FPGAs………: Disabled ModMiner.FPGAs…….: Disabled Ztex.FPGAs………..: Disabled CPU Mining………..: Enabled ASM.(for CPU mining).: false Compilation…………: make (or gmake) CPPFLAGS………….: CFLAGS……………: -g -O2 LDFLAGS…………..: -lpthread LDADD…………….: -lcurl -ljansson -lpthread -lm Installation………..: make install (as root if needed, with ‘su’ or ‘sudo’) prefix……………: /usr/local

3.启动cgmienr

进入安装目录,输入以下命令:

./cgminer

根据提示,输入矿池的Url,矿工的Username和Password即可。

在树莓派上安装Google Coder

升级软件包

一个 pacman 命令就可以升级整个系统。花费的时间取决于系统有多老。这个命令会同步非本地(local)软件仓库并升级系统的软件包:

提示:确保make以及gcc软件包已安装,否则后面安装google coder会失败。

安装nodejs

转到/home目录下,从github上获得最新版的google coder.

# git clone git://github.com/googlecreativelab/coder # cd coder/coder-base # npm install # cd coder-apps # ./install_common.sh

运行Google Coder

# cd coder/coder-base # npm start

打开google coder

用chrome浏览器打开: https://RASPIPADDRESS:8081/ (默认地址)

开机自启动google coder

创建/etc/systemd/system/multi-user.target.wants/gcoder.service文件:

[Unit] Description=Google Coder After=network.target [Service] Type=simple WorkingDirectory=/home/YOURUSERNAME/coder/coder-base ExecStart=/bin/npm start Restart=always [Install] WantedBy=multi-user.target

重启生效。