我是从最开始就听说过这个东西,实际下手是12年的10月,不过由于我经常不用Linux,对于它的配置搞的是一塌糊涂。不过我对于它还是没太大期望的,毕竟CPU的频率在那搁着,但是它有GPIO,这就为各种硬件的交互提供了可能。废话不多说,我来分享一下我的配置经历。这里主要是搜网上各大资源,主要是英文资源,所以我写这个也是一种翻译,毕竟看中文还是比看英文顺畅。
首先我列了一个表,代表我想要做哪些事情:为了方便 ,我使用了目录来写……
Contents
omxplayer播放器设置/Raspberry Pi也可以播高清! 1
我的设置
Transmission webui设置
首先使用命令
sudo apt-get install transmission*
来安装所有和Transmission有关的组件,安装完成之后就会按默认的设置。注意在配置前需要关闭相关的服务,所以使用
sudo service transmission-daemon stop
来关闭后台进程,否则修改的配置文件是无效的,会被程序覆盖回原来的文件。
这里主要注意一下几点:
download-dir: 你的下载目录
incomplete-dir: 下载不完全时候的目录,一般是下载不完全放一个地方,下载完全之后移动到某个地方。如果移动速度不快的话,不推荐使用这个。
incomplete-dir-enabled: 是否开启不完全下载目录。视情况而定。
rpc-password: webui的密码,设定的时候在这里设置明文密码,Transmission会在登陆后自动改成一个加密后的密码
rpc-username: webui的用户名
rpc-whitelist: 白名单的IP
rpc-whitelist-enabled: 是否开启白名单。如果不开启,谁都可以访问,如果开启,只有白名单内的IP才能访问。
通过以上几个关键点设置,你就可以通过浏览器的方式来访问这个Transmission了。同样的,有人做了Transmission-remote-GUI来访问这个资源。推荐 https://code.google.com/p/transmisson-remote-gui/ 不少发行版也包括了这个资源,名字为transgui。使用这个就和普通Transmission差不多了。
参考自:https://trac.transmissionbt.com/wiki/HeadlessUsage
https://trac.transmissionbt.com/wiki/EditConfigFiles
VNC设置
因为对SSH不熟悉,VNC最开始是打算远程操作Raspberry Pi的, 所以也就有了这一部分。但是这一部分因为现在不用了,直接导致我对这部分配置已经忘记了……只留下来这么多……
VNC加密码:使用vncpassword
VNC限制IP访问:使用iptables
防火墙,网络端口
提醒:由于这个是对于网络端口的操作,配置不当可能导致无法上网。
我的iptables:
*filter
:INPUT DROP [23:2584]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1161:105847]
-A INPUT -i lo -j ACCEPT
#允许80端口的网页访问,如果你没有建立网络服务器,那就不要用这一条了
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
#下面两个samba需要的
-A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
#也是网页访问的要求
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
#允许别人ping你这个机器
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#允许当前已建立的连接
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [1:148]
:INPUT ACCEPT [1:148]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
#nat出口为eth0
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
解释一下,开那几个端口是因为Samba要使用
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
是指开启了ping响应。如果ACCEPT换为DROP则屏蔽ping
还有那些中括号里边的数字,非常不了解……
在网络启动之后自动载入iptables
找到/etc/network/interface,查看里边的内容,大致如下:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
pre-up iptables-restore < /etc/network/iptables
最后一行就是自动导入iptables,也就是上面的iptables内容保存在了/etc/network/iptables这个位置当中。
参考自:http://www.simonthepiman.com/how_to_setup_your_pi_for_the_internet.php
http://wiki.debian.org/iptables
更改ssh设置
配置文件位置:/etc/ssh/sshd_config
SSH可能在输入用户名之后响应很慢:
在配置文件当中,最后一行加入:UseDNS no
重启daemon:
sudo service ssh restart
就可以了。
参考自:http://ubuntuforums.org/showthread.php?p=10399729
屏蔽root登陆
同样是在配置文件当中,默认情况会有这一行:
#PermitRootLogin no
把前面的星号去掉即可,如果没有找到,那添加这一行就行了。
保存文件并重启daemon即可。
http://www.howtogeek.com/howto/linux/security-tip-disable-root-ssh-login-on-linux/
更改登陆提示信息:
登陆信息文件位于/etc/motd
一个样例:
^[[0;31m欢迎
^[[0m
^[是ESC的代码,在vi中输入的时候应该是按CTRL+V,之后再按esc按键即可。或者直接echo:
echo -en "\033[1;34m" > /etc/motd
\033 代表了ESC这个特殊字符。
颜色对应:
Code Color
-----------------------------
[0;30m | black text
[0;31m | red
[0;32m | green
[0;33m | blue
[0;34m | purple
[0;35m | cyan
[0;36m | silver
[0;40m | red back.
[0;41m | green back.
[0;42m | brown back.
[0;43m | blue back.
[0;44m | purple back.
[0;45m | cyan back.
[0;46m | silver back.
引用自:http://www.linuxquestions.org/questions/linux-software-2/adding-colors-to-your-motd-105038/
配置Samba
sudo apt-get install samba
配置文件是在/etc/samba/smb.conf
前面的都无所谓,因为我用不到那么多东西,就没有管。只是新开了一个共享文件夹:在最后加入如下内容
[Photos]
comment = Photos
public = yes
path = /mnt/
valid users = pi
read only = yes
其中中括号内的东西是你在共享文件夹中看到的名字,valid users是哪些用户可以访问这个文件夹,因为pi用户是默认用户,可以直接使用。访问文件夹的权限设置为只读。
网关自动登陆
由于目前使用的是需要登陆网关才能访问外网的网络,所以如何让Raspberry Pi登陆就是一个问题。
最原始的方法:VNC远程桌面,因为开了VNC,Raspbian自带了浏览器,可以登陆网关来填写用户名密码。
稍微省事点儿的:SSH下面的Lynx,但是网关需要cookie以及一些HTML表单特性,Lynx不支持那么多,所以放弃了
麻烦的:wget方法,将其作为一个脚本,wget网址并将参数发送到服务器当作,保存cookie,登陆的时候再用这个cookie。
需要远端支持的:建立ssh端口影射,putty很容易做到putty/connection/proxy下面有相关设置,但是这个需要登陆ssh的为电脑设备,那样才能用浏览器端口代理解决这个问题。
我现在用的:自己编写了一个C#程序,在Raspberry Pi上面安装了mono,编译之后留着运行的。因为这样我也可以在手机的ssh端来控制我的Raspberry Pi了。
而且利用crontab来达到每月月初自动登陆的需要。
网卡问题
有线网卡问题:
我没有遇到过,但鉴于一些人遇到了所以拿来分享一下:
在/etc/sysctl.conf当中,找到
.min_free_kbytes = 8192
这一行,讲8192改为16384或更高。如果这个不起作用,则尝试在/boot/cmdline.txt当中添加一个参数:
smsc95xx.turbo_mode=N
这样会降低网络速率,但是提升了稳定性。不过经过我的实验,两个都改了之后,网络使用Transmission下载依然可以达到最快9.7M的速率,所以我认为这个影响的是上传下载同时进行时候的效率。
参考:http://elinux.org/R-Pi_Troubleshooting#Crashes_occur_with_high_network_load
无线网卡的问题
这个问题目前依然没有解决。我的网卡是RTL8188CUS核心的Netcore网卡,当时图便宜买的,目前Raspbian不能将这个设置为一个AP,所以hostapd软件不起作用。看到有人用这类核心,但是Edimax牌子的无线网卡就做成这个了,所以不了解具体是什么情况。
(20131029之后升级什么的我也没测试,因为拿回家了。找了个RT5xxx的来测试,是可以用hostapd来进行建立热点的,所以终究是驱动问题,现在应该解决了吧?)
DNS设置
不要自动获取DNS
在文件夹/etc/dhcp3/dhclient-enter-hooks.d/当中新建一个文件noDNSupdate,名字不重要。
在其中输入以下内容:
#!/bin/sh
make_resolv_conf(){
:
}
保存之后并将该文件设置为可运行即可。
自动挂载外接的USB移动硬盘
有一种方法是在/etc/init.d/下面建立一个挂载脚本,我曾经那么做过,但是因为发现fstab也能做,所以那个脚本就扔那没动过了。
在fstab当中加入如下一行:
/dev/sda1 /mnt ext4 defaults,auto 0 0
我的硬盘是sda1分区就是数据分区,已经格式化成ext了。这里建议使用ext的分区来操作。因为在我实践过程中发现,NTFS分区效率太低,还需要另外安装ntfs-3g来进行读写数据。很奇怪的是,我在真机上面发现Win8对于硬盘NTFS分区的操作不是以前的那种方法了。正常关机(非快速关机)之后Linux挂载该分区并填写数据之后,会导致Win8认为这块分区有问题(这个已经被证实,Win8采用了新的方式,而Linux在那时候还没有准备好对应的读写驱动,甚至于导致某些发行版直接采用只读方式了)。之前Win7或者WinSvr2008R2都没这问题的。
最重要的原因是我下载速度用NTFS的话会被严重干扰,只有2M左右,而且大部分CPU时间都被NTFS霸占了……所以Linux还是用ext比较好。Transmission校验速度在10MB/s以上
还有一个重要的事情,我测试了一下,本来是想搞电路上面的一些测试,但是意外的一个结果,如果这个硬盘接在了Hub后面,系统在启动的时候找不到该硬盘的……所以这个挂载就得手动实现了,也即是在开始说的用脚本实现。这个已经在最新的内核当中修改了,如果用的是#538及之后的内核,那么系统可以认出在Hub后面的硬盘并进行挂载的,不需要另外脚本设置了。(20131029)
虚拟内存设置
首先关掉虚拟内存,建议比如Transmission这类耗内存的可以先关掉
sudo service transmission-daemon stop
sudo swapoff -a
首先建立一个swapfile:http://rpi-blog.com/how-to-create-a-swap-file/
sudo dd if=/dev/zero of=/var/swap bs=1M count=256
sudo mkswap /var/swap
sudo swapon /var/swap
sudo nano /etc/dphys-swapfile
在这个文件当中输入:
CONF_SWAPFILE=/var/swap
CONF_SWAPSIZE=256
即可保证每次开启之后自动使用/var/swap来做为虚拟内存。这个的位置有争议。有人说不能放在SD卡上因为这个读写损耗比较大,于是我就放在了USB上面。但是有一次我不小心把硬盘放在了不通风的地方,硬盘温度过高导致自我保护,硬盘关闭,从而虚拟内存无法读取,最后导致了Raspberry Pi的花屏。说实话,除了显卡原因,我真的很少见Linux花屏的。
omxplayer播放器设置/Raspberry Pi也可以播高清!
请用
sudo apt-get install omxplayer
来进行软件的安装。后面划掉的如果你想自己编译的话就看吧……
这个倒是不难,就是耗时间……我是这样的,没有用那个现成的安装包:
sudo apt-get install ca-certificates git-core binutils libboost1...-dev libva1 libpcre3-dev
git clone https://github.com/wrightrocket/omxplayer
获得完源代码之后,就开始编译步骤了:
make sources
make -f Makefile.ffmpeg
sudo make -f Makefile.ffmpeg install
make
sudo make install
这个过程我花了2个多小时,主要是编译比较慢,ffmpeg这个耗时间。
总之最后是可以调用omxplayer来播放影片了!它会在当前目录留个小尾巴:omxplayer.log,我还不知道怎么让它不出现。
经过我的测试,我使用了192/64的内存/显存分配(32M显存的话omxplayer自动退出,128/128因为有Transmission存在所以没用),可以顺畅播放720P的电影,码率在11M之内的都可以播放。(羡慕512M版本的啊!)而1080P会卡的比较严重甚至于无法播放,估计原因在于显存不够,引用当中的URL也有人说了可以用来播放1080P的。至于蓝光,我试了,当然不行,而通过Samba来播放蓝光,看到了传输速度在40Mbps。普通的54Mbps无线已经阵亡或者150Mbps的无线带宽也不够了。我用的150Mbps路由和接收器,报告速度都是150Mbps但是实际传输速度也就30Mbps的样子,所以还是有线才能播。
(20131029)之前的150Mbps不是不够,而是我那时候用的是那种便携式的路由器,150Mbps只是标称。随着后来有了真300的路由,无线播高清不是问题,所以这个是路由器的问题。
而且,通过apt-get更新omxplayer之后发现播放flac和wma居然是卡顿的!换了别的播放器(忘了名字了)可以顺利播放。更新之前也就是一直用自己编译的那个是没有这个问题的,好奇怪,libavcodec的问题么?
参考:http://elinux.org/Omxplayer
http://www.brianhensley.net/2012/07/how-to-get-1080p-videos-running-on-my.html?spref=fb
http://wrightrocket.blogspot.com/2012/08/building-omxplayer-for-raspbian-on.html
供电问题
因为手头多了个移动电源,便想到拿那个做一个应急电源来维持Raspberry Pi,所以我也测试了一下Raspberry Pi各种电路的接入方式。这也导致了为啥我之前对虚拟内存的位置存疑点的原因。
很庆幸小虫子给我的移动硬盘盒是可以倒灌电流的,也就是外接电源接移动硬盘,然后USB线是可以输出电流的。也正是因为这一点,才使得我不用那么多设备线材也可以启动Raspberry Pi了。
电源有两个:一个是普通USB手机充电器那种的(移动电源也是USB口),一个是5vDC的移动硬盘外接电源。
用电设备为:Raspberry Pi(支持USB或者MicroUSB电源输入),移动硬盘(支持5vDC或miniUSB输入),USB Hub(可选,支持5vDc或者miniUSB输入)
有以下2*2=4种方式:
5vDC接Hub | 5vDC接移动硬盘 | |
HDD接Hub | 不能自动挂载可以自动挂载 USB必须供电给Raspberry Pi 这需要两个供电线路,而且跟Hub的好坏有关,因为移动硬盘正好卡在500ma那个界限上,因此掉线的几率偏大。 不宜使用 | 不能自动挂载可以自动挂载 USB必须供电给Raspberry Pi 这需要两个供电线路。 需要一根USB2MicroUSB,两根USB2miniUSB |
HDD直接接到Raspberry Pi的两个口当中的一个 | USB供电给Raspberry Pi可以,但是会导致网卡随机启动不了,HDD是电源不足无法启动。 不使用本方案。 | 目前我使用的方案。 测试当中,如果将USB供电给Raspberry Pi的MicroUSB口,拔掉5vDC的电源,硬盘会供电不足,又由于虚拟内存在硬盘上面,从而花屏。如果把虚拟内存放到SD卡上,顶多是Transmission不能正常跑了。但会有SD卡损耗问题。 |
总之,供电还是没有采用双线供电的,移动电源考虑到不能带硬盘也就没用上了。而且这个双线都是在自己屋子里弄的,家里断电那再双路也不行的,索性就不弄这个了。
另外在测试过程中我使用我手机充电线,买USBHub时候送的线来比较,发现线材不同,影响很大,最明显的就是网卡带不起来。还好我有多功能电表,测量了一下,送的那根线电阻在8Ω左右,而手机充电线在1Ω左右,差距就在这里。所以如果有朋友看到我这篇文章,建议你去买跟好线,很多莫名其妙的错误也会与供电有关的
(20131029)测试过一段时间上面表格的左上角那个方案,因为新内核已经支持了Hub后面的硬盘。但是最终还是换回右下的方案了,纯粹是因为布线想简单些。
而且曾经试过在线的电源切换:原来是通过硬盘反向供电,首先把硬盘umount掉,使用USB充电器通过microUSB供电之后,从电路当中移除硬盘。此时没有掉电,因为电路一直是有5V供电的。但是因为一个误操作导致重启了……
所谓的误操作:因为没事拿了个风扇玩,通过GPIO口直接取电,那次在把3.3V移出之后随便放了,地线没有拔掉,而旁边放的SurfacePro是金属外壳,那根线就碰了一下外壳,然后Pi重启了……后来测量了一下,外壳和Pi的地线的电压差是5V……这个大坑,怪不得有时候胳膊碰外壳会发麻……
杂项
内存卡建议选至少8G的,不一定要装什么东西呢。我装了latex之后就花了1G多,带上系统2G,再有别的软件什么的,现在已经用了5.3G了(20131029依然是这个容量,居然没怎么变,太神奇了!)
总结
这个东西是一个很麻烦的东西,非常零碎的事情都会遇到,只能一点一点积累。目前我主要是用它来下载东西,相当于一个自建的离线文件存储工具。而且有了Samba之后,这个就是一个简易的NAS,花费的话,我买的时候是老版本,花了¥310.05而且是256M的内存。不到40元购买了8G内存卡,花了44买个带供电的Hub,36买了个外壳(20131029必须吐槽,这个壳子真心没用,插GPIO非常不方便,我现在裸奔了),还有之前花20买了个Hub却发现供电那部分不行。还有15买了个HDMI2DVI的线,网线自备,找老吕借了个无线键盘(已经还了,目前大多用SSH了,网上买了个USB键盘以备不时之需,无线键盘信号有问题,会出现按了一下但是一直打字的奇怪问题)。总之花了不少周边设施的钱。
(20131029修改了部分内容,才发现已经9个月没有编辑过了)