youngjuning / issues

一寸欢喜 - 怕什么真理无穷,进一寸有一寸的欢喜
https://youngjuning.js.org
44 stars 4 forks source link

树莓派 #190

Closed youngjuning closed 4 years ago

youngjuning commented 5 years ago

一、安装系统

1. 下载系统镜像

下载页面:https://www.raspberrypi.org/downloads/

image

来到下面这个下载页面

image

可以直接点击 raspbian_full_latest.torrent 获取最新版的torrent,然后使用迅雷新建bt任务。ps:官网下载速度太慢!!!请一定使用迅雷!!!

2. 格式化SD卡

推荐使用 SDFormatter 格式化 SD卡,下载链接参见 工具

image

3. 刻录系统

官网有安装指南,如果随着时间的推移本文不再适用,请自行查看:http://t.cn/RD0kCVW

windows

推荐使用 Win32DiskImager 格式化 SD卡,下载链接参见 工具

image

这一步首先选择你的 raspberry.img 系统镜像包,然后选择你的TF卡,点击 写入 就会开始工作了,大概3~4分钟左右。

非windows

Etcher是一种图形化SD卡写入工具,适用于Mac OS,Linux和Windows,是大多数用户最简单的选择。Etcher还支持直接从zip文件中写入图像,无需任何解压缩。用Etcher写你的图像:

youngjuning commented 5 years ago

二、Welcome to Rasberry Pi

将 sd 卡 插到树莓派,连上显示器。开机后看到以下页面,就可以开启初始化配置

image

1. Set Country

418616899988171592

2. Change Password

image

3. Select WiFi Network

image

4. Update Software

image

5. Setup Complete

image

youngjuning commented 5 years ago

三、远程连接树莓派

3.1 VNC 远程桌面连接

1. 开启服务

如图,开启 SSH 和 VNC

image

2. 安装 RealVNC、RealVNC Viewer

RealVNC、RealVNC Viewer 下载链接见工具,前者是服务端,是被连接的,后者是客户端,是主动连接的。

RealVNC

第一次打开请选择 Home subscription(strictly non-commercial use only)

image

RealVNC Viwer

运行 RealVNC Viewer 之后输入树莓派的 IP 地址,通过 ifconfig 命令可以查看。选择连接之后输入树莓派的登录用户名密码,初始用户名 pi,密码为 raspberry。确认之后即可进入树莓派的远程桌面!

image

image

3.2 SSH命令行连接

提示:如果你没有显示器,你就需要登录路由器进行查看树莓派的IP地址,或者在电脑里面扫描局域网中的设备,找到树莓派的IP地址,然后进行SSH连接。

Windows里面需要下载软件,可使用zoc软件(或者Putty)。

注意:初始用户名 pi,密码为 raspberry

image

youngjuning commented 5 years ago

四、分辨率设置

4.1 为何设置分辨率

config.txt 中默认设置在大部分的硬件系统下都能很好地工作,但是视频输出常常出现问题。这个问题产生的主要原因是过扫描(overscan)和欠扫描,尤其是在使用复合视频输出的时候。比如树莓派的debian系统中是自动扫描显示器的,很多都不会满屏显示,这样的话就需要手动设置了,但是在进入系统后是没法设置的。

4.2 实现方式

需要通过配置文件(config.txt)实现。

4.3 实现步骤

打开 config.txt

$ nano /config.txt

1. 修改overscan选项

#去掉下面的注释符来调整overscan(过扫描)。
#如果控制台跑出屏幕,请使用正数。
#如果镶边太大,请使用负数。
overscan_left=10
overscan_right=10
overscan_top=0
overscan_bottom=0

2. 设置分辨率

康佳led32IS97N!

# uncomment to force a specific HDMI mode (here we are forcing 1366*768(DMT) for 康佳led32IS97N!)
hdmi_group=2
hdmi_mode=86
hdmi_ignore_edid=0xa5000080

1080p

# uncomment to force a specific HDMI mode (this will force 1080p)
hdmi_group=2 # DMT分辨率
hdmi_mode=82 # 1080p
hdmi_ignore_edid=0xa5000080 # 不检测HDMI设备的任何信息

4.4 分辨率模式

CEA分辨率

以下是CEA规定的电视规格分辨率。这些分辨率的 hdmi_group=1

hdmi_mode=1 VGA
hdmi_mode=2 480p 60Hz
hdmi_mode=3 480p 60Hz H
hdmi_mode=4 720p 60Hz
hdmi_mode=5 1080i 60Hz
hdmi_mode=6 480i 60Hz
hdmi_mode=7 480i 60Hz H
hdmi_mode=8 240p 60Hz
hdmi_mode=9 240p 60Hz H
hdmi_mode=10 480i 60Hz 4x
hdmi_mode=11 480i 60Hz 4x H
hdmi_mode=12 240p 60Hz 4x
hdmi_mode=13 240p 60Hz 4x H
hdmi_mode=14 480p 60Hz 2x
hdmi_mode=15 480p 60Hz 2x H
hdmi_mode=16 1080p 60Hz
hdmi_mode=17 576p 50Hz
hdmi_mode=18 576p 50Hz H
hdmi_mode=19 720p 50Hz
hdmi_mode=20 1080i 50Hz
hdmi_mode=21 576i 50Hz
hdmi_mode=22 576i 50Hz H
hdmi_mode=23 288p 50Hz
hdmi_mode=24 288p 50Hz H
hdmi_mode=25 576i 50Hz 4x
hdmi_mode=26 576i 50Hz 4x H
hdmi_mode=27 288p 50Hz 4x
hdmi_mode=28 288p 50Hz 4x H
hdmi_mode=29 576p 50Hz 2x
hdmi_mode=30 576p 50Hz 2x H
hdmi_mode=31 1080p 50Hz
hdmi_mode=32 1080p 24Hz
hdmi_mode=33 1080p 25Hz
hdmi_mode=34 1080p 30Hz
hdmi_mode=35 480p 60Hz 4x
hdmi_mode=36 480p 60Hz 4xH
hdmi_mode=37 576p 50Hz 4x
hdmi_mode=38 576p 50Hz 4x H
hdmi_mode=39 1080i 50Hz reduced blanking
hdmi_mode=40 1080i 100Hz
hdmi_mode=41 720p 100Hz
hdmi_mode=42 576p 100Hz
hdmi_mode=43 576p 100Hz H
hdmi_mode=44 576i 100Hz
hdmi_mode=45 576i 100Hz H
hdmi_mode=46 1080i 120Hz
hdmi_mode=47 720p 120Hz
hdmi_mode=48 480p 120Hz
hdmi_mode=49 480p 120Hz H
hdmi_mode=50 480i 120Hz
hdmi_mode=51 480i 120Hz H
hdmi_mode=52 576p 200Hz
hdmi_mode=53 576p 200Hz H
hdmi_mode=54 576i 200Hz
hdmi_mode=55 576i 200Hz H
hdmi_mode=56 480p 240Hz
hdmi_mode=57 480p 240Hz H
hdmi_mode=58 480i 240Hz
hdmi_mode=59 480i 240Hz H

DMT分辨率

以下是计算机显示器使用的分辨率。这些分辨率的 hdmi_group=2

hdmi_mode=1 640x350 85Hz
hdmi_mode=2 640x400 85Hz
hdmi_mode=3 720x400 85Hz
hdmi_mode=4 640x480 60Hz
hdmi_mode=5 640x480 72Hz
hdmi_mode=6 640x480 75Hz
hdmi_mode=7 640x480 85Hz
hdmi_mode=8 800x600 56Hz
hdmi_mode=9 800x600 60Hz
hdmi_mode=10 800x600 72Hz
hdmi_mode=11 800x600 75Hz
hdmi_mode=12 800x600 85Hz
hdmi_mode=13 800x600 120Hz
hdmi_mode=14 848x480 60Hz
hdmi_mode=15 1024x768 43Hz DO NOT USE
hdmi_mode=16 1024x768 60Hz
hdmi_mode=17 1024x768 70Hz
hdmi_mode=18 1024x768 75Hz
hdmi_mode=19 1024x768 85Hz
hdmi_mode=20 1024x768 120Hz
hdmi_mode=21 1152x864 75Hz
hdmi_mode=22 1280x768 reduced blanking
hdmi_mode=23 1280x768 60Hz
hdmi_mode=24 1280x768 75Hz
hdmi_mode=25 1280x768 85Hz
hdmi_mode=26 1280x768 120Hz reduced blanking
hdmi_mode=27 1280x800 reduced blanking
hdmi_mode=28 1280x800 60Hz
hdmi_mode=29 1280x800 75Hz
hdmi_mode=30 1280x800 85Hz
hdmi_mode=31 1280x800 120Hz reduced blanking
hdmi_mode=32 1280x960 60Hz
hdmi_mode=33 1280x960 85Hz
hdmi_mode=34 1280x960 120Hz reduced blanking
hdmi_mode=35 1280x1024 60Hz
hdmi_mode=36 1280x1024 75Hz
hdmi_mode=37 1280x1024 85Hz
hdmi_mode=38 1280x1024 120Hz reduced blanking
hdmi_mode=39 1360x768 60Hz
hdmi_mode=40 1360x768 120Hz reduced blanking
hdmi_mode=41 1400x1050 reduced blanking
hdmi_mode=42 1400x1050 60Hz
hdmi_mode=43 1400x1050 75Hz
hdmi_mode=44 1400x1050 85Hz
hdmi_mode=45 1400x1050 120Hz reduced blanking
hdmi_mode=46 1440x900 reduced blanking
hdmi_mode=47 1440x900 60Hz
hdmi_mode=48 1440x900 75Hz
hdmi_mode=49 1440x900 85Hz
hdmi_mode=50 1440x900 120Hz reduced blanking
hdmi_mode=51 1600x1200 60Hz
hdmi_mode=52 1600x1200 65Hz
hdmi_mode=53 1600x1200 70Hz
hdmi_mode=54 1600x1200 75Hz
hdmi_mode=55 1600x1200 85Hz
hdmi_mode=56 1600x1200 120Hz reduced blanking
hdmi_mode=57 1680x1050 reduced blanking
hdmi_mode=58 1680x1050 60Hz
hdmi_mode=59 1680x1050 75Hz
hdmi_mode=60 1680x1050 85Hz
hdmi_mode=61 1680x1050 120Hz reduced blanking
hdmi_mode=62 1792x1344 60Hz
hdmi_mode=63 1792x1344 75Hz
hdmi_mode=64 1792x1344 120Hz reduced blanking
hdmi_mode=65 1856x1392 60Hz
hdmi_mode=66 1856x1392 75Hz
hdmi_mode=67 1856x1392 120Hz reduced blanking
hdmi_mode=68 1920x1200 reduced blanking
hdmi_mode=69 1920x1200 60Hz
hdmi_mode=70 1920x1200 75Hz
hdmi_mode=71 1920x1200 85Hz
hdmi_mode=72 1920x1200 120Hz reduced blanking
hdmi_mode=73 1920x1440 60Hz
hdmi_mode=74 1920x1440 75Hz
hdmi_mode=75 1920x1440 120Hz reduced blanking
hdmi_mode=76 2560x1600 reduced blanking
hdmi_mode=77 2560x1600 60Hz
hdmi_mode=78 2560x1600 75Hz
hdmi_mode=79 2560x1600 85Hz
hdmi_mode=80 2560x1600 120Hz reduced blanking
hdmi_mode=81 1366x768 60Hz
hdmi_mode=82 1080p 60Hz
hdmi_mode=83 1600x900 reduced blanking
hdmi_mode=84 2048x1152 reduced blanking
hdmi_mode=85 720p 60Hz
hdmi_mode=86 1366x768 reduced blanking
youngjuning commented 5 years ago

五、开启root用户

Raspberry pi 系统中的Raspbian默认用户是 pi 密码为 raspberry

树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的。debian里root账户默认没有密码,但账户锁定。当需要root权限时,由默认账户经由sudo执行。重新开启root账号,可由pi用户登录后,在命令行下执行:

$ sudo passwd root
$ sudo passwd --unlock root
youngjuning commented 5 years ago

六、树莓派更换操作系统软件源

  1. cd /etc/apt/
  2. 打开sources.list,删除所有信息,复制下面的代码进去保存:
    deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi
    deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi
  3. 执行 apt-get upgradeapt-get updateapt-get dist-upgrade
youngjuning commented 5 years ago

七、中文支持

7.1 中文乱码问题

安装字库

$ sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei

刷新字库缓存

$ sudo fc-cache

7.2 中文输入法

输入法框架

$ sudo apt-get install fcitx

中文输入法

$ sudo apt-get install fcitx-sunpinyin # sunpinyin
$ sudo apt-get install fcitx-libpinyin # 或libpinyin
$ sudo apt-get install fcitx-googlepinyin # 或googlepinyin
$ sudo apt-get install fcitx-module-cloudpinyin # 或cloudpinyin
youngjuning commented 5 years ago

八、查看网络信息

8.1 ifconfig

执行下面的命令,系统将返回关于网卡的详细信息,比如协议、Mac地址、IP地址、IPv6地址等等信息。

$ sudo ifconfig

8.2 网络配置

刚装好系统的树莓派,如果没有显示器是不可能直接能连上无线的。

8.3 有线网配置

这就没什么好说的了。在开始之前,请务必先开启路由器的DHCP功能。然后通过网线连接树莓派和路由器。

8.4 无线网配置

直接可视化连接即可,这里要配置的是静态ip

  1. 打开 /etc/dhcpcd.conf
    $ sudo nano /etc/dhcpcd.conf
  2. dhcpcd.conf 后添加以下内容:
    interface eth0
    static ip_address=192.168.2.166/24
    static routers=192.168.2.1
    static domain_name_servers=202.102.152.3 114.114.114.114
  3. 保存后重启树莓派。

8.5 修复断线问题

如果你发现你的设备经常掉线,你可以十分容易的使用一个命令行来修复它(感谢perseus286!)

创建并编辑文件 /etc/modprobe.d/8192cu.conf

$ sudo nano /etc/modprobe.d/8192cu.conf

并且粘贴下列内容,然后使用 sudo reboot 进行重启。

# Disable power savingoptions 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1
youngjuning commented 5 years ago

九、系统维护

9.1 更新软件源

$ sudo apt-get upgrade # 更新软件源,最后会读取软件包列表

9.2 升级软件

$ sudo apt-get update # 更新软件

9.3 全面升级

$ sudo apt-get dist-upgrade

9.4 软件安装

9.5 raspi-config

相当于 dos,由于大部分都可以可视化配置,甚至有些在初始化时已经配置,这里只配置 Expand Filesystem

$ raspi-config

Advanced Options

youngjuning commented 5 years ago

工具

参考链接

可能的坑

SSH服务器拒绝了密码,xshell连不上虚拟机怎么办

sshd的设置不允许root用户用密码远程登录

$ nano /etc/ssh/sshd_config 作如下修改:

- PermitRootLogin prohibit-password
+ PermitRootLogin yes

Xshell4连接,Linux系统中文显示乱码解决办法

youngjuning commented 5 years ago

Docker

1、安装

最快捷

$ curl -sSL https://get.docker.com | sh

国内镜像【未测试】

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

2、安装后日志分析

// docker客户端
Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:57:21 2018
 OS/Arch:           linux/arm
 Experimental:      false
// docker服务端 - 社区版
Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:17:57 2018
  OS/Arch:          linux/arm
  Experimental:     false

// 如果你不想用root账号使用 Docker,你应该把你的用户加入到 “docker” 分组中(安装过程中已经新建了docker分组)
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

// 记住你必须退出并重新登录才能生效
Remember that you will have to log out and back in for this to take effect!

// 警告:将用户添加到“docker”组将授予运行容器的能力,这些容器可用于获取docker主机上的root权限。
WARNING: 
Adding a user to the "docker" group will grant the ability to run containers which can be used to obtain root privileges on the docker host.
// 参考资源
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface for more information.

总结:

  1. 一些版本信息
  2. 不想使用root账号操作docker,就在 "docker" 分组下添加user(重启后生效)

安装docker-compose

使用Docker的准时轻量级开发环境

$ apt-get install docker-compose

2、添加用户到docker分组【可选】

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

$ sudo usermod -aG docker $USER // 一般是 pi
# 如果没有该分组就新建 sudo groupadd docker

退出当前终端并重新登录

3、启动 Docker CE

$ sudo systemctl enable docker
$ sudo systemctl start docker

4、测试 Docker 是否安装正确

$ docker run arm32v7/hello-world

执行以上命令,若能正常输出以下信息,则说明安装成功。

Unable to find image 'arm32v7/hello-world:latest' locally
latest: Pulling from arm32v7/hello-world
ad0f38092cf2: Pull complete 
Digest: sha256:f1ee3cbf1dbeab65f6b542360aca910ce1f6ba0ff31c803fdf08a13f5f846249
Status: Downloaded newer image for arm32v7/hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm32v7)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

5、国内镜像

请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。

Registry Mirrors:
 https://registry.docker-cn.com/

单独支持 树莓派的 docker

Portainer

PortainerDocker引擎或Swarm集群上作为轻量级Docker容器(Docker映像权重小于4MB)运行。因此,在使用Docker的任何计算机上运行容器都是一个命令。

部署Portainer

使用以下Docker命令部署Portainer:

$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

您只需要使用浏览器访问运行portainerDocker引擎的端口9000

注意:该-v /var/run/docker.sock:/var/run/docker.sock选项只能在Linux环境中使用。

参考链接

youngjuning commented 5 years ago

Nginx in Raspbian