23岁学生基于树莓派设计开源操作系统

谷歌关闭阅读器惹恼了不少人,但这个举动让加拿大一位23岁的大学生雅各布库克进一步起身捍卫自己权利。

他正着手建立一个作业系统,用以取代谷歌或其他云端公司提供的服务这个作业系统有收发电子邮件,聊天,分享档案,虚拟主机等功能。库克称它为ARKOS,所有的核心服务都借着一个信用卡大小的私人伺服器运作。

Raspberry Pi的是一台麻雀虽小五脏俱全的掌上型电脑。

ARKOS使用的Linux作业系统,目前只能在小巧的Raspberry Pi的硬体上运作(往后也可以在的BeagleBoard或PC机等其他平台作业) 。 ARKOS的主要特色是使用创世纪开放码应用程式,它提供网路介面让用户透过家用伺服器作业。由于创世纪是开放原始码,所有档案都分享在GitHub上,用户因此可以自行下载安装ARKOS档案。

但ARKOS目前仍处于研发阶段,库克还不建议用它处理重要事务。

库克是名23岁的大学生,目前利用群众集资的方式筹募资金,以便可以全心投入在ARKOS的研发。他希望在未来24天募集45,000美金,目前已经在100多位支持者的帮助下筹到5645美金。他也创设了一个名为「公民网路计画(该CitizenWeb项目) 」的法人组织,作为直接负责ARKOS研发的窗口。

有感于谷歌随时会结束服务,促成ARKOS的诞生

除了有感于谷歌只要因不符商业利益就随时结束服务外,最近媒体揭露美国国家安全局(NSA)可以轻易取得大量网路资料,也让库克意识到危机而促成ARKOS的诞生。如果国家安全局可以经由谷歌,微软,Facebook,AOL,Twitter的等科技公司取得资料,网路用户还可以相信谁?

用户可以自行决定资料的开放程度和安全性

ARKOS计画完成时会提供用户一台小仪器,用以连接家用乙太网路连接埠使用云端服务,用户也可以选择的Pogoplug替代,只是的Pogoplug仅能处理档案,不能提供虚拟主机,聊天,收发邮件等的网路服务。往后ARKOS提供的服务会在资料保护上做到客制化,由用户决定资料的开放程度。

其他强调安全的开放码作业系统,如最有名的尾巴可以确保用户的桌面环境安全无虞(它也是使用的Linux作业系统,事先安装了安全应用程式,仰赖的Tor进行安全浏览) 。不同的是,达丽斯是桌上型电脑的作业系统,而ARKOS则是伺服器作业系统。

库克说:「 ARKOS当主机,再用达丽斯连结其他电脑,就是个完美的结合。 」

ARKOS的的未来将陆续增加功能

ARKOS – 所以用ARKOS将影片转到家用电视播放没有问题,但出了家门要把ARKOS伺服器当成媒体柜主机使用,速度会变得很慢库克说他会想办法让ARKOS能够藉由DigitalOcean作远端主机,让用户可以在资料中心使用ARKOS伺服器,同时也能够用相同的网路介面管理资料。

库克希望在2014年3月完成稳定的系统雏形,在2015年陆续增加功能。

ARKOS计画的基础源自库克身为Linux的

或许有人觉得库克只是个会写程式码的年轻人而已,但回头想想,即使是Linus Torvalds的( “TO ”编按:知名程式设计大师, Linux内核开发者)也曾经是个孤独的程式设计师罢了。

如何修复树莓派的boot问题

如果在玩转树莓派的过程中,你也出现过SD卡莫名其妙的问题或者树莓派不能启动的问题,下面这提示些或许对你有用。我把自己遇到的类似的问题以及解决方法都记录了下来。

这些问题从树莓派升级修改/boot/config.txt文件,到从备份中恢复SD卡的超级块,再到SD卡上的内容被意外擦除了,导致必须恢复文件等,都有涉及。我们都经历过事情被搞乱时的尴尬,这里实在是有太多事情会被搞砸了。

有关boot的问题

这是我经常用的一种非常有效的参考方法。首先搞清楚是不是修改过什么东西。

你是不是刚刚修改了你的/boot/config.txt 你是不是删除掉了某些重要的文件? 你有没有运行树莓派的升级程序? 你有没有增加新的设备? 你是不是超频太多了? 你是否遇到了KBD提示? 它是不是在关机时显示了一些奇怪的命令例如“device still open for writing?”

应对方法

如果你仅仅修改了config.txt,你应该把它修改回来然后启动时重新一行一行的修改直到发现是哪一行引起的错误。 如果你删除了重要的文件,把他们恢复回来。 如果你运行了树莓派的升级程序但是它没有重新启动,尝试使用默认的/boot/config.txt文件,cma_lwm和cma_hwm这两个选项有时会引起新的固件崩溃。 如果上面的方法都不好使或者你遇到了指示灯闪烁的问题,把/boot.bak/目录下的所有文件拷贝到/boot/目录下来恢复到老的boot文件。(sudo cp -ap /boot.bak/* /boot/) 如果你最近超频了,试试把超频参数降下来。我超频到1100MHz的时候没事儿,但是超频到1200MHz的时候就相对不稳定了。 如果你遇到了kdb提示,检查你的电源确保电压值足够,然后在config.txt中把任何超频或超压的参数降下来,然后(如果上两步没有解决问题)依照前面提到的做法替换boot文件。 如果你的KBD提示错误不能修复,你在开关机时遇到了读/写或输入/输出错误,或者不能找到ext4分区,那么你的SD卡可能已经损坏了,不过不用太担心,仍然有办法恢复你的文件。

首先你应该做的是拷贝一份你的SD卡镜像,把你的SD卡插入Linux系统的电脑,然后使用dd命令来拷贝你的镜像文件,然后你可以在不进一步破坏数据的情况下修复这个镜像文件。你应该做的第一件事儿就是使用备份文件来替换你的SD卡超级块,具体步骤可参考这里。如果还是不起作用,一切都失败了,可以使用自定义的恢复配置文件来救回你的文件,如何操作可以参考这里。

设置树莓派SSH连接因超时闲置断开

用SSH过程连接电脑时,经常遇到长时间不操作而被服务器踢出的情况,常见的提示如:

Write failed: Broken pipe

这是因为如果有一段时间在SSH连接上无数据传输,连接就会断开。解决此问题有两种方法。

方案一:在客户端设置

方法很简单,只需在客户端电脑上编辑(需要root权限)/etc/ssh/ssh_config,并添加如下一行:

ServerAliveInterval 60

此后该系统里的用户连接SSH时,每60秒会发一个KeepAlive请求,避免被踢。

方案二:在服务器端设置

如果有相应的权限,也可以在服务器端设置,即编辑/etc/ssh/sshd_config,并添加:

ClientAliveInterval 60

重启SSH服务器后该项设置会生效。

/etc/init.d/sshd restart

每一个连接到此服务器上的客户端都会受其影响。

树莓派GPIO功能学习

前言

树莓派现在越来越火,网上树莓派的资料也越来越多。树莓派的学习可以分为linux系统学习和linux驱动学习,利用树莓派制作LED流水灯应该算是驱动学习吧。树莓派来自国外,国外嵌入式开源领域具备良好的分享精神,树莓派的各种集成库也层出不穷,下面推荐几个。

python GPIO

链接网址: https://code.google.com/p/raspberry-gpio-python/

简单介绍:树莓派官方资料中推荐,容易上手。但是需要学习python,需要简单阅读一些python的编程图书或者资料,幸好python也是非常容易学习的。

wiringPi

链接网址: http://wiringpi.com/

简单介绍:编程的方法兼容arduino,原作者给出了大量的说明和示例代码,功能强大。严格来说使用wiringPi编程使用Processing的语言,该语言由java演化而来。

BCM2835 C Library

链接网址: http://www.airspayce.com/mikem/bcm2835/

简单介绍:C Library可以理解为使用C语言实现的底层驱动,包括GPIO、SPI和UART等,使用简单方便同样容易上手。

1.硬件准备

从淘宝上淘了一下,发现深圳有家店做的很不错,虽然东西有点贵但是品质不做,光有树莓派其实用处也不大,还需要合适的扩展板,下面是扩展板的图片:

2.程序实现

2.1 Python

新建一个名为led.py的程序,程序的具体内容如下:

#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) # need to set up every channel which are using as an input or an output GPIO.setup(11, GPIO.OUT) while True: GPIO.output(11, GPIO.HIGH) time.sleep(1) GPIO.output(11, GPIO.LOW) time.sleep(1)

使用cd命令进入文件所在目录,然后输入指令

sudo python led.py

使用这种方法实现LED闪烁的最容易的方法,网上的教程也非常多,是入门树莓派的好方法。

2.2 wiringPi

新建一个名为blink.c的程序,程序内容如下

#include main () { wiringPiSetup () ; pinMode (0, OUTPUT) ; for (;;) { digitalWrite (0, HIGH) ; delay (500) ; digitalWrite (0, LOW) ; delay (500) ; } }

使用cd命令进入所在文件目录,然后输入以下命令生成可执行文件blink

gcc -Wall -o blink blink.c -lwiringPi

最后输入以下命令执行程序

sudo ./blink

之后程序便会运行,使用ctrl+c可以结束程序,这里会有一点小问题由于程序停止的时间未知,所有LED可能为点亮状态也可能会熄灭状态。和python的程序相比,GPIO的端口号似乎发生了变化,但是实际上为同一个IO,只是IO的编辑顺序略有不同。

2.3 BCM2835 C Library

新建一个名为blink.c的程序,程序的具体内容如下

#include // Blinks on RPi Plug P1 pin 11 (which is GPIO pin 17) #define PIN RPI_GPIO_P1_11 int main(int argc, char **argv) { if (!bcm2835_init()) return 1; // Set the pin to be an output bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP); // Blink while (1) { bcm2835_gpio_write(PIN, HIGH); bcm2835_delay(100); bcm2835_gpio_write(PIN, LOW); bcm2835_delay(100); } bcm2835_close(); return 0; }

使用cd指令进入文件所在目录,然后输入以下命令生成可执行文件

gcc -o blink blink.c -l bcm2835

最后执行该程序,输入以下指令

sudo ./blink

之后程序便会运行,运行的效果和前面两个效果相似,只是LED闪烁的时间略有不同。如果深入以上各种函数库,本质上依然是操作bcm2835的相关寄存器。

3.未来技术

实践GPIO输入功能,实践SPI功能,实践I2C功能等。最后综合以上若干内容和以太网功能做一个好玩的应用。

脚本封杀尝试树莓派SSH密码的来源IP

树莓派整天开着,如果用缺省SSH端口对外开放,就会经常遇到扫描SSH密码的肉鸡。虽然密码不是很简单,但还是感觉很不安全的。

系统的ssh登录日志文件在:/var/log/auth.log,登录失败时会记录以下格式的日志:

Mar 7 10:31:51 raspberrypi sshd[24510]: Failed password for root from 221.8.19.129 port 4066 ssh2 Mar 7 10:31:55 raspberrypi sshd[24514]: Failed password for root from 221.8.19.129 port 4079 ssh2 Mar 7 10:31:56 raspberrypi sshd[24518]: Failed password for sshd from 221.8.19.129 port 4080 ssh2 Mar 7 10:32:26 raspberrypi sshd[24522]: Failed password for sshd from 221.8.19.129 port 4149 ssh2

用最简单的Shell脚本来解决这个问题:

guard.sh

#!/bin/bash last_ip=”” tail -f /var/log/auth | while read LINE; do { if [[ “${LINE}” =~ “Failed” ]]; then ip=”$(echo ${LINE} | awk ‘{print $(NF-3)}’)” if [[ “$last_ip” == “$ip” ]]; then echo “block $ip” #curl -s –data-ascii “uuid=” –data “body=${LINE}” http://raspberrypi/pushme iptables -A INPUT -s “$ip” -j DROP fi last_ip=$ip echo $LINE fi } done

用root用户执行以下命令,也可以放到启动脚本里:/etc/rc.local

nohup /root/bin/guard.sh > /var/logs/guard.log 2>&1 &

如果连续两次输错密码,那ip就会被封,我另外加了一个报警,会通知到我的手机,这下感觉安全了些。

登录Pi用 iptables -L 可以看到被封杀的IP列表,如果需要解封这些IP,可以用命令 iptables -F ,也可以用crontjob每天定时运行一次 iptables -F 来清除。

脚本还很简单,还可以有不少改进,可以在评论里讨论。

极客以折腾不息的树莓派玩法

创客时代,开源硬件的兴起,让每个人都可以自己去尝试设计一些项目,尽管上手难度还是有一点高,如果你足够极客,足够发烧,真应该买几台 Raspberry Pi(树莓派)或者Arduino来玩一下。也许你还是不太了解树莓派是什么,以及树莓派能用来做什么。让我们慢慢来,一步一步发现它的好玩之处。

什么是开源硬件

开源硬件,指与自由及开放源代码软件相同方式设计的计算机和电子硬件。开源硬件开始考虑对软件以外的领域开源,是开源文化的一部分。 这个词主要是用来反映自由释放详细信息的硬件设计,如电路图、材料清单和电路板布局数据,通常使用开源软件来驱动硬件。

树莓派是开源硬件中的一种,其配备ARM架构处理器,256MB内存(B型已升级到512MB内存)。Raspberry Pi 只有一张信用卡大小,体积大概是一个火柴盒大小,可以执行像雷神之锤 III 竞技场的游戏和进行1080p影片的播放。树莓派本来的目的是以低价硬件及自由软件刺激在学校的基本的电脑科学教育。它设计初衷是给小朋友们学电脑用的,不是给你们这些Geek来折腾玩的。

像 WaterColorBot 那么有创意的应用,还是比较少的,但是本着“天行健,极客以折腾不息”的精神,我们还是可以用树莓派做很多有意思的东西。不少极客就实现了不少好玩的功能,你看了之后是不是也有想尝试的欲望?让我们看看他们都用树莓派做了哪些有意思的事情吧。

树莓派变身微博机器人

树莓派最大的一点就是可扩展性很强,用户可以在此基础上加上各种传感器。比如利用温度传感器来实现监控温度,单纯的检测温度会比较枯燥。让我们来改造一下,把温度监控结果来定时发微博,树莓派变身微博机器人,每过一段时间把现在的温度发一个微博。也许你可能不会写代码,不知道怎么配置微博的接口。没关系,已经有人把 一些工作都做好了 ,只要能动手,会Google,你也可以实现。

除了温度传感器,还可以尝试其他的传感器,来实现新的玩法,等待你的尝试。

树莓派来做真正的豆瓣FM

把豆瓣FM真正的做成一个FM发射电台,用收音机来收听。尽管看起来是多此一举,但是极客精神就是以折腾不息,做出来的时候感觉是很酷的。听到这个概念时,一开始是不是无从下手,其实思路还是比较简单的,树莓派可以联网,可以装入操作系统扩展功能,已经较为方便的适合我们折腾。只需要用树莓派从豆瓣FM上下载MP3音乐码流并解码,把音频信号调制成调频信号发射出去。就可以用收音机或者是手机豆瓣FM了。具体的代码实现善用 Github ,也能找的到。

如果你更发烧,更极客,可以尝试一下这个方法,把你的树莓派版的豆瓣FM 加一个显示器。

效果见视频

只需要多加一个显示模块,红外遥控器,红外感应器,当然动手难度也相应的提高不少,需要一定的编程基础。

树莓派实现远程开门器

当你到公司签到的时候,用手机发送一条指令,门便自动打开。也许在之前听起来会比较科幻,非常极客,制作难度也会很高。现在 用树莓派实现 也不会很难,需要你研究一下门锁,给树莓派刷上操作系统,配置网络,连接硬件,用代码编写一个小Web Server 。然后输入正确的口令,便可解锁。如果再高端一点,可以写一个Android 和 iOS程序,用手机签到,这样每次忘记带门卡,用手机遥控开门。

Kindle + Raspberry Pi = PC

PC还可以怎么组装?只要你有个Kindle和树莓派, 便可改造成一台小PC 。这个上手难度会高很多,但挑战越多,乐趣也越大。一台越狱的Kindle 加上一个外接键盘,树莓派作为处理中心,Kindle 作为显示器,看起来是不是像一台小PC,虽然只能实现远古的命令行模式,在Kindle上Hack一下,至少会提高不少逼格。

自制树莓派飞行器

采用树莓派电脑控制的旋翼飞行器,可以装备智能手机用的那种微型摄像头,相对普通旋翼飞行器+相机的航拍组合,不仅成本更低,而且能够实现更复杂的功能,比如航拍录像或者实时航拍影像无线传输,相比单纯的买来用手机控制的飞行器,这个自己改装的树莓派版还可以扩展功能,是不是很酷。

树莓派商店和论坛

觉得自己动手难度太高?试试 树莓派商店 吧,商店中直接有别人做好的一些项目,有游戏有应用,当然有些是需要掏钱买的。如果你自己的动手能力够强,也可以发布自己的项目,让别人感受你的成果。

现在也有不少玩家集合,在树莓派论坛中,也能发现比较好玩的东西,也有一些教程来给普通用户解决一些问题。互联网时代能接触到的资源很多,只要去尝试和发现,总是会能解决的。

不久前去幻腾智能的时候,发现他们的工作室门边贴满了传感器。后来了解到这是用来解锁开门的,在门上设定解锁图案。只要按照特定的顺序敲击固定的位置,便可解锁。具体原理是敲击门的时候,每一个击中点传感器都能感应的到,然后各个传感器计算偏移量,得出坐标。如果匹配设定好的方案,便可解锁。

他们用一种很极客的方式来创造了一种解锁方案。对普通用户来说,可能没有那个能力去做,树莓派的出现在一定程度上降低了难度,可以自己去尝试着做一些小产品。

用树莓派做VPN路由网关

对于一般家用的路由器,一直苦于路由OS的功能限制,DD-WRT系的软件陈旧。想用PC直接当路由,但价钱上显然是狮子抓耗子。

我的目标是将树莓派做成VPN路由网关,即本身是一个VPN的Client,同时可以转发网络请求。这样只要连上家里的WIFI就可以无缝访问公司网络和其它网络。

实际情况我用的是PPTP协议,当然你可以用其它各种协议来实现。

组网

拓扑如下,也可以再买USB2RJ11和WIFI天线将树莓派变成一个完整的WIFI路由,我这个拓扑是考虑到TP-Link路由可以做备用的网关。

Raspberry Pi安装基本环境

默认只有vi和nano,可以装个vim或emacs。

装PPTP Client: sudo apt-get install pptp-linux

为系统配置静态IP,实际情况里我使用192.168.1.69做网关静态IP,详细见 Debian Wiki

配置PPTP连接

配置以太网口可用时自动连接PPTP服务器:sudo vi /etc/network/if-up.d/vpn,键入以下内容(< >里的内容按实际情况填写) #! /bin/bash /usr/sbin/pptpsetup –create <名字(随便起)> –server <服务器地址> –username <用户名> –password <密码> –encrypt –start

配置PPTP链接断开后自动重连,执行以下命令 sudo cp /etc/network/if-up.d/vpn /etc/ppp/if-down.d/vpn

修改路由表,将PPTP服务器作为下一跳的网关,即默认使用PPTP连接发送所有流量(如果你有这个需求)。在PPTP连接成功后进行修改:sudo vi /etc/ppp/ip-up.d/vpn,键入以下内容 #! /bin/sh /sbin/route add default dev $PPP_IFACE

由于家里使用的PPPoE上网,加上PPTP协议封装,链路实际可用的MTU减小。我的PPTP服务器使用的MTU是1300,当内网中其它终端以树莓派为网关时并不知道网关的下一跳链路的MTU小于1500,终端也不会在DHCP过程中主动配置MTU值,1500大小的包转发到PPTP链路中会被丢弃,造成无法上网的现象。解决方法是配置TCP MSS值,使系统遇到大于MSS值的包时先拆包再转发: sudo iptables -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –set-mss 1268

配置网关相关功能

修改/etc/sysctl.conf,使树莓派可以转发ipv4的流量 net.ipv4.ip_forward=1

使sysctl.conf的修改马上生效 sudo sysctl -p

配置iptables,使系统强制转发所有流量 sudo iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

其它配置

保存iptables的信息,用于之后快速恢复当前配置 sudo iptables-save > /etc/iptables.rules

当以太网端口可用时,恢复iptables配置,sudo vi /etc/network/if-up.d/iptables,键入以下内容: #! /bin/sh iptables-restore < /etc/iptables.rules 如果你使用了PPTP服务器作为网关转发所有流量,你很可能需要配置路由表,使某些ip是例外,不走PPTP链路的。这种脚本网上很多,一般分ip-pre-up和ip-down两个脚本分别用于添加、删除路由表记录。将ip-pre-up放到/etc/network/if-up.d/下;ip-down放到/etc/network/if-down.d/下 确保上面的所有钩子脚本都有执行权限: sudo chmod +x /etc/network/if-up.d/* /etc/network/if-down.d/* /etc/ppp/ip-up.d/* /etc/ppp/ip-down.d/* 配置DHCP 配置DHCP服务器信息,网关填上树莓派的静态ip,我是在TP-Link上配置DHCP信息的 结束语 以上就是VPN路由的所有配置,现在你可以iPhone、iPad、 Android、电脑、PSVita、3DS、PS3、XBOX360等等连上你的TP-Link,即可无缝使用VPN链路,树莓派也会像一般的路由器一样稳定工作。 所有终端因为DHCP的配置将流量发向树莓派,树莓派按路由表的配置选择使用PPTP链路。 要配置的地方比较多,中间有一步出了问题都可能使树莓派无法稳定工作,需要你熟悉计算机网络,Linux网络配置。

在树莓派下安装.NET环境

由于树莓派的Raspbian衍生自Debian,所以Mono什么的非常好装。但是官方源中的Mono在Hard Float的Raspbian下是没法完整支持.NET程序的,比如没法在LXDE上运行Winform,但是装Soft Float的话又感觉很亏,所以我们要在Hard Float的Raspbian下装支持Hard Float的.NET环境。

一、安装支持Hard Float的Mono

Raspberry的论坛上有好心人编译好了Raspberry能用的支持Hard Float的Mono,所以我们分别敲入下列代码安装即可,而且压缩包内都是按目录分好的,直接解压缩到“/”下即可,Mono将安装在“/usr/local/”下。

cd ~ wget https://www.dropbox.com/s/sask17flot3zqlg/mono_2_11_4_armv6hf_binary.tgz cd / sudo tar zxf ~/mono_2_11_4_armv6hf_binary.tgz sudo ldconfig

不过众所周知的,Dropbox在天朝的下载速度实在是太慢了,我拖下来然后把它共享在百度云上,有需要的可以从国内下载直接解压缩就好了:http://pan.baidu.com/s/1pEds1

如果要是之前已经安装过Mono的话,需要先将其完全删除,然后再进行安装。删除可以使用以下命令:

sudo apt-get remove mono-complete mono-runtime mono-common cli-common libmono0 sudo apt-get remove –purge mono-runtime libmono-2.0 libmono-profiler mono-devel monodoc-browser

装完后可以输入mono -V看下,有了hardfp-abi好高兴!(图中下图是官方源中的Mono)

二、安装Gtk#

装支持Hard Float的Mono就是为了这玩意,由于安装的Mono不是从官方源中安装的,所以从这步开始的很多组件都只能自己下载源码进行编译安装了。

首先安装必须的组件

sudo apt-get install automake libtool libgdiplus libpango1.0-dev libatk1.0-dev libgtk2.0-dev libglade2-dev

然后下载Gtk#并安装

cd ~ wget http://ftp.gnome.org/pub/gnome/sources/gtk-sharp/2.12/gtk-sharp-2.12.10.tar.gz tar zxf gtk-sharp-2.12.10.tar.gz cd gtk-sharp-2.12.10/ ./configure make sudo make install

不过貌似gnome的网站的速度也挺慢,传送门:http://pan.baidu.com/s/1koy2W。

装完后去LXDE下就能打开Winform的程序了。不过如果locale设置的不是zh-cn的话,即使安装了中文字体,界面中的字仍然是方块,如下图。

比较简单的方法是修改字体的映射,我们可以修改“/etc/fonts/conf.d/49-sansserif.conf”,将最后 中的sans-serif修改为喜欢的中文字体即可,比如“WenQuanyi Micro Hei”,如下图。

三、安装xsp

在Linux下除了能跑Winform的程序外,比较有用的应该是跑Web应用,首先我们需要安装xsp。

cd ~ sudo wget http://download.mono-project.com/sources/xsp/xsp-2.10.tar.bz2 sudo tar jxf xsp-2.10.tar.bz2 cd xsp-2.10 ./configure make sudo make install

四、安装mod_mono

如果喜欢使用apache2的话可以使用apache2的组件mod_mono来使apache2支持Mono,当然是用其他的Web服务器也是可以的。

cd ~ sudo wget http://download.mono-project.com/sources/mod_mono/mod_mono-2.10.tar.bz2 sudo tar jxf mod_mono-2.10.tar.bz2 sudo apt-get install apache2-threaded-dev cd mod_mono-2.10 ./configure make sudo make install

不过由于Mono和Xsp并不是安装在“/usr/”下,而是安装在“/usr/local/”下,所以我们在配置的时候特别需要注意。比如可以使用MonoAutoApplication,即修改“/etc/apache2/mod_mono.conf”,在最后添加如下两句:

MonoServerPath “/usr/local/bin/mod-mono-server2” MonoAutoApplication enabled

然后将mod_mono.conf复制到“/etc/apache2/mods-enabled”下,然后重启apache2即可。当然比较传统的方式是将mod_mono.conf移动到mods-available下,然后再在mods-enabled下创建个链接。

相关链接

Mono (C#) 2.11.4 hard-float for Raspberry Pi (EXPERIMENTAL):http://www.raspberrypi.org/phpBB3/viewtopic.php?t=37174

在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache + Mono):http://www.cnblogs.com/mayswind/p/3189724.html

via

树莓派即将支持SIM卡,可访问3G网

Raspberry Pi是全球知名的开源迷你Linux单片PC,许多人用它实现了多样化的功能——比如用作机器人的大脑,驱动小型智能家居,另外它也在教育行业多有贡献。现在,这台“地球最便宜电脑”即将迎来新的升级。来自外媒的报道,一家名为SparqEE的企业就要让Raspberry Pi重新焕发移动网络连接方面的活力了。

报道称,SparqEE即将在筹款站点Kickstarter发起一个筹款目标在7万美元的项目,用于为Raspberry Pi装载基带芯片、SIM卡槽等配件,这样用户就能使用Raspberry Pi访问3G网络了。SparqEE还特别表示已经“联系了一家面向全球的SIM卡供应商”,所以用户可在SparqEE处以非常便宜的价格买到可用于Raspberry Pi的SIM卡。为美国用户提供Raspberry Pi 3G网络访问的运营商是AT&T。

Raspberry Pi以极其轻巧的体积和便宜的价格获得了许多开发者的青睐,所以前期也陆续有不少配件和应用在这款迷你设备上实现,像是RasPiComm扩展板可获得更多的输入接口扩展,又如将之应用于5D Mark II单反相机中,令单反产生直接与iPad传输照片的能力。而为Raspberry Pi扩展3G网络访问功能,似乎又为其应用于更多产品奠定了基础。

树莓派搭建 hadoop 集群

Hadoop是由Java实现的, 所以在树莓派上运行就和在其他x86平台上运行一样简单. 首先, 我们需要安装支持树莓派的JVM. 可以选用OpenJDK或者Oracle的JDK 8. 我个人推荐JDK8, 其速度稍微快些, 但是OpenJDK安装 更容易些 .

1. 安装Java

安装OpenJDK十分简单, 只要执行以下命令

pi@raspberrypi ~ $ sudo apt-get install openjdk-7-jdk pi@raspberrypi ~ $ java -version java version “1.7.0_07” OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-1+rpi1) OpenJDK Zero VM (build 22.0-b10, mixed mode)

另外 , 我们可以选择安装Oracle的JDK 8.

可以从这获得: https://jdk8.java.net/fxarmpreview/index.html

pi@raspberrypi ~ $sudo tar zxvf jdk-8-ea-b36e-linux-arm-hflt-*.tar.gz -C /opt pi@raspberrypi ~ $sudo update-alternatives –install “/usr/bin/java” “java” “/opt/jdk1.8.0/bin/java” 1 pi@raspberrypi ~ $ java -version java version “1.8.0-ea” Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e) Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode)

如果你两个都装了, 用以下命令来切换即可:

sudo update-alternatives –config java

2. 新增一个hadoop系统用户

pi@raspberrypi ~ $ sudo addgroup hadoop pi@raspberrypi ~ $ sudo adduser –ingroup hadoop hduser pi@raspberrypi ~ $ sudo adduser hduser sudo

3. 设置SSH

pi@raspberrypi ~ $ su – hduser hduser@raspberrypi ~ $ ssh-keygen -t rsa -P “”

这会生成一个匹配空密码的RSA密钥. 在与其他节点通讯时Hadoop将不再提示输入密码

hduser@raspberrypi ~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

现在设置 SSH允许 用刚生成的密钥访问

hduser@raspberrypi ~$ ssh localhost

现在我们就应该可以不使用密码也可以登录了

4. 安装Hadoop

我们可以从 http://www.apache.org/dyn/closer.cgi/hadoop/core 下载hadoop

hduser@raspberrypi ~$ wget http://mirror.catn.com/pub/apache/hadoop/core/hadoop-1.1.2/hadoop-1.1.2.tar.gz hduser@raspberrypi ~$sudo tar vxzf hadoop-1.1.2.tar.gz -C /usr/local hduser@raspberrypi ~$cd /usr/local hduser@raspberrypi /usr/local$ sudo mv hadoop-1.1.2 hadoop hduser@raspberrypi /usr/local$ sudo chown -R hduser:hadoop hadoop

现在hadoop就安装好了. 编译home目录下的.bashrc文件, 将以下内容添加到其中

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-armhf export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin

如果你用的是 oracle的JDK, 相应的修改 JAVA_HOME.

重启一下树莓派来验证安装是否成功:

hduser@raspberrypi ~$ hadoop version Hadoop 1.1.2 Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/ branch-1.1 -r 1440782 Compiled by hortonfo on Thu Jan 31 02:03:24 UTC 2013 From source with checksum c720ddcf4b926991de7467d253a79b8b

5. 配置Hadoop

注意: 这里的配置是hadoop单节点模式的最低配.

配置文件位于”/usr/local/hadoop/conf/”, 我们需要修改core-site.xml, hdfs-site.xml, mapred-site.xml三个文件

core-site.xml

hadoop.tmp.dir /fs/hadoop/tmp fs.default.name hdfs://localhost:54310

mapred-site.xml

mapred.job.tracker localhost:54311

hdfs-site.xml

dfs.replication 1

哦了, 即将完工, 还剩最后一步.

hduser@raspberrypi ~$ sudo mkdir -p /fs/hadoop/tmp hduser@raspberrypi ~$ sudo chown hduser:hadoop /fs/hadoop/tmp hduser@raspberrypi ~$ sudo chmod 750 /fs/hadoop/tmp hduser@raspberrypi ~$hadoop namenode -format

注意:

如果选用的是JDK 8, 我们需要强制在JVM client模式下 运行 DataNode , 因为JDK 8还不支持server模式. 进入/usr/local/hadoop/bin目录中来编辑hadoop文件(请先备份). 使用nano进行修改的步骤如下:nano hadoop, ctrl-w输入“-server”进行查找. 我们需要删除“-server”这个参数, 然后保存退出就行了.

hadoop单节点系统就算是搭建完成了. 下面给一些有用的命令.

1. jps // 输出本地VM标识符 2. start-all.sh // 启动所有hadoop进程 3. stop-all.sh // 停止所有hadoop进程

Upstagram: Instagram上的树莓派飞屋环游记

如果问你Instagram、Raspberry Pi和《飞屋环游记》的共同点是什么,你可能答不上来。但Hackerloop团队给出了一个答案:把三样东西混合在一起可以变成 Upstagram ,一个很酷的黑客项目。

首先,团队按照《飞屋环游记》用纸板和泡沫重现了卡尔和艾丽的飞行小屋,大小刚刚足够容纳一个Raspberry Pi以及摄像头、电池和3G热点。Raspberry Pi是一个开源的廉价微型计算机,能够满足黑客们修改、试验和尝试新事物的梦想。

然后,团队使用了约90个氦气气球使小屋飞到巴黎上空。由于Instagram仅适用于iOS和Android系统,于是他们对它的发送图片功能进行了逆向工程,Raspberry Pi就变成了Instagram照相机。然后就产生了如下内容:

小屋在距地面90米的高度拍摄了400多张照片,并自动发布到指定的Instagram账户。其中Hackerloop选取了15张效果最好的照片分享到了团队的Instagram 帐户 里。

“我们并不想攻破Instagram,这只是我们完成这件妙事的必要步骤之一,” Hackerloop联合创始人Valentin Squirelo写道。“使用现有的工具并发挥出它本身不具有的功能也是一种创意。”

对Instagram的上传过程进行逆向工程肯定违反了服务条款,团队认为其Instagram帐户将很快被关闭。但至少从现在的照片来看,这件事的确酷极了。

link

配置树莓派交叉编译平台

Raspberry Pi本身的硬件性能不是很高,编译大型程序,需要消耗很多时间,所以在pi上直接编译源代码 有时候是件痛苦的事情。

为了节约时间,不如在性能强大的台式电脑上配置交叉编译平台,节省编译所需时间。虽然配置交叉编译平台会比较麻烦,也是件痛苦的事情,但是长痛不如短痛~~

这里选用的 Raspberry Pi 操作系统 采用Raspberry Pi 基金会官方推荐的 也是普及率最高的 Raspbian,是基于Debian Wheezy版本的armv6 Hardfloat 分支版本。选用的PC机操作系统,则是 debian 发布的 Debian Wheezy Beta4 X86, 采用同样的发行版本源代码,可以让软件包版本尽量保持一致。

选用的交叉编译工具链,是Raspberry Pi 基金会官方发布的 交叉编译工具包,也就是官方用来编译Raspbian操作系统所用的交叉编译工具链,是最适合编译用在Raspberry pi 上运行的程序的工具包。

以下操作,在PC机debian操作系统下完成

首先下载最新的编译工具包

git clone git://github.com/raspberrypi/tools.git

完成后可以在当前目录下看到tools文件夹。

把编译链工具安装到 /opt 文件夹下面 需root权限。

cd tools cp -r arm-bcm2708 /opt

配置默认路径,加入编译工具路径。

export PATH=/opt/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin:$PATH

配置编译参数。

export CFLAGS=”-O2 -pipe -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -w”

至此 交叉编译环境配置完成

编译的时候,在make后面加上用于指定交叉编译器的参数。

CROSS_COMPILE=arm-bcm2708hardfp-linux-gnueabi-

该参数的意义是指定交叉编译器为支持bcm2708芯片硬件浮点的arm编译器。

如果是编译linux内核,需要同时在make后面加上指定架构的参数。

ARCH=arm

via 自由飞翔

树莓派内核(Kernel)的交叉编译

Raspberry Pi本身的硬件性能不是很高,在pi上直接编译源代码,非常消耗时间,为了节省时间,所在在性能强的PC或server上进行交叉编译。前面介绍过普通应用程序的交叉编辑环境和操作过程,下面要更进一步,介绍系统内核(Kernel)的交叉编译。

参考文档: 官方文档

环境准备:

PC操作系统: ubuntu 12.04, 64bit

相关软件:

linux-rpi-3.6.y.zip linux源码

firmware-master.zip 固件依赖

tools-master.zip 交叉编译环境工具

获取方法

$ git clone git://github.com/raspberrypi/firmware.git PRiFirmware $ git clone git://github.com/raspberrypi/linux.git RpiLinux $ git clone git://github.com/raspberrypi/tools.git RpiTools

由于下载比较慢,如果不升级的话,直接下载zip包靠谱一点。

步骤:(其实和直接编译内核步骤类似)

1 获取当前树莓派Kernel的.config文件,并进行自定义的配置,拷贝到PC上

2 在PC上执行

$ mv .config /RPiLinux $ cd RpiLinux/

编辑老的配置文件

$ make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- oldconfig

如果需要添加新的模块

$ make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- menuconfig

(官方提供的编译工具中包含三套工具链

arm-bcm2708hardfp-linux-gnueabi

arm-bcm2708-linux-gnueabi

gcc-linaro-arm-linux-gnueabihf-raspbian

我们选择带hardfp硬解码的工具。)

一路enter,选择默认值,可以看出里面包含不少对加载驱动的选取。

3 编译

$ make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- -j4

-j标示cpu的核数,多核编译提高速度

这个过程可能需要二十分钟

最终,arch/arm/boot/zImage 就是我们所编译获得的文件。zImage 是 Compressed kernel image 文件,要转换为 kernel.img 还需要进一步处理。

$ cd ../RpiTools/mkimage/ $ ./imagetool-uncompressed.py ../../RpiLinux/arch/arm/boot/zImage

编译新lib:

新的Kernel要正确运行,还需要编译所需的module,主要对应“/lib”目录下的内容。编译时,使用“INSTALL_MOD_PATH”参数指定目标路径。

$ cd ../.. $ mkdir modules $ cd RpiLinux/ $ make modules_install ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- INSTALL_MOD_PATH=../modules

备份 Firmware:

$ cd .. $ mkdir backup $ sudo mount /dev/sdc1 /media/SD/ $ cd /media/SD/ $ mv *.elf *.bin ~/gitpool/raspberrypi/backup/

升级RPi的kernel、Firmware、lib

$ cd ~/gitpool/raspberrypi/RPiFirameware/boot $ sudo cp ~/gitpool/raspberrypi/RpiTools/mkimage/kernel.img kernel_new.img $ cp bootcode.bin fixup.dat fixup_cd.dat start.elf /media/SD/ $ cd ../hardfp/opt/ $ sudo umount /media/SD $ sudo mount /dev/sdc2 /media/SD/ 挂在根分区 $ sudo cp -r vc/ /media/SD/opt/

将新的vc库复制到SD卡,因为之前选用的工具链是hardfp,所以现在所选用的vc库也是硬解码的版本(RPiFramware/hardfp/opt/vc)。

$ cd ../../.. $ sudo cp -r modules/lib /media/SD/

(注意这步直接cp就好,我之前为了备份/lib,把/lib目录mv成bak了,整个树莓派就没法用了。。)

将SD插回树莓派,可以看到其正常启动。至此树莓派新内核编译完成。

树莓派是很强大而且学习资料相当丰富的ARM平台,对学习linux内核是很有帮助的,并且做实验也是非常方便。

英国制造出第1,000,000台树莓派

Raspberry Pi基金会宣布,位于英国威尔士的索尼工厂交付了第100万台Raspberry Pi卡片电脑。Raspberry Pi有A和B两种型号,是基于ARM架构的袖珍电脑,可运行Linux系统如 Raspbian ,外接键盘显示屏或电视,售价仅为25美元和35美元。Raspberry Pi于2012年2月推出,早期产品由中国工厂代工,2012年9月开始交给英国的一家索尼工厂制造。Raspberry Pi至今总共售出了175万台。

硬件DIY爱好者社区里面最著名的廉价(仅售25美元-35美元)微型电脑Raspberry Pi在今天达到了175万台的全球销量。Raspberry Pi的创造者,总部位于英国的 Raspberry Pi基金会 宣布了这一消息。

2012年3月,第一台Raspberry Pi微电脑面市。当时制造商认为第一年能达到1000台的销量就已经算成功了。但现在他们却正走向卖出200万台的目标。

另外,Raspberry Pi自迁回英国本土工厂生产后,也已达成了100万台英国制造的里程碑。

起初,像那些廉价电子产品一样,为了实现低成本生产,Raspberry Pi全部在中国制造。但是基金会始终希望将生产线搬回英国本土,毕竟如此可以更容易地控制整个生产过程,同时也能为支持英国本土企业做出一些贡献。于是他们选择了威尔士Pencoed的索尼工厂,并取得了现在的成绩。

所以中国生产了余下的那75万台设备。Raspberry Pi的主要销售商Premier Farnell/element 14从今年三月开始全部引进英国生产,但仍有一小部分中国制造存货。

Raspberry Pi设备不仅支持了发烧友社区进行的高端DIY硬件项目,如太阳能FTP服务器,还帮助了孩童认识到编程的魅力,像今年年初,谷歌就投入了100万美元为英国的小学生资助了15000台Raspberry Pi。此外,该设备更是作为一种理想的低成本计算机工具用于非洲的基础教育事业。

今年四月,Raspberry Pi基金会公布了当时120万部设备在全球的销售分布。其中的98%被销往英美等西方发达国家。所以基金会的下一步计划就是将设备推广到全球广大发展中国家。

关于如何做好全球性的推广工作,创始人埃本·厄普顿(Eben Upton)说他们的分销商 RS Components 已经在南非建立仓库,并能够更快地分销到非洲南部的许多国家。

他告诉我们:“运输成本非常关键,同时运输的可靠性也很重要,尤其是从欧洲发往非洲这个过程。”

另外他还说:“我们正在研究如何在控制成本的前提下进入南美洲市场。虽然确切的时间表还无法给出,但我想我们已经接近目标了。”

厄普顿同样认为亚洲市场也在不断扩张:“从国家来看,美国的销售量是全球最高的,而英国的人均拥有量排名世界第一。真正令人兴奋的是亚洲国家,尤其是日本、韩国和菲律宾,这些国家的销售量每月都在创造纪录。”

如今,英国百万出厂记录者的创造者似乎已经驶上了快速发展的高速路。索尼表示他们将用镀金盒来保存第100万台英国产Raspberry Pi,并将在Pi Tower中向公众展示。

(译:王博源)

视频详解树莓派如何外接Kindle显示器

哇哦,我很高兴地宣布本文在Hacker monthly上发表了!

去年7月底,我们暂别了位于Kootenays的小工作室开始了欧洲之旅。这趟旅行意在发掘有关新兴媒体、精神家园、艺术、设计以及开源项目等方面的事物。我决定在随身携带的行头里尽量将电脑方面的需求减至最低,所以我只带了一台Kindle,一部照相机,一部Android手机以及我的树莓派!

尽管树莓派是一个美妙的项目,也是电子产品中的一项壮举,可是如果要作为主要生产环境中使用的计算机,它还是有一些局限性。我成功说服了自己将树莓派当做我旅行途中的主要计算机来用。

我的计划就是用Kindle当显示屏,再加上树莓派的处理器运算能力,连一个外接键盘就能用的很爽了。虽然那时想给Kindle接一个外接键盘似乎是不大可能的,我需要用树莓派在中间起一个‘hub’的作用。我开始折腾起来,KindleBerry Pi很快就要诞生了。

虽然我最后还是在旅途中买了一部笔记本电脑(囧…),但我之前所有的设想和折腾最后终成现实,而且工作的很不错。我创建了一个便携式的开发平台。至少,它已经在概念上证实了可以用在其他类似的项目中。那么下面就来看看如何构建你自己的KindleBerry Pi吧。

折腾开始

要完成这项hack任务,你需要准备这些东西:

1.一部Kindle 3

2.一台树莓派

3.2根micro USB转USB的连接线(一根用于电源,另一根连接Kindle和树莓派)

4.一套键盘,连接到树莓派上

5.可选部件:一个Kindle支架(可以拿旧的磁带盒替代)

6.可选部件:一个USB集线器。因为当组装完成后KindleBerry Pi的USB端口都被占用了

Hacking Kindle

免责声明:这么做可能会使你的Kindle变砖,下面这些只是提示,我本人不会对你们的Kindle负责,也不会对你们的人生负任何责任……

第一步相当简单,将Kindle连接到树莓派上就好。将Kindle越狱,安装一个终端模拟器程序,比如这个就可以,然后安装UsbNetwork。确保开启了usbNetwork,通过USB连接设备,然后快速配置一下ifconfig usb0 192.168.2.1,搞定!现在我可以登录到树莓派上了,使用Kindle的显示屏,但可惜的是现在还只能使用Kindle的键盘,局限性较大。

现在,主要的挑战就是用连接到树莓派上的外接键盘来替代Kindle自带的键盘。下面就是gnu screen大显神威的时候了!Screen是一个终端多路复用器,如果你不知道终端是什么,好吧,那我就不太懂为什么你要看这篇文章了。我们可以说“Screen就是打了激素的终端”。关于Screen,其中一个非常棒的功能就是你可以在同一个‘屏幕会话’中实现多用户的功能。比如说,你想监视通过ssh连接到你的计算机的用户在干些甚么,或者如果你想在终端环境下录制屏幕录像。无论如何,我不确定为什么会有一个多用户模式,但正是这种能力使得KindleBerry Pi成为了可能。

那么,这里的魔法就是:要使用外接到树莓派上的键盘,你要先用Kindle登录到树莓派上,然后共享相同的“屏幕会话”,这样你就可以用外接到树莓派上的键盘了。你还是需要用Kindle上的键盘来创建首个连接,一旦连接上之后,你就可以使用外接的键盘了。

尽管gnu screen拯救了世界,要自动化这整个过程那还需要更多的步骤才能完成。

在树莓派上设置USB网络

首先,我们需要在连接到Kindle时可以使用UsbNetworking服务。在Kindle中开启usbNetworking时,会给它的USB端口分配一个IP 192.168.2.2。然后,我们需要给树莓派的USB端口分配IP 192.168.2.1,而这一步必须要能够自动完成。要做到这一点,第一步是为你的/etc/network/interfaces文件添加如下的内容:

自动登录到树莓派

现在,我们需要树莓派完成如下功能:

1.确保用户能自动登录

2.在树莓派启动期间开启一个支持多用户的screen会话

树莓派启动时登录的用户和登录到Kindle上的用户是相同的。

关于如何在启动期间自动登录,在基于debian的系统上(树莓派的主流系统),你需要用任意一款文本编辑器打开/etc/inittab文件:

然后将这一行内容注释掉:

接着添加这样一行内容:

我的代码美化工具添加了一些“#038;”这样的代码,你可以忽略掉

注:有些读者表示,用下面这行内容替换掉上面的代码才能正常工作

这样应该就能完成了,现在我们要确保当树莓派启动时,以及当你从Kindle登录时,screen会话能自动启动。

Bashrc脚本

现在我们要确保自动登录上的用户会开启一个screen会话,但是同时我们也要保证当你用Kindle登录时,不会开启另一个screen会话,而是加入到那个已经开启的screen会话中即可。

根据你的系统环境,得到的结果可能会有所不同。所以,需要对代码做一些实验。大部分代码都在.bash_profile文件中。也许还有许多其他方式来完成,但这里是我总结出来的一种方案。

下面就是我的.bash_profile文件:

那么,一旦所有步骤都已完成,你应该就可以启动你的KindleBerry Pi了。一旦启动步骤完成,你就可以通过USB接口以UsbNetworking模式连接到Kindle,在树莓派上使用shell和ssh了。到这里你应该就可以使用外接到树莓派上的键盘了,而在Kindle上看到显示结果!基于某些原因,有时候我还需要摆弄一下screen会话,杀掉多余的会话进程然后连接到主会话上。

你也可以采用一些简单的无密码ssh身份验证密钥,为了节省时间也可以添加一些实用的脚本来简化这整个连接过程。一旦连接上了,你就可以开始使用树莓派的外接键盘了。这的确还有很大的改善空间,所以不用客气,如果你觉得有什么好的点子尽管提出来吧。

下面是个简短的视频,向大家展示一下刷新率:

组建KindleBerry Pi的过程非常有趣,这套搭配组合我甚至使用了好几周。但是很快我就意识到如果我想提高工作效率,那最好还是得有台正规的电脑。我对于命令行和编程方面的知识还很弱,还没法适应要完全工作在shell环境下。所以,KindleBerry Pi目前还只是在概念上证明了其可行性,也许会在“世界末日”的境况下才会变得比较有用吧。但还是会有一些奉行极简主义的死忠码农们会觉得有这样一个平台也是很不错的。

利用我在KindleBerry Pi中所学到的知识,我的下一个项目将利用树莓派搭建一个移动音乐平台,欢迎继续收看!