Raspberry Pi 初步配置教程

我是从最开始就听说过这个东西,实际下手是12年的10月,不过由于我经常不用Linux,对于它的配置搞的是一塌糊涂。不过我对于它还是没太大期望的,毕竟CPU的频率在那搁着,但是它有GPIO,这就为各种硬件的交互提供了可能。废话不多说,我来分享一下我的配置经历。这里主要是搜网上各大资源,主要是英文资源,所以我写这个也是一种翻译,毕竟看中文还是比看英文顺畅。

首先我列了一个表,代表我想要做哪些事情:为了方便 ,我使用了目录来写……

Contents

我的设置    1

Transmission webui设置    1

VNC设置    1

防火墙,网络端口    1

我的iptables:    1

在网络启动之后自动载入iptables    1

更改ssh设置    1

SSH可能在输入用户名之后响应很慢:    1

屏蔽root登陆    1

更改登陆提示信息:    1

配置Samba    1

网关自动登陆    1

网卡问题    1

有线网卡问题:    1

无线网卡的问题    1

DNS设置    1

不要自动获取DNS    1

自动挂载外接的USB移动硬盘    1

虚拟内存设置    1

omxplayer播放器设置/Raspberry Pi也可以播高清!    1

供电问题    1

杂项    1

总结    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

http://www.ceyhunkirmizitas.net/linux/ssh-connection-wait-long-after-entering-username-ssh-password-prompt-delay/

 

屏蔽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用户是默认用户,可以直接使用。访问文件夹的权限设置为只读。

参考:http://elinux.org/R-Pi_NAS

 

网关自动登陆

由于目前使用的是需要登陆网关才能访问外网的网络,所以如何让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://omxplayer.sconde.net/

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个月没有编辑过了)

posted @ 2013-01-22 18:09  Shi Daochen  阅读(3946)  评论(0编辑  收藏  举报