0%

捣鼓一块Raspberry Pi 5

之前一直弄Kali,Ubuntu,aliyunECS之类的,想搞一块本地的玩玩,整了块Raspberry Pi 5

思路:从tf卡启动系统,ssd作为存储盘,使用先电脑热点和XTerminal连接,系统使用Raspberry Pi OS Lite(后来发现Ubuntu不好使),然后使用Sakura frp内网穿透实现公网访问

硬件

树莓派5

首先就是一块Raspberry 5,规格是4核8G。

image-20241123212605050

image-20241123212614501 image-20241123212623530

板子还挺好看

SSD硬盘

买了一块戴尔的拆机硬盘 M.2 2230规格,128G花了68米

PCle to M.2

用的微雪的PCle to M.2 MINI转接板,下图安装2230尺寸SSD时,需要使用铜柱和小螺丝把SSD固定住(捣鼓了半天没搞清楚怎么弄)

image-20241123212633836

风扇

风扇用的是国产的小风扇,13.9米,运行起来也没有声音,还不错

但是感觉到60度才开始降温有点不行,后面尝试调教一下

系统准备

Ubuntu

在这个网站Install Ubuntu on a Raspberry Pi | Ubuntu,下载的是ubuntu-24.04.1-preinstalled-server-arm64+raspi.img.xz这个文件

image-20241123110041657

烧录器

在这里Raspberry Pi OS – Raspberry Pi下载烧录器

image-20241123110310397

烧录

小坑:刚下载的Ubuntu系统,烧录完之后,没有network config之类的配置,所以使用树莓派烧录器,能够在烧录之前配置好启动后需要如何连接树莓派

首先点第一个按钮选Device,我是Raspberry Pi 5所以选第一个

image-20241123110358678

第二个按钮选操作系统,因为已经下载好了,所以划到最下面选 Use custom,然后直接选择刚才下载的.xz文件就可以,选不了的话,用7z解压,然后选解压出来的.img文件

image-20241123110501266

第三个按钮直接选择插入的空的tf卡即可。

然后会弹出一个自定义设置,Username和密码设置好一会儿用来连接,配置WiFi的时候建议使用电脑打开热点进行连接

image-20241123160301494 image-20241123160450294

第二个页面点击使用密码登录,第三个页面勾选后两个

image-20241123160632935 image-20241123160659665

然后就可以直接烧录了。

因为我使用了PCle接口接入SSD,所以打开烧录好的tf卡,里面有一个config.txt,在最后添加一行dtparam=pciex1,表示开启PCle接口,不然接口默认是关闭状态

image-20241123161216127

因为我不用硬盘启动,所以只是用SSD作为存储盘,所以不用做额外的设置,因此我也没有尝试作为启动盘的设置,如果需要使用SSD作为启动盘,则可以参考这篇文章

树莓派5使用PCIe接口连接NVME M.2固态硬盘SSD_树莓派5 ssd-CSDN博客

开机

以上的配置都做好了之后,就可以把tf卡拿下来插到树莓派上了

自动连接WiFi

大概开机1-3分钟左右,树莓派就会自动连接上之前设置的WiFi,因为我是设置的电脑热点,所以很容易看到树莓派在我电脑的局域网内的IP地址

image-20241123162255840

如果使用的是手机热点,那么可以将电脑和树莓派都连接到手机的热点,然后使用LanSee等软件扫描一下当前网段内的设备,扫完之后就能看到电脑和树莓派的两个IP地址,但是建议还是使用电脑的热点

image-20241123162404376.png

网线连接

我是先用WiFi连接之后再配的网线,所以需要先连上WiFi

image-20250316172659390

eth0就是有线连接,现在就是需要配置一个静态的IP(打码处)

连接

因为我没有买HDMI转接线也没有买树莓派的显示器,所以我使用 Xterminal 连接树莓派,XShell也可,不过些许古老

这样直接用烧录的时候配置的username和密码连接就可以了

image-20241123162912549

进来之后就是这个样子

image-20241123163037779

格式化SSD

格式化

因为买的这个SSD是一块全新的(指还没有格式化,但是拆机,所以还是99新吧),也没有硬盘盒,所以直接在树莓派上格式化一下

首先使用lsblk查看已经连接的所有硬盘,下面这个nvme0n1就是接入的SSD硬盘

因为我这里的SSD硬盘的NAME是这个nvme0n1,所以后面我在格式化的时候使用的是/dev/nvme0n1这个路径,你需要改成你对应的,后面格式化新分区的时候会有一个nvme0n1p1,最后这个p1指的就是第一分区

逻辑解释:

1
nvme0n1
  • nvme 是表示 NVMe 硬盘的类型。
  • 0 是设备编号,表示第一个 NVMe 设备。
  • n1 是表示该设备的分区编号。
1
p1
  • p 是分区的标识符(partition),表示该设备的分区。
  • 1 表示第一个分区。
image-20241123163352421

使用sudo fdisk -l可以查看硬盘信息

image-20241123163543063

如果要删除所有分区并重新分区,使用gdisk(适用于GPT分区表):

1
sudo gdisk /dev/nvme0n1
  • 输入d删除分区,按提示操作。
  • 输入w保存更改。

↑ ↑ ↑这一步我没做,因为不需要

创建新分区:

使用gdiskfdisk来创建新的分区。这里使用gdisk

1
sudo gdisk /dev/nvme0n1
  • 输入n新建分区,按照提示输入分区号码和大小。

到这里,先输入n,后面我直接使用默认的设置,所以不需要另外输入(红框空的),直接回车使用默认,一直到出现第二次Command (? for help)

image-20241123164206796

然后输入 w 保存 ,然后 Y 确认就可以了

image-20241123164335109

到这里是创建了新的分区,还没有格式化新分区

使用以下指令格式化为ext4文件系统

1
sudo mkfs.ext4 /dev/nvme0n1p1

当然,也可以格式化成其他文件系统,这里推荐ext4,可以看一下区别

文件系统 优势 劣势
ext4(第四扩展文件系统) - 稳定性和可靠性较高。
- 支持大文件和大容量存储。
- 具备日志功能,能够防止数据丢失。
- 性能良好,适合大多数Linux环境。
- 与某些非Linux系统的兼容性较差。
- 不支持某些现代特性,如快照等。
XFS - 对大文件和大容量存储优化良好,适合处理大数据。
- 支持实时分配和动态扩展。
- 提供高性能和可扩展性。
- 相比于ext4,XFS的文件系统修复较复杂。
- 不适合小文件的处理,性能可能较低。
Btrfs(B-tree文件系统) - 支持快照、压缩和子卷,适合需要高效存储的场景。
- 提供良好的数据完整性和自动纠错功能。
- 灵活的管理工具,使得管理非常方便。
- 相比于ext4,成熟度和稳定性稍欠。
- 在某些情况下性能可能低于ext4或XFS。
FAT32 - 兼容性极高,几乎所有操作系统都可以读取。
- 适合于小容量的存储设备,如U盘和SD卡。
- 单个文件大小限制为4GB,不适合存储大文件。
- 不支持日志功能,数据安全性较低。
exFAT - 兼容性强,适合大文件和大容量存储。
- 不像FAT32那样有4GB的文件大小限制。
- 数据安全性较差,没有日志功能。
- 对于某些Linux系统的原生支持可能较差。
文件系统 格式化指令
ext4 sudo mkfs.ext4 /dev/nvme0n1p1
XFS sudo mkfs.xfs /dev/nvme0n1p1
Btrfs sudo mkfs.btrfs /dev/nvme0n1p1
FAT32 sudo mkfs.vfat /dev/nvme0n1p1
exFAT sudo mkfs.exfat /dev/nvme0n1p1

执行完后,会输出以下指令,然后转接板上的ACT绿灯会闪一会儿

image-20241123165841087

image-20241123212652362

挂载

使用 df -h 查看已经有的挂载点,发现硬盘是没有挂载的

image-20241123170138579

使用以下指令创建挂载点

1
sudo mkdir /mnt/myssd

使用以下指令挂载SSD硬盘,记得将 /dev/nvme0n1p1 改成自己的硬盘

1
sudo mount /dev/nvme0n1p1 /mnt/myssd

image-20241123170625854

/mnt/myssd 路径下出现 lost+found 时,说明创建成功了,再使用 df -h 指令查看,发现已经有了,然后XTerminal右边的监控也显示出来了这块硬盘

开机自动挂载

如果以上都设置好了是没法开机自动挂载的,如果要在每次启动时自动挂载此分区,可以将分区信息添加到 /etc/fstab 文件中

1
sudo vim /etc/fstab

在最后添加一行以下内容,LABEL写不写都行

1
LABEL=mydata /dev/nvme0n1p1 /mnt/myssd ext4 defaults 0 2

使用标签的主要优点是使配置文件更具可读性和灵活性,特别是在设备名称(如 /dev/nvme0n1p1)可能会变化的情况下

修改完后保存,在使用cat看一下,保证保存成功

image-20241123172427976

到了晚上:WTF???

WTF ???连不上WiFi了???。。。哦?连上了!啧,,,连不上SSH???。。。。。难道能。。了。。吗。。Timeout了???

就很离谱,发现连不上ssh,把MicroSD卡拔了插到电脑上,用Linux File Systems for Windows | Paragon Software (paragon-software.com) 挂载上Linux文件系统,找到了netplan和wpa_suppliant,改了WiFi,还是不行,就很纳闷,过了一会,能连上WiFi了,打开XTerminal还是连不上ssh,显示ERROR ssh失败,又换了手机热点,显示Timeout。。。

由于没有网线,也没有MicroUSB转HDMI接口,索性重新烧了个系统。

还是用的树莓派烧录器,直接在里面选了Raspberry Pi OS Lite(这个系统也是without desktop,占资源少),烧完了之后再插上,发现连上了,而且板子发热也小了很多,果然还是对口的系统优化好一点。并且Raspberry Pi OS Lite网络链接情况比Ubuntu稳定太多。

安装的新系统用起来和Ubuntu没啥区别,反正都是基于Debian,不过还是用不惯vi,一直用vim,vi打开文件敲了一通都不知道文件飞哪去了。。

移动apt目录

先别移动,往下看看

想把apt的下载目录放到ssd硬盘里面

首先保证apt没有在运行,也就是没有apt的下载进程就可以

先在ssd中创建一个apt文件夹方便管理

1
2
cd /mnt/ssd
mkdir apt

然后把当前的缓存目录内容移动到新的SSD目录

1
sudo mv /var/cache/apt/archives /mnt/ssd/apt/archives

创建一个链接

1
sudo ln -s /mnt/ssd/archives /var/cache/apt/archives

创建好后在 /var/cache/apt/archives 目录下 ls -l 看到的是这样

image-20241123205127912





后来发现还是不要移动了,出了点问题,又改回去了QAQ







frpc

在树莓派上弄一个内网穿透,用的是Sakura Frp | 樱花内网穿透

首先看一下SakuraFrp frpc使用帮助文档

下载

首先看一下系统架构

1
uname -m
image-20241124095330221

然后使用 wget 下载对应的版本

image-20241124095419276

算一下MD5

image-20241124095445830

启动

没怎么用过linux,我竟然不知道怎么启动哈哈哈哈,是需要加 ./xxx,来启动的

1
chmod +x frpc
1
./frpc

你别说,这个Sakura frp整的这个TUI还挺高级,应该叫Terminal UI吧

image-20241124124639408

输入秘钥后登录,选择隧道

image-20241124124725810

这样就启动了

image-20241124124753469

配置开机自启详见systemd 配置 frpc 服务 | SakuraFrp 帮助文档

因为想van我的世界,所以下一个Java和Spigot用来开服

Minecraft Server

Java

下载jdk21,建议下载jdk17+,我玩的是1.20.1

1
wget https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz

然后去 ~/.bashrc 配置一下java的环境变量,不会从网上搜搜或者问AI

Spigot

先开个原版服务器 SpigotMC - High Performance Minecraft

开服教程去B站搜即可

连接

可以看到还是非常流畅的,但是网络延时有点高,到了将近250ms,可能是树莓派连接的电脑热点,电脑又连了手机热点,并且连得还是内网穿透的地址,所以还有待改进,不过整体还算不错,我自己一个人连进去玩,树莓派的风扇都不转,之后试试多人

Nginx

先下载Nginx nginx: download,Linux的话下中间这个稳定版就可以了

image-20241125132700880

image-20241125132916949

解压缩一下

1
sudo tar -zxf nginx-1.26.2.tar.gz

image-20241125133145485

然后用以下指令配置Nginx

1
./configure

中间报了很多错,因为没有一些库,问问AI把这些库下载上就好了

最终配置好出现这个东西:

image-20241125133709574

然后用以下指令编译

1
sudo make&&sudo make install

编译完之后直接就可以启动了

1
sudo /usr/local/nginx/sbin/nginx
image-20241125162749646

在本地查看一下网页

ifconfig看一下局域网内的IP地址

image-20241125163025047 image-20241125163046438

然后如果在公网访问需要再建一个隧道,用来穿透Nginx的80端口

image-20241125170815139

当然,内网穿透隧道可能会变,导致不能一直访问,有一个解决方法是在github上创建一个page(因为已经有一个github的博客),然后再在这个page的script里面写一个重定向就可以了,如果隧道改了,那么直接在github的page上更新就可以了。不过没有备案的话,访问还是会显示不安全,不过也无伤大雅