香橙派加上Linux初学习
本文最后更新于 2024年7月15日 下午
引言
最近因为看深入了解计算机系统这本书,这本书要求使用 linux 来进行一些实验,所以萌生了想要弄台 Linux电脑的想法,想起来就做。正巧,B 站最近老是给我推送开发板的内容,我是十分感兴趣的,毕竟我想要亲手做一些东西,刚好看到九十九的香橙派 zero 3 可以充当 linux 电脑,于是研究一下就直接买了一套,买的是 1 G 版本的,加上内存卡,电源,扩展板,外壳,连接线,一共不到两百块就拿下了一台 Linux 电脑。
开始组装
就是把外壳给装到开发板上,不过注意引脚,电扇的供电要插到固定的引脚上(有个 5 V 还有个 GND 的引脚,插到这两个面才行。香橙派把对应的 pin 都涂上颜色了,GND 是黑色,供电的 5 V 涂得红色,而风扇的电线也有黑红两色,对应连接就行),因为我安装的时候没有拍照,所以这里就不放图片了。然后就没什么难度,也不需要螺丝就安装好了,没装散热片,不过还好。
最后的结果就是下图所示。
引脚
做一些东西总得学到一些什么东西,所以说我每学到什么新东西,我都会去查一查资料来试图真正弄明白这些东西。不过现在有 AI 了,我用 Github Copilot 来帮我解答问题,chatGpt 4.0 的模型,是真的好用。
在电子和计算机硬件中,"引脚"(Pin)通常指的是连接器或集成电路(IC)的物理接口。这些引脚用于传输电力或数据。
常见的引脚类型:
- 电源引脚(Power Pins):这些引脚提供电源给设备或电路。例如,5 V 引脚提供 5 伏特的电压。
- 接地引脚(Ground Pins):这些引脚提供电路的公共接地点,也称为零电压参考点。所有的电源和信号都相对于这个接地点进行测量。
- 数字输入/输出引脚(Digital I/O Pins):这些引脚可以被编程为输入或输出,用于读取数字信号(如开关状态)或控制数字设备(如 LED 灯)。
- 模拟输入/输出引脚(Analog I/O Pins):这些引脚可以读取或输出模拟信号。模拟输入常用于读取模拟传感器(如温度传感器),模拟输出常用于控制设备(如伺服电机)。
- 特殊功能引脚:一些引脚具有特殊的功能,如串行通信(如 UART,SPI,I 2 C),脉冲宽度调制(PWM)输出,外部中断等。
接地引脚的简称就是 GND
不同类型的 Ubuntu
有两种类型,其实 Linux 都有两种类型 1. Desktop 2. Server
很容易区分,桌面版大一些,就拿 ubuntu 举例,桌面版比服务器版大一倍。
不过桌面版有可视化界面,服务器版就只有敲命令行了。
烧录
插上 tf 卡,打开balenaEtcher,我们用这个软件进行 tf 卡的烧录,选择 Ubuntu 的映像,以 img 结尾的,点击烧录,等一会,然后就 OK 了。
将 tf 卡查到香橙派的 tf 卡槽里面,硬件的准备就结束了。
连接电脑
Hdmi 的分类
Hdmi 有三种类型 1. Hdmi 2. Mini Hdmi 3. Micro Hdmi
我起初认为只有两种,所谓的 minihdmi 和 microhdmi 是一样的,结果是不同的,microhdmi 比 typec 还要小。
SSH 连接电脑
因为我买错线了,没有 microHDMI,所以没办法直接连接,所以就是用 MobaXterm来进行 ssh 远程连接。
什么是 SSH
其实之前我也没有用过,这次是初次接触 SSH。 以下为 AI 的回答。
SSH,全称为 Secure Shell,是一种网络协议,用于在不安全的网络上进行安全的远程登录和其他安全网络服务。SSH 提供了一个安全的通道,使你可以在这个通道上执行命令,传输文件,或者打开图形用户界面。
SSH 的主要特点是强大的安全性。它使用了公钥加密技术来验证远程计算机和允许远程计算机验证用户。这意味着,即使网络被监听,也无法获取到用户的密码或其他敏感信息。
使用 MobaXterm 进行 SSH 连接
首先打开 MobaXterm
点击左上角的 Sessions,选择 New session
点击 SSH,因为咱们要进行 SSH 连接。
然后就只需要输入你要连接的设备的 ipv 4 地址就行,点击确定,就可以了。
然后就进入 Linux 系统中了。
接下来就可以操控电脑了。
获得机器 IP 地址
但请注意,这里有个关键问题,就是如何得到设备的 IP 地址,我只有一台机器,没有屏幕,该怎么得到?
这里因为没有显示器,没法连接蓝牙,于是就先连接网线进行有线连接了。
因为动态主机配置协议(DHCP)导致有线连接与无线连接得到的 IP 地址是不一样的,也就是说,我现在用 ssh 连接上了,之后换成 wifi 连接网络,还是要更换 session 的。
有两个方法
第一种方法
直接看路由器的连接信息,一般都是路由器直接输入 192.168.1.1,直接进入网关,然后看有线连接,直接就能查到设备的 IP 地址。我这里第一次连接的时候没有显示,应该是运营商送的光猫+路由器有点问题(重启后就又能搜到了),所以用了第二种方法。
第二种方法
用 cmd
- 获得本网段的地址
1 |
|
一查,上图就是我的 IPv 4 地址,网段就是 192.168.1.0
- 然后清空 arp 映射表
1 |
|
不过好像不清空也不影响,只是比较乱。
而且一般用户没法删,必须的以管理员身份才能使用该指令。
- 之后遍历网段里面的所有 IP
1 |
|
/L
表示这是一个范围循环。%i
是循环变量,(1,1,254)
定义了循环的范围和步长,意思是从 1 开始,每次增加 1,直到 254。DO
就是做,每次循环都要做,后面跟着要做的事情。ping -w 1 -n 1 192.168.1.%i
:这是在每次循环中执行的命令。ping
是一个网络工具,用于测试网络连接。-w 1
设置了等待每个回应的超时时间为 1 毫秒,-n 1
设置了发送 ping 请求的次数为 1 次。192.168.1.%i
是被 ping 的 IP 地址,%i
是循环变量,所以这个命令会依次 ping192.168.1.1
到192.168.1.254
的所有地址。
- 然后通过 arp -a 命令读取缓存的映射表获取所有与本机连接的设备的 Mac 地址
1 |
|
- 最后比照能确定的 IP 地址找到新加入设备的 IP 地址
这最后一步挺麻烦的,我比照出来了,但是并不是特别确定。 最后还是重启了下路由器,来找到 IP 地址的。
使用 Linux 来连接 wifi
网线离我挺远的,所以还是想要使用 Wifi 连接网络。其实直接在 Server 中敲命令就可以。
1 |
|
这是我已经连接过的结果:
- eth 0:这通常是第一个以太网接口的名称。"eth"是"Ethernet"的缩写,"0"表示这是第一个接口。这个接口通常用于有线网络连接。
- wlan 0:这通常是第一个无线网络接口的名称。"wlan"是"Wireless LAN"的缩写,"0"表示这是第一个接口。这个接口通常用于无线网络连接。
- lo:这是环回接口(loopback interface)的名称。这个接口主要用于网络服务的测试和本地通信。当你向环回接口发送数据时,数据会立即返回,不会真正发送到网络上。环回接口的 IP 地址通常是 127.0.0.1。
上面是查看已经连接的网,一下才是真的连接没有的 wifi。
1 |
|
这样就结束了,再同上面介绍的,使用新的 Ip 地址来进行 ssh 连接,这时候可以使用下面的指令来查找 Ip 地址。
1 |
|
最后拔掉网线,大功告成。
对了,有可能会出现权限不够的情况
那就 sudo
,前面加一个。它的全称是 "SuperUser
DO"。它用于执行需要超级用户(也就是 root 用户)权限的命令。
分页查看器
如果遇到进入一页,底部有什么 lines
x-xx,然后可以换页的,那么你就是进入到了分页查看器中,按
Space
键或 Enter
键来查看更多的行;可以按
q
键来退出分页查看器。
正式使用 Linux
总算是进入正式进入 Linux 了,到这里我已经花费了整整两个小时写一篇博客了,总算是认识到写博客的艰难了。
如果长时间不登录的话,会中断 ssh 连接。
创建新用户
先查看下用户。
1 |
|
现在是用 root 登录,总怕会因为权限高而弄坏设备,毕竟修一次不便宜。 所以创建新用户。
1 |
|
注意,这里的密码甚至连位数都不显示,就是完全的空白,不过这样的安全性确实是最高的。
之后就切换用户到新建的用户。
1 |
|
定制终端提示符
之后你会发现跟 root 用户不同,新用户的提示栏只有
$
,所以想看看我们是谁就要输入指令。
1 |
|
在 Linux 中,终端提示符的显示是可以定制的,它通常由环境变量
PS1
控制。root
用户和普通用户的默认提示符可能会有所不同,这是为了提醒用户他们当前是以哪种权限在操作。
想要更改提示栏就要更改文件,这个文件就是 .bashrc
文件(bash 这个 shell 下更改了才有用)。找到对应的 .bashrc
文件,位置在 /home/你的用户名
或者是
~
,这俩是等效的,(~
是主目录的简写)。
ls xxx -a
表示显示隐藏,这个 -a
可以添加到
ls
后的任何地方。
在 Linux 系统中,
~/.bashrc
是一个隐藏的 shell 脚本,当用户运行交互式 bash shell 时,这个脚本会被执行。这个文件通常用于设置用户特定的环境变量,如命令别名、shell 提示符、PATH 变量等。
接着就是用 nano 编辑
1 |
|
进入编辑页面后就输入
1 |
|
Nano 编辑器的使用
在 nano
编辑器中,你可以按下 Ctrl + O
来保存你的更改。这将会打开一个提示,询问你要将文件保存到哪里。默认的位置是你最初打开的文件。
在你按下 Ctrl + O
后,底部会显示一个提示,如
File Name to Write: /home/username/.bashrc
。如果你想将文件保存到这个位置,只需按下
Enter
键即可。
然后,你可以使用 Ctrl + X
来退出 nano
编辑器。
总的来说,保存并退出 nano
编辑器的步骤如下:
- 按
Ctrl + O
来保存文件。 - 按
Enter
来确认文件名。 - 按
Ctrl + X
来退出编辑器。
不同 shell 导致的问题
执行完上面的步骤,发现还是只有一个
$
,这是因为上面的操作更改的只是 bash 这种 shell
的提示符,我们可以通过
1 |
|
来查看默认的 shell。
最后发现这个Orangepizero 3_1.0.2_ubuntu_jammy_server_linux
6.1.31.7的默认 shell 位于 bin/sh
中,也就是说使用的应该是类似 dash
的 shell,而非
bash
,所以上面的更改就没啥用处。
但是,所幸我们能够更改默认的 shell。
有两个查看 shell 的指令:
1 |
|
这个 cmd 下面就表示当前的 shell
接着更改默认 shell:
1 |
|
这样默认的 shell 就改为了 bash,而提示符也就显示正确了,正如 PS 1 所设置的那样。
Linux 的文件目录
文件是对 I/O 设备的抽象
Linux 很好地体现了这一点
1 |
|
显示如下:
其实就是这张图:
创建文件夹
系统默认不会自动创建对应的 /home/username
目录,
有两种方法
一是在创建用户是添加个 -m
1 |
|
二是如果已经创建了用户,就通过 mkdir
来创建目录,chown
来更改目录所有者
1 |
|
需要 root 权限。而且如果不更改目录所有者,默认所有者是 root,这时候想要在该目录下创建什么东西,如果是普通用户都是不可以的,因为权限不够。
激动人心的 hello,world!
总算是可以写 hello,world 了,毕竟我花费颇多财力,时间只为这个,这是我从小白成为大神的第一步!
这里使用 c 语言。
首先新建文件夹
1 |
|
切换到这个文件夹中
1 |
|
新建 c 文件
1 |
|
然后打开文件, nano 也好,vim 也罢,都行开始敲经典代码。
1 |
|
这里使用 nano,因为方便。
然后用 gcc 来编译程序
1 |
|
这个命令是使用 gcc
编译器来编译 C
程序的命令。下面是这个命令各部分的详细解释:
gcc
:这是 GNU 编译器集合(GNU Compiler Collection)的一部分,是用来编译 C 程序的工具。hello.c
:这是你要编译的源代码文件。在这个例子中,我们正在编译一个名为hello.c
的文件。-o
:这是一个选项,用来指定输出文件的名称。gcc
默认会创建一个名为a.out
的输出文件,但你可以使用-o
选项来改变这个名称。hello
:这是-o
选项的参数,表示输出文件的名称。在这个例子中,我们正在创建一个名为hello
的输出文件。
所以,gcc hello.c -o hello
这个命令的意思是“使用
gcc
编译器来编译 hello.c
文件,并将输出文件命名为 hello
”。
最后文件
1 |
|
在终端中看到"Hello, World!"的输出。
结果如下:
Vim 编辑器的使用
使用 vim 打开文件后,你可以按 i
键进入插入模式,然后输入你的代码。当你完成后,按 Esc
键退出插入模式,然后输入 :wq
并按 Enter
键保存你的文件并退出 vim
。
在 vim
编辑器中,:wq
是一个命令,用于保存(write)当前的更改并退出(quit)编辑器。这个命令是在命令模式下输入的,你可以通过按
Esc
键进入命令模式。
这个命令的各部分含义如下: -
:
:这个符号表示你要输入一个命令。在 vim
中,许多命令都是以这个符号开始的。 -
w
:这个字母代表“write”,也就是保存。这个命令将会保存你对当前文件的所有更改。
- q
:这个字母代表“quit”,也就是退出。这个命令将会关闭
vim
编辑器。
所以,:wq
命令的意思是“保存并退出”。这是一个非常常用的
vim
命令。
Vim 与 nano 的区别
vim
和 nano
都是文本编辑器,但它们之间有一些关键的区别:
- 易用性:
nano
是一个简单易用的文本编辑器,它在底部显示所有可用的命令,这对于新手来说非常有用。相比之下,vim
有一个较陡的学习曲线,但一旦你熟悉了它,你就可以非常高效地编辑文本。 - 模式:
vim
使用不同的模式(例如普通模式、插入模式和命令模式)来执行不同的任务。这使得vim
非常强大,但也可能使新手感到困惑。相比之下,nano
没有模式,所有的操作都是直接执行的。 - 自定义和扩展:
vim
可以通过.vimrc
配置文件进行高度自定义,你可以使用它来改变vim
的行为,或者添加新的功能。vim
还有一个活跃的插件生态系统,你可以使用插件来进一步扩展vim
的功能。相比之下,nano
的自定义和扩展能力较弱。
查看 Linux 中是否安装了某个软件
以 lm-sensors 为例
使用一下指令
1 |
|
这个命令是由两个子命令组成的,它们通过管道(|
)连接在一起。下面是这个命令各部分的详细解释:
dpkg -l
:dpkg
是 Debian 和基于 Debian 的系统(如 Ubuntu)的包管理器。-l
选项用于列出所有已安装的包。所以,dpkg -l
命令的输出是你的系统上所有已安装的包的列表。|
:这个符号是管道,它将前一个命令的输出作为后一个命令的输入。在这个例子中,我们正在将dpkg -l
的输出传递给grep
命令。grep lm-sensors
:grep
是一个用于文本搜索的工具。它会搜索输入中的每一行,并输出匹配给定模式的行。在这个例子中,我们正在搜索包含lm-sensors
的行。
所以,dpkg -l | grep lm-sensors
这个命令的意思是“列出所有已安装的包,然后搜索包含
lm-sensors
的行”。如果 lm-sensors
已经被安装,这个命令将会输出一个包含 lm-sensors
的行。
退出 shell 会话
1 |
|
笔者的话
这是我之前费了好长时间写的文章,今天找出来了,我有时自己写博客会想,花费这么长的时间去写一些已经会的知识有什么用呢?现在翻出来这篇两个月前写的博客,我发现有些知识我已经忘了,这可能就是写博客的一些最为简单的意义了,帮助别人,也能帮助自己。