香橙派加上Linux初学习

本文最后更新于 2024年7月15日 下午

引言

最近因为看深入了解计算机系统这本书,这本书要求使用 linux 来进行一些实验,所以萌生了想要弄台 Linux电脑的想法,想起来就做。正巧,B 站最近老是给我推送开发板的内容,我是十分感兴趣的,毕竟我想要亲手做一些东西,刚好看到九十九的香橙派 zero 3 可以充当 linux 电脑,于是研究一下就直接买了一套,买的是 1 G 版本的,加上内存卡,电源,扩展板,外壳,连接线,一共不到两百块就拿下了一台 Linux 电脑。

开始组装

就是把外壳给装到开发板上,不过注意引脚,电扇的供电要插到固定的引脚上(有个 5 V 还有个 GND 的引脚,插到这两个面才行。香橙派把对应的 pin 都涂上颜色了,GND 是黑色,供电的 5 V 涂得红色,而风扇的电线也有黑红两色,对应连接就行),因为我安装的时候没有拍照,所以这里就不放图片了。然后就没什么难度,也不需要螺丝就安装好了,没装散热片,不过还好。

最后的结果就是下图所示。

Linux学习-1.jpg

引脚

做一些东西总得学到一些什么东西,所以说我每学到什么新东西,我都会去查一查资料来试图真正弄明白这些东西。不过现在有 AI 了,我用 Github Copilot 来帮我解答问题,chatGpt 4.0 的模型,是真的好用。


在电子和计算机硬件中,"引脚"(Pin)通常指的是连接器或集成电路(IC)的物理接口。这些引脚用于传输电力或数据。

常见的引脚类型:

  1. 电源引脚(Power Pins):这些引脚提供电源给设备或电路。例如,5 V 引脚提供 5 伏特的电压。
  2. 接地引脚(Ground Pins):这些引脚提供电路的公共接地点,也称为零电压参考点。所有的电源和信号都相对于这个接地点进行测量。
  3. 数字输入/输出引脚(Digital I/O Pins):这些引脚可以被编程为输入或输出,用于读取数字信号(如开关状态)或控制数字设备(如 LED 灯)。
  4. 模拟输入/输出引脚(Analog I/O Pins):这些引脚可以读取或输出模拟信号。模拟输入常用于读取模拟传感器(如温度传感器),模拟输出常用于控制设备(如伺服电机)。
  5. 特殊功能引脚:一些引脚具有特殊的功能,如串行通信(如 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

Linux学习-1.png

点击左上角的 Sessions,选择 New session

Linux学习-2.png

点击 SSH,因为咱们要进行 SSH 连接。

Linux学习-3.png

然后就只需要输入你要连接的设备的 ipv 4 地址就行,点击确定,就可以了。

Linux学习-4.png

然后就进入 Linux 系统中了。

Linux学习-5.png

接下来就可以操控电脑了。

获得机器 IP 地址

但请注意,这里有个关键问题,就是如何得到设备的 IP 地址,我只有一台机器,没有屏幕,该怎么得到?

这里因为没有显示器,没法连接蓝牙,于是就先连接网线进行有线连接了。

因为动态主机配置协议(DHCP)导致有线连接与无线连接得到的 IP 地址是不一样的,也就是说,我现在用 ssh 连接上了,之后换成 wifi 连接网络,还是要更换 session 的。

有两个方法

第一种方法

直接看路由器的连接信息,一般都是路由器直接输入 192.168.1.1,直接进入网关,然后看有线连接,直接就能查到设备的 IP 地址。我这里第一次连接的时候没有显示,应该是运营商送的光猫+路由器有点问题(重启后就又能搜到了),所以用了第二种方法。

第二种方法

用 cmd

  1. 获得本网段的地址
1
ipconfig /all
Linux学习-6.png

一查,上图就是我的 IPv 4 地址,网段就是 192.168.1.0

  1. 然后清空 arp 映射表
1
arp -d *

不过好像不清空也不影响,只是比较乱。

而且一般用户没法删,必须的以管理员身份才能使用该指令。

  1. 之后遍历网段里面的所有 IP
1
2
for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.1.%i

  • /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 是循环变量,所以这个命令会依次 ping 192.168.1.1192.168.1.254 的所有地址。
  1. 然后通过 arp -a 命令读取缓存的映射表获取所有与本机连接的设备的 Mac 地址
1
arp -a
  1. 最后比照能确定的 IP 地址找到新加入设备的 IP 地址

这最后一步挺麻烦的,我比照出来了,但是并不是特别确定。 最后还是重启了下路由器,来找到 IP 地址的。

使用 Linux 来连接 wifi

网线离我挺远的,所以还是想要使用 Wifi 连接网络。其实直接在 Server 中敲命令就可以。

1
iwconfig # 查看当前连接的WIFI网络信息,如Bit Rate。

这是我已经连接过的结果:

  1. eth 0:这通常是第一个以太网接口的名称。"eth"是"Ethernet"的缩写,"0"表示这是第一个接口。这个接口通常用于有线网络连接。
  2. wlan 0:这通常是第一个无线网络接口的名称。"wlan"是"Wireless LAN"的缩写,"0"表示这是第一个接口。这个接口通常用于无线网络连接。
  3. lo:这是环回接口(loopback interface)的名称。这个接口主要用于网络服务的测试和本地通信。当你向环回接口发送数据时,数据会立即返回,不会真正发送到网络上。环回接口的 IP 地址通常是 127.0.0.1。

上面是查看已经连接的网,一下才是真的连接没有的 wifi。

1
2
3
nmcli dev wifi # 查找可用的wifi网络
nmcli dev wifi connect 'Your_WiFi_SSID' password 'Your_WiFi_Password'
# 用这个命令来连接可用的网络

这样就结束了,再同上面介绍的,使用新的 Ip 地址来进行 ssh 连接,这时候可以使用下面的指令来查找 Ip 地址。

1
ip addr show # 能够显示IP地址
Linux学习-8.png

最后拔掉网线,大功告成。

对了,有可能会出现权限不够的情况

那就 sudo,前面加一个。它的全称是 "SuperUser DO"。它用于执行需要超级用户(也就是 root 用户)权限的命令。

分页查看器

如果遇到进入一页,底部有什么 lines x-xx,然后可以换页的,那么你就是进入到了分页查看器中,按 Space 键或 Enter 键来查看更多的行;可以按 q 键来退出分页查看器。

正式使用 Linux

总算是进入正式进入 Linux 了,到这里我已经花费了整整两个小时写一篇博客了,总算是认识到写博客的艰难了。

Linux学习-11.png

如果长时间不登录的话,会中断 ssh 连接。

创建新用户

先查看下用户。

1
2
3
4
# 查看当前登录的用户
who
# 查看系统中所有的用户
cat /etc/passwd

现在是用 root 登录,总怕会因为权限高而弄坏设备,毕竟修一次不便宜。 所以创建新用户。

1
2
3
4
5
6
7
# 创建新用户
sudo useradd 新用户的名字

# 为新用户设置密码
sudo passwd 新用户的名字

# 之后就让你输入密码

注意,这里的密码甚至连位数都不显示,就是完全的空白,不过这样的安全性确实是最高的。

之后就切换用户到新建的用户。

1
2
3
4
# 切换到新的用户
su 新用户的名字

# 之后要输入密码

定制终端提示符

之后你会发现跟 root 用户不同,新用户的提示栏只有 $,所以想看看我们是谁就要输入指令。

1
2
# 查看当前用户名
whoami # 也就是who am i,我是谁

在 Linux 中,终端提示符的显示是可以定制的,它通常由环境变量 PS1 控制。root 用户和普通用户的默认提示符可能会有所不同,这是为了提醒用户他们当前是以哪种权限在操作。

想要更改提示栏就要更改文件,这个文件就是 .bashrc 文件(bash 这个 shell 下更改了才有用)。找到对应的 .bashrc 文件,位置在 /home/你的用户名 或者是 ~,这俩是等效的,(~ 是主目录的简写)。

ls xxx -a 表示显示隐藏,这个 -a 可以添加到 ls 后的任何地方。

在 Linux 系统中,~/.bashrc 是一个隐藏的 shell 脚本,当用户运行交互式 bash shell 时,这个脚本会被执行。这个文件通常用于设置用户特定的环境变量,如命令别名、shell 提示符、PATH 变量等。

接着就是用 nano 编辑

1
2
# 使用nano编辑.bashrc
nano ~/.bashrc

进入编辑页面后就输入

1
2
# 设置PS1
PS1="\u@\h:\w\$ "

Nano 编辑器的使用

nano 编辑器中,你可以按下 Ctrl + O 来保存你的更改。这将会打开一个提示,询问你要将文件保存到哪里。默认的位置是你最初打开的文件。

在你按下 Ctrl + O 后,底部会显示一个提示,如 File Name to Write: /home/username/.bashrc。如果你想将文件保存到这个位置,只需按下 Enter 键即可。

然后,你可以使用 Ctrl + X 来退出 nano 编辑器。

总的来说,保存并退出 nano 编辑器的步骤如下:

  1. Ctrl + O 来保存文件。
  2. Enter 来确认文件名。
  3. Ctrl + X 来退出编辑器。
Linux学习-12.png

不同 shell 导致的问题

执行完上面的步骤,发现还是只有一个 $,这是因为上面的操作更改的只是 bash 这种 shell 的提示符,我们可以通过

1
echo $SHELL # Linux区分大小写,你要是输入$shell就什么都不会显示

来查看默认的 shell。

最后发现这个Orangepizero 3_1.0.2_ubuntu_jammy_server_linux 6.1.31.7的默认 shell 位于 bin/sh 中,也就是说使用的应该是类似 dash 的 shell,而非 bash,所以上面的更改就没啥用处。

但是,所幸我们能够更改默认的 shell。

有两个查看 shell 的指令:

1
2
3
4
5
# 查看默认shell
echo $SHELL

# 查看当前shell
ps -p $$

这个 cmd 下面就表示当前的 shell

Linux学习-13.png

接着更改默认 shell:

1
chsh -s /bin/bash # chsh也就是change shell,这里将dash改为了bash

这样默认的 shell 就改为了 bash,而提示符也就显示正确了,正如 PS 1 所设置的那样。

Linux学习-14.png

Linux 的文件目录

文件是对 I/O 设备的抽象

Linux 很好地体现了这一点

1
2
3
4
ls / # 查看所有文件

# 开头有/说明是绝对位置,从root目录开始计算
# 开头没/说明是相对位置,从当前位置开始计算,如果在home输入 ls 我的用户名,它等效于ls /home/我的用户名

显示如下:

Linux学习-9.png

其实就是这张图:

创建文件夹

系统默认不会自动创建对应的 /home/username 目录, 有两种方法

一是在创建用户是添加个 -m

1
2
# 创建新用户并创建主目录
sudo useradd -m 用户的名字

二是如果已经创建了用户,就通过 mkdir 来创建目录,chown 来更改目录所有者

1
2
3
4
5
# 创建主目录
sudo mkdir /home/newuser

# 更改目录所有者
sudo chown 用户的名字 /home/newuser

需要 root 权限。而且如果不更改目录所有者,默认所有者是 root,这时候想要在该目录下创建什么东西,如果是普通用户都是不可以的,因为权限不够。

激动人心的 hello,world!

总算是可以写 hello,world 了,毕竟我花费颇多财力,时间只为这个,这是我从小白成为大神的第一步!

这里使用 c 语言。

首先新建文件夹

1
mkdir ~/myfolder

切换到这个文件夹中

1
cd ~/myfolder

新建 c 文件

1
touch hello.c

然后打开文件, nano 也好,vim 也罢,都行开始敲经典代码。

1
2
3
nano hello.c
# 或者
vim hello.c

这里使用 nano,因为方便。

然后用 gcc 来编译程序

1
gcc hello.c -o hello

这个命令是使用 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

在终端中看到"Hello, World!"的输出。

结果如下:

Linux学习-16.png

Vim 编辑器的使用

使用 vim 打开文件后,你可以按 i 键进入插入模式,然后输入你的代码。当你完成后,按 Esc 键退出插入模式,然后输入 :wq 并按 Enter 键保存你的文件并退出 vim

vim 编辑器中,:wq 是一个命令,用于保存(write)当前的更改并退出(quit)编辑器。这个命令是在命令模式下输入的,你可以通过按 Esc 键进入命令模式。

这个命令的各部分含义如下: - ::这个符号表示你要输入一个命令。在 vim 中,许多命令都是以这个符号开始的。 - w:这个字母代表“write”,也就是保存。这个命令将会保存你对当前文件的所有更改。 - q:这个字母代表“quit”,也就是退出。这个命令将会关闭 vim 编辑器。

所以,:wq 命令的意思是“保存并退出”。这是一个非常常用的 vim 命令。

Vim 与 nano 的区别

vimnano 都是文本编辑器,但它们之间有一些关键的区别:

  1. 易用性nano 是一个简单易用的文本编辑器,它在底部显示所有可用的命令,这对于新手来说非常有用。相比之下,vim 有一个较陡的学习曲线,但一旦你熟悉了它,你就可以非常高效地编辑文本。
  2. 模式vim 使用不同的模式(例如普通模式、插入模式和命令模式)来执行不同的任务。这使得 vim 非常强大,但也可能使新手感到困惑。相比之下,nano 没有模式,所有的操作都是直接执行的。
  3. 自定义和扩展vim 可以通过 .vimrc 配置文件进行高度自定义,你可以使用它来改变 vim 的行为,或者添加新的功能。vim 还有一个活跃的插件生态系统,你可以使用插件来进一步扩展 vim 的功能。相比之下,nano 的自定义和扩展能力较弱。

查看 Linux 中是否安装了某个软件

以 lm-sensors 为例

使用一下指令

1
dpkg -l | grep lm-sensors # 基于debian的系统可以这样

这个命令是由两个子命令组成的,它们通过管道(|)连接在一起。下面是这个命令各部分的详细解释:

  • dpkg -ldpkg 是 Debian 和基于 Debian 的系统(如 Ubuntu)的包管理器。-l 选项用于列出所有已安装的包。所以,dpkg -l 命令的输出是你的系统上所有已安装的包的列表。
  • |:这个符号是管道,它将前一个命令的输出作为后一个命令的输入。在这个例子中,我们正在将 dpkg -l 的输出传递给 grep 命令。
  • grep lm-sensorsgrep 是一个用于文本搜索的工具。它会搜索输入中的每一行,并输出匹配给定模式的行。在这个例子中,我们正在搜索包含 lm-sensors 的行。

所以,dpkg -l | grep lm-sensors 这个命令的意思是“列出所有已安装的包,然后搜索包含 lm-sensors 的行”。如果 lm-sensors 已经被安装,这个命令将会输出一个包含 lm-sensors 的行。

Linux学习-17.png

退出 shell 会话

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 退出当前会话
logout

# 或者
exit

# 或者
Ctrl + D

# 立即关机
sudo shutdown -h now

# 重启系统
sudo reboot

# 请注意,shutdown和reboot命令需要root权限,所以你可能需要使用sudo来运行它们。

笔者的话

这是我之前费了好长时间写的文章,今天找出来了,我有时自己写博客会想,花费这么长的时间去写一些已经会的知识有什么用呢?现在翻出来这篇两个月前写的博客,我发现有些知识我已经忘了,这可能就是写博客的一些最为简单的意义了,帮助别人,也能帮助自己。


香橙派加上Linux初学习
https://saintfore.github.io/2024/07/15/香橙派加上Linux初学习/
作者
Soleil
发布于
2024年7月15日
更新于
2024年7月15日
许可协议