树莓派踩坑备忘录 -- 使用 Linux
目录
一,工欲善其事,必先利其器
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. => (0x00007ffe94bc0000)
libssl.so.1.0. => /lib/x86_64-linux-gnu/libssl.so.1.0. (0x00007f62aacf4000)
libcrypto.so.1.0. => /lib/x86_64-linux-gnu/libcrypto.so.1.0. (0x00007f62aa8b0000)
libc.so. => /lib/x86_64-linux-gnu/libc.so. (0x00007f62aa4e6000)
libdl.so. => /lib/x86_64-linux-gnu/libdl.so. (0x00007f62aa2e2000)
/lib64/ld-linux-x86-.so. (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
结果:
.
├── 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 进行嵌入式开发(小灯)?
欢迎收看下期预告。。。
个人经验不足,如果出现错误,恳请批评指定,笔者马上修改~
平常还碰到哪些坑,可以联系小编补上~
树莓派踩坑备忘录 -- 使用 Linux的更多相关文章
- Xcode11.1 踩坑备忘录
Xcode11.1 踩坑备忘录(mac系统10.15) 1 .环信ChatDemo2.0报错 这是环信ChatDemo2.0报错 NSInteger numberOfBeforeSection = [ ...
- 使用基于Caffe的MobileNet分类踩坑备忘录
首先要帮Caffe甩个锅:Caffe对图像处理进行了很高明的封装,以protobuffer形式组织的搭积木式的网络构建也很灵活方便,这里的坑都是自己腿不好,走路不稳崴进去的. 1. Caffe的一个i ...
- linux上安装redis的踩坑过程
redis用处很广泛,我不再啰嗦了,我按照网上教程想在linux上安装下,开始了踩坑过程,网上买了一个linux centos7.3,滴滴云的,巨坑无比啊,不建议大家用这家的! redis 为4.0, ...
- .NetCore&Linux&Docker&Portainer踩坑历险记
最近有一个云服务器和数据库的迁移任务,踩坑爬坑无数次,觉得必须要记录一下.大家瓜子花生准备好,听我慢慢讲故事#手动笑哭#. 故事背景 公司是做电商业务的,在天猫有几家旗舰店数据量也很大.阿里有一个称为 ...
- kali linux系统配置 避免踩坑
使用kali一个多月,重新安装kail也三次了,下面是安装完系统后,做如下系统配置,必须要做的配置,让自己以后不要踩坑. kail更新系统 1.添加更新源,前面已经介绍,不再多说 2获取更新数据,命令 ...
- Microsoft SQL Server on Linux 踩坑指南
微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ❤️ Linux 打得一众软粉措手不及.但是这还是好事情,Linux 上也有好用的 SQL Server ...
- Linux Mint安装Docker踩坑指南
我家的服务器选用的Linux Mint系统,最近安装Docker的时候踩了一些小坑,但是总体还算顺利. 我们都知道Linux Mint系统是基于Ubuntu的,说实话用起来感觉还是很不错的,安装Doc ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三)
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三) 安装PHP 1.yum方式安装PHP方法同安装apache一样传送门:linux cent ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(一) 一.Linux下安装MySQL 1.下载 下载地址:http://dev.mysql.co ...
随机推荐
- java的classLoader分析与jettty的WebAppClassLoader
classLoader,从名字就可以知道,用于加载class的东西. 我们知道在Java中,源文件是会被编译成class文件的,我们的程序的运行也是需要依赖这些编译成字节码的class文件,而这些字节 ...
- 带你了解CSRF和XSS(二)
什么是CSRF? CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XS ...
- 122. 买卖股票的最佳时机 II
题意描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易( ...
- 网络之NSURLConnection
数据库总结完之后,下面来总结下网络这块,写博客的目的是为了让想学习IOS的不用去培训机构就能学习. // // ViewController.m // UrlConnection // // Crea ...
- SQL Server 数据库基础知识
数据库(Database)是由文件管理系统发展起来的,按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 特点: 尽可能小的冗余度. 具有较高的数据独立性和易扩 ...
- 桥接和nat连接
桥接网络(Bridged Networking) 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,物理网卡和虚拟网卡就相当于处于同一个网 ...
- java设计模式-----22、状态模式
概念: State模式也叫状态模式,是行为设计模式的一种.State模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样. 根据这个概念,我们举个例子 public c ...
- 关于SDN
传统网络: 一:它们是纯分布式控制 二:控制面和转发面在同一个设备中,紧密耦合 三:管理员无法直接操控转发行为 四:网络协议对转发行为的影响是有固定模式的 而SDN的特性: 一:控制面与转发面分离 二 ...
- Python 多线程、多进程 (一)之 源码执行流程、GIL
Python 多线程.多进程 (一)之 源码执行流程.GIL Python 多线程.多进程 (二)之 多线程.同步.通信 Python 多线程.多进程 (三)之 线程进程对比.多线程 一.python ...
- JavaScript高级编程———基本包装类型String和单体内置对象Math
JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...