树莓派使用记录

2016-04-24 02:44

作者:给立乐*
出处:http://spencer-dev.com/2016/04/24/树莓派使用记录
声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。

树莓派使用记录

系统下载和安装

raspbian系统下载地址

用df命令查看当前已挂载的卷:

1
df -h

找到需要写入镜像的卷后,卸载它:

1
diskutil unmount /dev/disk1s1 #(这里可能是其他名字)

使用dd命令将系统镜像写入:

需要特别特别注意disk后的数字,不能搞错!(说明:/dev/disk1s1是分区,/dev/disk1是块设备,/dev/rdisk1是原始字符设备)

1
dd bs=4m if=2016-03-18-raspbian-jessie.img of=/dev/rdisk1

经过几分钟的等待,出现下面的提示,说明 SD 卡刷好了:

1
2
3
462+1 records in
462+1 records out
1939865600 bytes transferred in 163.133220 secs (11891297 bytes/sec)

刷好之后卸载 SD 卡:

1
diskutil unmountDisk /dev/disk1

这时候把 SD 卡插进树莓派,然后接通电源,树莓派就能正常启动进入系统了。


SSH 设置 WIFI

通过配置 /etc/network/interfaces 文件实现:

1
sudo nano /etc/network/interfaces

修改后文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "你的 wifi 名称"
wpa-psk "你的 wifi 密码"
具体各行配置的意思如下:
auto lo //表示使用 localhost
iface eth0 inet dhcp //表示如果有网卡 ech0, 则用 DHCP 获得 IP 地址 (这个网卡是本机的网卡,而不是 WIFI 网卡)
auto wlan0 //表示如果有wlan设备,使用wlan0设备名
allow-hotplug wlan0 //表示wlan设备可以热插拨
iface wlan0 inet dhcp //表示如果有 WLAN 网卡 wlan0 (就是 WIFI 网卡), 则用 DHCP 获得 IP 地址
wpa-ssid "你的 wifi 名称"//表示连接SSID名
wpa-psk "你的 wifi 密码"//表示连接WIFI网络时,使用 wpa-psk 认证方式,认证密码

上述定义后,如果有网线连接,则采取 DHCP 自动连接获得地址。

1
sudo /etc/init.d/networking restart

成功后,用 ifconfig 命令可以看到 wlan0 设备,且有了 IP 地址(已连接)


VNC 远程登录树莓派的图形界面

安装 VNC

用 SSH 登录树莓派后,执行命令:

1
sudo apt-get install tightvncserver

安装好之后请一定先使用此命令设置一个 VNC 密码:
(先输入操作密码两次,然后会询问是否设置一个查看(view-only)密码,按自己喜欢,一般没必要。)

1
vncpasswd

开机自动启动

设置开机启动,需要在 /etc/init.d/ 中创建一个文件。例如 tightvncserver:
(注:启动脚本的名称,有和程序名一致的习惯)

1
sudo nano /etc/init.d/tightvncserver

内容如下:
注:少数玩家默认用户不是pi的请自行更改 USER 变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO
# More details see:
# http://www.penguintutor.com/linux/tightvnc
### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='pi'
### End customization required
eval cd ~$USER
case "$1" in
start)
# 启动命令行。此处自定义分辨率、控制台号码或其它参数。
su $USER -c '/usr/bin/tightvncserver -depth 16 -geometry 800x600 :1'
echo "Starting TightVNC server for $USER "
;;
stop)
# 终止命令行。此处控制台号码与启动一致。
su $USER -c '/usr/bin/tightvncserver -kill :1'
echo "Tightvncserver stopped"
;;
*)
echo "Usage: /etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0

按 Ctrl+X,回答Y(存盘)退出 nano 编辑器。

然后给 tightvncserver 文件加执行权限,并更新开机启动列表。

1
2
sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults

启动 VNC 控制台:

1
vncserver :1

终止 VNC 控制台:

1
tightvncserver -kill :1

查看正在运行的控制台列表:

1
ps ax | grep Xtightvnc | grep -v grep


树莓派支持中文

安装中文字库

安装中文字库

1
sudo apt-get install ttf-wqy-zenhei

安装输入法

安装中文拼音输入法

1
sudo apt-get install scim-pinyin

安装中文五笔输入法

1
sudo apt-get install scim-tables-zh

配置树莓派

1
sudo raspi-config

然后选择 change_locale,在 Default locale for the system environment: 中选择 zh_CN.UTF-8

重启完成好就可以显示中文和使用中文输入法了,切换中文输入法一样也是 ctrl + space。


使用 screen 保留 SSH 会话

1
sudo apt-get install screen

perl: warning: Setting locale failed. 问题

( - - 反正我的树莓派这样设置一下就正常了。。还是不正常的话别怪我。)

执行命令,查看本地的当前设置

1
locale

有可能会出现的情况是 LANGUAGE 和 LC_ALL 为空。所以导致每次执行命令时都会出现:

1
2
3
4
5
6
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MESSAGES = "en_US.UTF-8",
LANG = "en_US.UTF-8"

解决办法:
通过 VNC 连接到树莓派之后,找到桌面右上角的 『Menu』 -> 『Preferences』 -> 『Raspberry Pi Configuration』。
然后在弹出的 『Raspberry Pi Configuration』 窗口中找到 『Localisation』 -> 『Set Locale…』。

接着在弹出的 『Locale』 窗口中的 『Language』 选项中选择 『en(English)』, 『Country』 选项中选择 『US(USA)』,在 『Character Set』 选项中选择 『UTF-8』。

设置完成后,会提示是否重启电脑。选择:是。
电脑重启后重新运行

1
locale

发现结果和上面一样,LANGUAGE 和 LC_ALL 还是为空。
这时候需要手动设置

1
2
3
export LANGUAGE=en_US
export LC_ALL=en_US
source /etc/default/locale

这时候在执行命令

1
locale

会发现最后的结果变成下面的样子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LANG=en_US
LANGUAGE=en_US
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=en_US

这样就正常了。


树莓派开启 FTP 服务并挂载移动硬盘(NTFS)

安装并开启 FTP服务

安装 FTP 服务:

1
sudo apt-get install vsftpd

然后配置 vsftpd 服务:

1
sudo nano /etc/vsftpd.conf

在配置文件中找到以下字段,并设置为下面的例子:

1
2
3
4
5
anonymous_enable=NO # 表示不允许匿名访问。
local_enable=YES # 设定本地用户可以访问。
write_enable=YES # 设定可以进行写操作。
local_umask=022 # 支持断点续传。
write_enable=YES # 要检查一下这个字段,因为有可能开始的时候是被注释掉的。

配置成功后,重启 FTP 服务:

1
sudo service vsftpd restart

挂载移动硬盘(NTFS)

使用命令查看磁盘信息

1
df -lh

找到自己的磁盘,并记下磁盘名称。

例如我自己的移动硬盘磁盘名称:

1
/dev/sda1

如何挂载和卸载

挂载

因为我自己挂载到 home/pi/[User Name] 目录下了。所以这里也以这个举例子。

1
2
3
cd ~
mkdir [你想创建的文件夹名字]
# 例如:mkdir my_folder

挂载移动硬盘到指定目录:

1
2
sudo mount -t ntfs-3g /dev/sda1 /home/pi/[已存在的文件夹]
# 例如:sudo mount -t ntfs-3g /dev/sda1 /home/pi/my_folder
卸载
1
umount /dev/sda1

注:移动硬盘连接到树莓派之后,树莓派有可能会自动挂载。(例如我的树莓派3)。

如果自动挂载了,再输入挂载命令之后就会报错:

1
Mount is denied because the NTFS volume is already exclusively opened.The volume may be already mounted,or another software may use it which could be identified for example by the help of the "fuser"command.

如果出现这个问题,请手动卸载后,重新挂载。


安装 Tomcat 并配置环境变量

下载并安装

首先要去官网下载一个自己所需要的版本的 Tomcat,我下载的是 Tomcat-8.0.33。
(Tomcat 下载地址)[http://tomcat.apache.org/]
从下载选项中选择 tar.gz。
下载完成后,可以通过两种方式解压。

  • 直接用命令行解压:

    1
    tar xzf apache-tomcat-8.0.33.tar.gz
  • 如果已经连接了 VNC 可以直接双击进入目录后拖拽到目标文件夹或右键导出。

配置环境变量

记录好 Tomcat 的安装路径。

编辑系统环境变量配置文件:

1
sudo nano /etc/profile

打开文件后,在文件的末尾加入 Tomcat 的环境变量:

1
2
3
4
TOMCAT=[Tomcat 的安装路径]
# 例如:TOMCAT=/home/pi/dev_tools/apache_tomcat_8/bin
export TOMCAT
export PATH=$PATH:TOMCAT

环境变量配置成功之后,立马执行 startup.sh 或者 shutdown.sh 是没效果的。会提示错误:找不到命令。

需要重启系统( sudo reboot )才可以执行 startup.sh 或 shutdown.sh。(本来我以为执行 source /etc/profile 刷新 profile 文件就行,但是尝试过后发现不可以。)


安装并配置 Nginx

安装 Nginx

1
sudo apt-get install nginx

启动 Nginx:

1
sudo /etc/init.d/nginx start

让 Nginx 重新加载配置:

1
sudo /etc/init.d/nginx reload

配置 Nginx

没有特意配置 Tomcat,只是配置了 Nginx 向 Tomcat 的 8080 端口的代理。
编辑 Nginx 的配置文件

1
sudo vim /etc/nginx/sites-enabled/default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
server_name yourdomain.com;
root /etc/tomcat7/webapps/apple;
proxy_cache one;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}

在 location / { xxx } 里面添加一行:

1
2
3
proxy_pass http://127.0.0.1:8080/[这里可以加自己的项目,以便直接连过去];
# 例如:proxy_pass http://localhost:8080/RaspberryWebServer/;
# 或者只写 proxy_pass http://localhost:8080/; 也可以


系统备份和还原

将树莓派关机后,取下 SD 卡,插入到电脑中(我的是 Mac 所以直接使用命令行操作)。

首先查看 SD 卡信息:

1
df -h

看到自己的 SD 卡之后,记录下挂载路径和名字。

备份

使用命令来备份(可能会时间比较久我的大概备份了一个小时):

1
2
sudo dd if=[SD 卡的名字] | gzip>[备份后的文件存储路径以及文件名]
# 例如:sudo dd if=/dev/disk2 | gzip>~/Documents/raspberry_system_back/system_save_14_04_24.gz

备份完之后,文件是后缀为『.gz』的压缩文件。(我的 SD 卡是 32G 的,生成出来的备份文件是 19.32G,解压后是 31.72G)

还原

还原的操作和装系统其实差不多。

把之前备份下来的系统压缩文件解压后,拿到一个无后缀名的文件。

解压:

1
gzip -d system_save_14_04_24.gz

拿到解压出来的文件后

1
2
sudo diskutil unmount /dev/disk2s1
sudo dd bs=4m if=system_save_14_04_24 of=/dev/rdisk2

成功之后,把 SD 卡插入树莓派,开机。

就可以正常像刚备份过后一样正常使用了。


Comments: