之前一直弄Kali,Ubuntu,aliyunECS之类的,想搞一块本地的玩玩,整了块Raspberry Pi 5
思路:从tf卡启动系统,ssd作为存储盘,使用先电脑热点和XTerminal连接,系统使用Raspberry Pi OS Lite(后来发现Ubuntu不好使),然后使用Sakura frp内网穿透实现公网访问
硬件
树莓派5
首先就是一块Raspberry 5,规格是4核8G。
板子还挺好看
SSD硬盘
买了一块戴尔的拆机硬盘 M.2 2230规格,128G花了68米
PCle to M.2
用的微雪的PCle to M.2 MINI转接板,下图安装2230尺寸SSD时,需要使用铜柱和小螺丝把SSD固定住(捣鼓了半天没搞清楚怎么弄)
风扇
风扇用的是国产的小风扇,13.9米,运行起来也没有声音,还不错
但是感觉到60度才开始降温有点不行,后面尝试调教一下
系统准备
Ubuntu
在这个网站Install Ubuntu on a Raspberry Pi | Ubuntu,下载的是ubuntu-24.04.1-preinstalled-server-arm64+raspi.img.xz
这个文件
烧录器
在这里Raspberry Pi OS – Raspberry Pi下载烧录器
烧录
小坑:刚下载的Ubuntu系统,烧录完之后,没有network config之类的配置,所以使用树莓派烧录器,能够在烧录之前配置好启动后需要如何连接树莓派
首先点第一个按钮选Device,我是Raspberry Pi 5所以选第一个
第二个按钮选操作系统,因为已经下载好了,所以划到最下面选 Use custom,然后直接选择刚才下载的.xz文件就可以,选不了的话,用7z解压,然后选解压出来的.img文件
第三个按钮直接选择插入的空的tf卡即可。
然后会弹出一个自定义设置,Username和密码设置好一会儿用来连接,配置WiFi的时候建议使用电脑打开热点进行连接
第二个页面点击使用密码登录,第三个页面勾选后两个
然后就可以直接烧录了。
因为我使用了PCle接口接入SSD,所以打开烧录好的tf卡,里面有一个config.txt
,在最后添加一行dtparam=pciex1
,表示开启PCle接口,不然接口默认是关闭状态
因为我不用硬盘启动,所以只是用SSD作为存储盘,所以不用做额外的设置,因此我也没有尝试作为启动盘的设置,如果需要使用SSD作为启动盘,则可以参考这篇文章
开机
以上的配置都做好了之后,就可以把tf卡拿下来插到树莓派上了
自动连接WiFi
大概开机1-3分钟左右,树莓派就会自动连接上之前设置的WiFi,因为我是设置的电脑热点,所以很容易看到树莓派在我电脑的局域网内的IP地址
如果使用的是手机热点,那么可以将电脑和树莓派都连接到手机的热点,然后使用LanSee等软件扫描一下当前网段内的设备,扫完之后就能看到电脑和树莓派的两个IP地址,但是建议还是使用电脑的热点
网线连接
我是先用WiFi连接之后再配的网线,所以需要先连上WiFi
eth0就是有线连接,现在就是需要配置一个静态的IP(打码处)
连接
因为我没有买HDMI转接线也没有买树莓派的显示器,所以我使用 Xterminal 连接树莓派,XShell也可,不过些许古老
这样直接用烧录的时候配置的username和密码连接就可以了
进来之后就是这个样子
格式化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
表示第一个分区。
使用sudo fdisk -l
可以查看硬盘信息
如果要删除所有分区并重新分区,使用gdisk
(适用于GPT分区表):
1 | sudo gdisk /dev/nvme0n1 |
- 输入
d
删除分区,按提示操作。 - 输入
w
保存更改。
↑ ↑ ↑这一步我没做,因为不需要
创建新分区:
使用gdisk
或fdisk
来创建新的分区。这里使用gdisk
:
1 | sudo gdisk /dev/nvme0n1 |
- 输入
n
新建分区,按照提示输入分区号码和大小。
到这里,先输入n,后面我直接使用默认的设置,所以不需要另外输入(红框空的),直接回车使用默认,一直到出现第二次Command (? for help)
然后输入 w
保存 ,然后 Y
确认就可以了
到这里是创建了新的分区,还没有格式化新分区
使用以下指令格式化为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绿灯会闪一会儿
挂载
使用 df -h
查看已经有的挂载点,发现硬盘是没有挂载的
使用以下指令创建挂载点
1 | sudo mkdir /mnt/myssd |
使用以下指令挂载SSD硬盘,记得将 /dev/nvme0n1p1
改成自己的硬盘
1 | sudo mount /dev/nvme0n1p1 /mnt/myssd |
当 /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看一下,保证保存成功
到了晚上: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 | cd /mnt/ssd |
然后把当前的缓存目录内容移动到新的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
看到的是这样
frpc
在树莓派上弄一个内网穿透,用的是Sakura Frp | 樱花内网穿透
首先看一下SakuraFrp frpc使用帮助文档
下载
首先看一下系统架构
1 | uname -m |
然后使用 wget
下载对应的版本
算一下MD5
启动
没怎么用过linux,我竟然不知道怎么启动哈哈哈哈,是需要加 ./xxx
,来启动的
1 | chmod +x frpc |
1 | ./frpc |
你别说,这个Sakura frp整的这个TUI还挺高级,应该叫Terminal UI吧
输入秘钥后登录,选择隧道
这样就启动了
因为想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的话下中间这个稳定版就可以了
解压缩一下
1 | sudo tar -zxf nginx-1.26.2.tar.gz |
然后用以下指令配置Nginx
1 | ./configure |
中间报了很多错,因为没有一些库,问问AI把这些库下载上就好了
最终配置好出现这个东西:
然后用以下指令编译
1 | sudo make&&sudo make install |
编译完之后直接就可以启动了
1 | sudo /usr/local/nginx/sbin/nginx |
在本地查看一下网页
ifconfig
看一下局域网内的IP地址
然后如果在公网访问需要再建一个隧道,用来穿透Nginx的80端口
当然,内网穿透隧道可能会变,导致不能一直访问,有一个解决方法是在github上创建一个page(因为已经有一个github的博客),然后再在这个page的script里面写一个重定向就可以了,如果隧道改了,那么直接在github的page上更新就可以了。不过没有备案的话,访问还是会显示不安全,不过也无伤大雅