Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save willwhui/acc6a0ab8fc2f78040f1f822d62a5363 to your computer and use it in GitHub Desktop.
Save willwhui/acc6a0ab8fc2f78040f1f822d62a5363 to your computer and use it in GitHub Desktop.
为树莓派3B安装raspbian+设置初始环境+备份
@willwhui
Copy link
Author

willwhui commented Oct 24, 2017

raspbian的安装步骤

官方说明:https://www.raspberrypi.org/downloads/raspbian/
我选择安装lite版本

设置ssh的方法

官方说明: https://www.raspberrypi.org/documentation/remote-access/ssh/

3. Enable SSH on a headless Raspberry Pi
(在tf卡的boot分区根目录放置一个名字叫做"ssh"的文件,内容为空/或任意内容,然后启动设备就可以了)

默认的用户是pi,密码是raspberry
登录进去,使用passwd命令改掉,以免夜长梦多。
然后设置成ssh免密码登录方式(以密钥公钥验证方式登录,参见这里),安全又方便。

设置wifi的步骤

根据官方参考说明:
https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
打开文件:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

追加wifi配置:

network={
    ssid="testing"
    psk="testingPassword"
}

根据ssid生成psk的方法是:

wpa_passphrase "testing" "testingPassword"

保存上述配置文件,并重启树莓派

sudo reboot

可以发现wifi连接成功。

以前出现过不能顺利成功的情况

做过以下考察和配置。不知今后是否还有必要
https://raspberrypi.stackexchange.com/questions/10251/prepare-sd-card-for-wifi-on-headless-pi

当前版本
pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

错误情况:
不认interface wlan0
sudo ifup wlan0
出错:"unknown interface wlan0"

需要进行补充设置

根据这个:https://www.raspberrypi.org/forums/viewtopic.php?t=191061#p1199674

Make sure your wpa_supplicant.conf is in place then do

sudo nano /etc/network/interfaces

and add

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

to the end of the file. Then do

sudo systemctl enable wpa_supplicant.service

Then reboot.

这样就搞定了!

@willwhui
Copy link
Author

willwhui commented Oct 25, 2017

当前系统时间不对(可能是因为我的子网配置特色导致)

貌似在2018-03-13-raspbian-stretch-lite这个版本中已经内置了正确的时间同步机制了。
因为输入date,可以看到返回的日期和时间是当前的UTC时间。

pi@raspberrypi:~ $ date
Sun Apr  8 05:54:25 UTC 2018

如果这样的话,以下时间同步内容就不用看了。
但是不能肯定是不是因为我上次设定好了Openwrt的时间服务器。
总之只需要设定一下timezone,让日期时间变成本地时间就行了:

sudo dpkg-reconfigure tzdata

systemd-timesyncd(已验证)

这是新的raspbain系统自带的服务。
但是没正常工作。
应该是连接不到标准时间服务器。
命令行输入如下内容(参见Time sync problem):

timedatectl
systemctl status systemd-timesyncd.service

可见类似输出:

...
NTP synchronized: no
...
... Timed out waiting for reply from 209.97.168.88:123  ...
...

意思是无法连接到时间同步服务器
然后根据https://raspberrypi.stackexchange.com/questions/85670/how-to-set-custom-ntp-servers-in-recent-raspbian-stretch-systems

Edit  /etc/systemd/timesyncd.conf , especially the second line

[Time]
NTP=your.servername.goes.here
FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

设置一个可以访问的时间服务器,比如:
NTP=cn.pool.ntp.org
然后

sudo systemctl restart systemd-timesyncd.service

等一会儿就可以了

如果上述方法不行,则安装htpdate试试(已验证)
参见:https://www.raspberrypi.org/forums/viewtopic.php?t=222236#p1364195

sudo apt install htpdate

安装完就可以了。

设置自己的时间服务器完成时间同步(已验证)

先将openwrt设置为时间服务器。
Openwrt作为时间服务器:
https://wiki.openwrt.org/doc/uci/system 搜索ntp,可以找到方法。

再安装ntp进行时间同步
参照:
http://raspberrypi.tomasgreno.cz/ntp-client-and-server.html
将树莓派的ntp服务器设为openwrt的ip就好了。
即,在类似server 0.xx.pool.ntp.org xxx的前面增加一行:

server 10.0.0.1

也可以通过ntpdate手动更新时间

https://firewallengineer.wordpress.com/2013/09/06/openwrt-ntp-server-configuration/
在openwrt里面:
sudo vi /etc/rc.local
将ntpd -l加入在exit 0之前
在树莓派里面:
安装ntpdate
sudo apt-get install ntpdate
设置好每次启动的自动更新时间:
sudo vi /etc/rc.local
将ntpdate 192.168.1.1加入在exit 0之前
这样至少每次启动会更新一下
待长期验证:
不知道这样更新时间是否稳妥。

@willwhui
Copy link
Author

willwhui commented Oct 26, 2017

增加samba服务

vi处理多文件比较麻烦,所以开启samba服务,以便在ubuntu上编辑

参见:
https://www.raspberrypi.org/magpi/samba-file-server/

以共享homeassistant的配置文件目录为例:
首先安装samba

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install samba

然后修改配置文件

sudo vi /etc/samba/smb.conf

在文件末尾追加

[homeassistant]
   comment = Hass config files
   path = /home/homeassistant/.homeassistant
   writeable = yes
   browseable = yes
   guest ok = no
   force user = homeassistant
   force group = homeassistant

注:

  • 因为home assistant的配置文件会有我的私人密码,所以还是把smb的guest访问关掉比较好。就是Guest ok = no这一行。
  • force user, force group是为了在以共享方式访问此文件夹时创建的文件,被强制指派为属于user homeassistant。因为平时将以user pi用户的身份访问这个目录。

然后添加可以访问samba服务的用户:

sudo smbpasswd -a pi

最后,重启服务
sudo /etc/init.d/samba restart
就可以了

@willwhui
Copy link
Author

willwhui commented May 7, 2018

备份

树莓派好像经常把自己的操作系统搞崩溃,必须得备份一下了。

不过,
后来发现并不是经常整个系统崩溃,而是因为挂接了usb硬盘,导致的:
断电重新启动时,如果usb硬盘盒没有通电,那么启动树莓派的时候就不会成功。
失败的原因是:没有找到挂接的硬盘。
解决的办法:启动时保证外挂的硬盘盒通电,处于非休眠状态。

备份和恢复,参见:https://www.raspberrypi.org/forums/viewtopic.php?t=46911#p368698

首先运行,找到自己的SD卡挂载目录:

sudo fdisk -l

通过观察显示的存储空间大小来辅助判断挂载目录名称,比如

/dev/sdb1

然后运行命令以下命令,开始备份:

sudo dd bs=4M if=/dev/sdb | gzip > /home/your_username/image`date +%d%m%y`.gz

通过运行如下命令来刷回SD卡:

sudo gzip -dc /home/your_username/image.gz | dd bs=4M of=/dev/sdb

如果遇到权限不足的问题,按如下命令操作:

sudo su
gzip -dc /home/your_username/image.gz | dd bs=4M of=/dev/sdb

以上操作必须在linux电脑上进行,不能在需要备份的树莓派上操作!

@willwhui
Copy link
Author

willwhui commented May 7, 2018

vi 方向键不正常工作

sudo vi /etc/vim/vimrc.tiny 

将其中的

set compatible

改为

set nocompatible

vi backspace不正常工作

在上述文件中增加:

set backspace=2

@willwhui
Copy link
Author

使用sshfs在本地挂接pi上的目录

首先安装sshfs,如:

sudo apt-get install sshfs

然后把某目录挂接到ubuntu(我的工作电脑)上来:

mkdir ~/mypi
sshfs pi@ip-of-mypi:/home/pi ~/mypi

这样就可以在ubuntu上通过访问~/mypi目录来操作pi上的~/pi目录了。

@willwhui
Copy link
Author

willwhui commented Nov 22, 2018

在lite版的基础上添加图形界面
https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=133691

安装前,运行一下free命令:

~ $ free
              total        used        free      shared  buff/cache   available
Mem:         949448      107968      520540       48104      320940      741744
Swap:        102396           0      102396

安装完成之后:

~ $ free
              total        used        free      shared  buff/cache   available
Mem:         949448      233160      214628       26156      501660      634356
Swap:        102396           0      102396

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment