树莓派踩坑备忘录 -- 使用 Linux

2019年12月15日 2376点热度 0人点赞 1条评论
内容纲要

目录

 一,工欲善其事,必先利其器

二,开机必备

三,更新 apt-get 源与软件搜索

四,安装 .NET Core

五,文件传输

六,搜索与安装软件

七,常见缺少的 xxx.so

八,小技巧与工具

一,工欲善其事,必先利其器

1,下载系统

树莓派官方下载系统地址

https://www.raspberrypi.org/downloads/

注意:

除了下面这三个,其它均为第三方系统。这三个是树莓派适配的自己的 Linux 系统。

NOOBS 是一个系统安装器,同时也是一个系统,适合入门的新手,自定义安装一些东西,不过实在太大了。

别急着下,先看看下一条提示。

2,CPU与系统

上面列举的树莓派官方的系统,全是 32 的,注意注意,是 32位 的!就是说无论你的树莓派 CPU 是 32 还是 64 ,都是 32 位系统!树莓派3 都出很久了,还不出 64位的系统,原因就不解释了。

ARM 、 X86,指的是 CPU  指令集(ARM:简单指令集,X86:复杂指令集),不是指 CPU型号、也不是指 32位/64位。嵌入式领域大部分的芯片是采用 ARM 指令集的。

另外,树莓派的系统,2018-11-13 出的,是 Stretch,基于Debain 9。Openssl 1.1.1,

而 2016 的版本是 Jessis,基于 Debain 8,Openssl 1.0.0。

旧版系统下载地址 http://blog.lxx1.com/raspberrypi-jingxiang

3,刷系统

Win32DiskImager ,这个应该是流行度最高的了,不过笔者推荐使用 rufus

刷进去后,如果发现分配的存储空间不足,可以使用 DiskGenius工具扩展存储。有时候刷入系统,只会使用到几G的存储,剩下的存储空间没有分配。

fdisk -l        #查看系统的存储空间

4, look 系统信息

uname -a        #查看系统版本与Linux内核信息
cat /etc/os-release        #查看系统版本代号、官网地址等
getconf LONG_BIT        #查看系统是32位还是64位
gcc -v                           #gcc 版本

二,开机必备

1,账号密码

树莓派默认账号密码

pi
raspberry

注意,默认没有root。

2,加入root

默认没用 root,所以需要自己加入

sudo passwd root

然后会要求输入两次密码

因为默认不是 root,所以在使用 ssh 远程登陆时,不能直接使用 root 登陆。要先使用 pi 用户。

切换 root 用户

su root

3,开启远程 ssh 功能

/etc/init.d/ssh start    #如果不是 root 用户,要 sudo

查看 电脑 IP

ifconfig

4,开机启动

ssh 可能不是开机自启,让软件开机启动,其它需要自启动的软件也可以放进去。

nano /etc/rc.local

exit 0 这一行前,输入 /etc/init.d/ssh start ,然后

Ctrl + O,回车,Ctrl + X

以上 3 步是保存编辑并退出编辑模式的方法,当然也可以用 vi/vim ,添加后就会开机时自动启动服务了。

5,更新时间

shell 输入命令

date    #查看系统时间

如果显示的时间跟你本地时间不一样,先设置时区(上海)

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

6,使用 wifi

考虑到要使用 wifi,就加上了

如果是 Orange PI 的板子可以使用

nmtui      #弹出网络管理器
#剩下的就是 UI 界面操作了

如果是树莓派

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf  #修改网络配置文件

在后面加上

network={
    ssid="wifi 名称,注意大小写呀"
    psk="wifi 密码,注意大小写"
}
#注意,等号两边不要有空格

重启网络

sudo /etc/init.d/networking restart

使用 ifconfig 获取网络状态或者 curl baidu.com 是否有返回,来判断是否已经连接上wifi。

如果没有连接上,那就重启机器

#以下命令都可以重启,需要 root
reboot
shutdown -h now

三,更新 apt-get 源与软件搜索

 1,更新

apt-get update        #更新apt列表
apt-get upgrade        #更新系统

上面的命令备用

2,修改 apt 源

备用!一般不需要修改!

nano /etc/apt/sources.list

随便你用 nano 还是 vi/vim。

如果你的源,是 https:// 开头的,建议改成 http://

如果你的系统是 Debain

deb http://ftp.debian.org/debian sid main   #官方源

Debain、Raspbain 系统的源-官方文档 https://docs.saltstack.com/en/latest/topics/installation/debian.html

163 开源 Debain 镜像源(非常齐全,i386、amd64、source 架构)  http://mirrors.163.com/.help/debian.html

apt 安装软件、更新源、更新系统出错、无法使用 HTTPS 等问题,请参考笔者的另一篇文章

https://www.cnblogs.com/whuanle/p/10540584.html

四,安装 .NET Core

笔者是学 dotnet 的~

1,下载 .NET Core

打开 https://dotnet.microsoft.com/download,获取相应版本的下载地址。

.NET Core ARM 版本的 SDK/Runtime 是 . tar.gz 后缀

在你的 Linux,打开 /var目录,创建一个 dotnet 的目录(为了安装 .NET Core)。其实安装目录可以随意,笔者建议放在 /var 下吧。

注意:有些特殊情况或特殊应用,要把 .NET Core SDK/Runtime 目录放到  /usr/share/ 下,例如 OpenCvSharp。

mkdir /var/dotnet
cd /var/dotnet

下载 软件包(下面的是 Runtime 2.2.3,根据实际替换下载地址)

wget https://download.visualstudio.microsoft.com/download/pr/280390c7-10ab-46bc-bd62-886751517624/b6b98756380556e39a6a96a920aa4b67/aspnetcore-runtime-2.2.3-linux-arm.tar.gz

PS:如果提示 wget 无法下载 https 链接的文件,加上 参数 --no-cookie --no-check-certificate

wget --no-cookie --no-check-certificate https://地址

笔者的另一篇文章: 嵌入式开发板LInux更新系统、安装软件、下载资源碰到的问题

https://www.cnblogs.com/whuanle/p/10540584.html

2,“安装” .NET Core

ARM(开发板) 上,无论是 SDK 还是 Runtime,其实不算真正的安装。而是把 dotnet 脚本命令放到系统里。 .NET Core 不会驻扎在后台,只有你使用 dotnet 命令时才会出现,平时不会消耗任何资源。

解压 .NET Core 包

tar -vxf xxxxxx压缩包的名称xxxxxx.tar.gz

如果名字太长,可以输入前面几个字母,按 Tab 键自动补全。小技能:Tab 键可以自动补全命令、目录文件名称等。

ls    #查看目录文件
      #或者使用
ls -lah

你可以看到目录下有个 dotnet 文件,把此文件链接到 /usr/bin 下。

ln -s /var/dotnet/dotnet /usr/bin/dotnet -f
#注意养成习惯,有些地方最好填上绝对路径

测试是否成功

dotnet
dotnet --info

如果失败的话,检查是不是路径有问题,先将创建的软链接删除,再重新创建试试。

rm /usr/bin/dotnet        #删除创建的链接

另一种安装方法

export DOTNET_ROOT=/var/dotnet/dotnet
export PATH=$PATH:/var/dotnet/dotnet
#以上命令是创建环境变量

然后试试输入 dotnet 命令测试。

但是,使用 export 命令创建的变量,只能在当前终端使用,重新连接、关机后、使用别的账号,都无法使用,只是是临时的。

这个方法可以自动执行 export 命令

nano ~/.bashrc
#或者
vim ~/.bashrc

在后面加上

export DOTNET_ROOT=/var/dotnet/dotnet
export PATH=$PATH:/var/dotnet/dotnet

这样,只有当前用户才能使用 dotnet。

想全局生效、对所有用户都生效:可以编辑 /etc/bashrc 文件

五,文件传输

1,跨屏传输文件

安装 ZMODEM

apt-get update    #更新apt列表,要经常更新
apt-get install lrzsz    #安装跨屏传输软件

这个软件可以在任何 Linux 系统下使用,只要你拖动需要的文件,即可丢到终端里(会存放到你当前在终端的工作目录),可以拖动多个文件。

那么,如果从 Linux 里获取文件呢?

sz 文件名

执行命令后,就会提示保存文件了,以下命令可以更方便下载多个文件

sz *        #当前目下所有文件
sz *.zip    #当前目录下以.zip结尾的所有文件

是不是很方便呢~快给小编点个赞吧。

 六,搜索与安装软件

输入

apt-get search xxx
#例如
apt-get search openssl

即可搜索某个名称的软件包。

这样可能看着不方便。

Debain 官方地址 https://packages.debian.org/index

在里面搜索相关名称,就可以获取不同CPU、不同系统、不同版本的软件包名称啦,还可以看到软件介绍~

输入 apt-get install xxx 即可安装。

另外,经常会碰到缺少 xxx.so 文件,缺少 xxx 依赖等情况,到这个网站什么搜索,就知道是缺少哪个软件出的问题了。

 

有些小伙伴,刚入门,这里提醒一下。Linux 发行版本很多,有 apt、rpm、yum 等安装软件的方法,Debain、Ubuntu 等是使用 apt 安装,Centos 等使用 yum 命令。

有些小伙伴在网上找教程安装软件时,试了很多次:找不到 yum 命令。。。

 七,常见缺少的 xxx.so

1,Openssl

root@instance:/tmp# ldd /usr/bin/openssl
    linux-vdso.so.1 =>  (0x00007ffe94bc0000)
    libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f62aacf4000)
    libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f62aa8b0000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f62aa4e6000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f62aa2e2000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f62aaf5d000)

安装一些软件或者编译一些软件时,会提示缺少 libssl.so.1.x,libcrypto.so.1.x,

openssl version            #查看openssl版本
ldd /usr/bin/opens        #查看其动态链接库文件
#有时候安装了openssl,但还是提示缺少文件,可能时版本不同~使用上面的命令可以检查一下

查看 openssl 安装目录

which openssl

卸载 openssl

使用

apt remove openssl  #卸载openssl
rm -rf /etc/ssl #删除配置文件 

或者

apt-get purge openssl    #卸载openssl
rm -rf /etc/ssl #删除配置文件 

安装最新的 openssl

apt-get update
apt-get-install openssl

安装特定版本的openssl:

特定版本的 openssl 下载地址 https://oomake.com/download/openssl

下载后放到 Linux 中,随便放到一个目录,建议放到一个目录

#tar zxvf openssl.tar.zip   #要修改压缩包的名称
cd xxxxx              #打开解压后的目录

创建 openssl 目录

mkdir /usr/local/openssl
#此目录用于存放编译后的openssl文件

配置 openssl 源代码

这样会把编译的文件和生成的动态链接库放到指定的目录

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl -Wl,-rpath,/usr/local/openssl/lib shared

安装 openssl

make
make install

创建软链接

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

使用 ldd /usr/bin/openssl 来检查是否正常。出现 libssl.so.1.x 和 libcrypto.so.1.x 说明正常了

 

八,小技巧与工具

1,ZMODEM

上面第 五 已经说了,这里就不列出来了

2,tree

apt-get install tree

可以已树形形式列出目录,试一下输入 tree 命令

指定只列出几层的 “树”

#tree -L N ,N代表层数
tree -L 1
结果:
. ├── aspnetcore
-runtime-2.2.3-linux-arm.tar.gz ├── dotnet ├── host ├── LICENSE.txt ├── shared └── ThirdPartyNotices.txt

 3,alias

假如说,我做了一个.NET Core 软件,要启动这个项目,需要到相应目录下运行 dotnet xxx.dll

如果我想高逼格、公司品牌需要,可以这样

alias 命令名称='dotnet /xxxx.dll'

注意 =号两边没有空格,实例:

alias xfan='dotnet /var/test/ConsoleApp1.dll'

那么,我在终端只输入 xfan 即可 启动项目。如果你不明白 alias 的作用。。。有 Linux 的小伙伴可以看懂下面的内容:

alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

需要注意的是,alias 是临时的,只对当前有效,下次登陆就没用了。

持久化方法:

nano ~/.bashrc

在里面相应位置上,添加你的 alias 命令,例如 alias xfan='dotnet /var/test/ConsoleApp1.dll'

然后,更新文件立即生效

source ~/.bashrc
#或者
. ~/bashrc

注意注意,~ 是当前用户的目录路径,只对某个用户有效。

想全局生效、对所有用户都生效:可以编辑 /etc/bashrc 文件

4,arm 开发板更新 gcc/gcc++ | Debain 更新 gcc,无需编译直接更新 gcc

可以看笔者的另一篇文章 https://www.cnblogs.com/whuanle/p/10546634.html

5,树莓派引脚分布

 6,查看 cpu 、内存等消耗

top

然后就可以看到进程消耗的系统资源

#top -p PID号
#例如
top -p 1236

可以查看特定的进程

按 f 键,可以添加或减少显示的项

  • 按 空格 键选择或取消显示某项
  • 按 Esc 返回监控界面

监控界面,按 e 键,可以更改显示单位,k、m、g、t、p。默认单位 k。

7,关机开机重启、终止命令、后台运行

logout          #退出登陆
exit            #退出登陆
shutdown -h now     #马上关机
shutdown -r now     #马上重启
reboot              #重启

Ctrl + C,终止当前命令

Ctrl + Z,使当前命令后台运行(可以后台多个命令)

终端输入 fg ,可以打开后台运行的命令(前提是这个命令还在运行、没有结束)

当存在多个后台命令时,输入 fg n (n表示序号),可以打开某个后台的命令。

8,挂载 U 盘

把 u盘 插到 Linux 设备上,要挂载才能使用。下面得命令针对 fat文件系统的 u盘。

查看 u盘编号,记下 u盘 的“Device”, 如 /dev/sda1 

fdisk -l

挂载 U盘 (红色部分根据实际情况修改)

#mount -t vfat Device字符串 要挂载到的目录
mount -t vfat /dev/sda1 /mnt/usb

9,生活解压妙招

rm -rf /* 

这条命令一经使用,就会全身放松,减轻疲劳!

rm -rf /* &  #加个 & 后台运行,不知不觉

向不会电脑的人装逼:

#Win下
dir /s
#Linux下
find / *

上面的两个命令是列出电脑的所有文件,只见电脑飞快出现一堆字符串,其实人畜无害。

cd /&& tree

以树的形式列出所有文件,有得等了~可以装逼


笔者的笔记本电脑坏了,寄去商家修理,这周就只发这篇了~

  • 如何使用树莓派的引脚?接 Led 灯、传感器?
  • 如何在 vs 2017 上点亮 Led 灯、使用传感器?
  • 如何在 vs 2017上创建项目在树莓派上调试?
  • 如何使用 .NET Core 进行嵌入式开发(小灯)?
    欢迎收看下期预告。。。

个人经验不足,如果出现错误,恳请批评指定,笔者马上修改~

平常还碰到哪些坑,可以联系小编补上~

痴者工良

高级程序员劝退师

文章评论