在树莓派上创建一个最小化的服务器
创始人
2024-03-02 10:21:45
0

不要急着丢弃那台旧树莓派,这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。

最近,我的 树莓派 上的 microSD 储存卡不工作了。它已经作为服务器持续使用将近两年了,这为我提供了一个开始探索和修正问题的好机会。在初始化安装完成以后,它开始出现一些磁盘方面的问题,并且官方的树莓派操作系统发布了一个有重大意义的更新(并从 Raspbian 更名为 树莓派操作系统 Raspberr Pi OS )。所以我买了一个新的储存卡并开始重装。

尽管树莓派 3B 不是最新的硬件,但对于运行多样化服务的最小化的服务器还是足够的。我认为我之前的安装使用了完整的安装镜像,包括了图形用户界面和许多其他的软件包是没有必要的。

这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。

开始

首先,要为树莓派创建一个新的系统驱动器。这需要两样东西:系统镜像文件和一张 microSD 储存卡。

下载树莓派系统镜像文件

虽然有好几种操作系统可供选择,但我坚持选择树莓派官方支持的系统。

第一步是从 树莓派操作系统 官方网站上下载最新的系统镜像文件到计算机,然后后写入储存卡。他们提供了三个不同的镜像,我选择了精简版。它是最小化的操作系统,只包含基本系统必要的文件,所以它占用最少的磁盘空间和系统内存。(当我下载系统的时候,发布日期是 2020 年 8 月 20 日,但是它现在肯定已经更新了。我觉得不会有什么巨大不同,但是我建议读一下发行说明。)

将树莓派系统镜像写到储存卡

第二步是写下载的系统镜像到储存卡。我的卡之前用过,当我把它插入我的 Linux 桌面计算机之后,它自动加载了两个存在的分区。在我卸载这两个分区前,我不能写入镜像。

要这样做,我必须得用下面的 lsblk 命令来确定它们的路径,经确定,该设备路径为 /dev/mmcblk0

# lsblk -p

我用 umount 命令卸载了这两个分区:

# umount /dev/mmcblk0p2
# umount /dev/mmcblk0p1

一旦分区被卸载,就可以将镜像文件写入到储存卡了。尽管有许多图形化的写入工具,我还是习惯是用古老的 dd 命令:

# dd bs=4M if=/home/alan/Downloads/raspios/2020-08-20-raspios-buster-armhf-lite.img of=/dev/mmcblk0 status=progress conv=fsync

启动树莓派

你只需要一个显示器、键盘、电源适配器来使用树莓派。我还有一个以太网网线用于网络连接,相比无线网络,我更喜欢通过网线来连接一个专用的服务器。

插入储存卡并打开树莓派的电源。一旦成功启动,用默认的缺省密码来进行登录:用户名 pi,密码raspberry

系统设置

按照以下步骤尽可能最小化设置磁盘空间、内存使用等。我建议尽可能的花时间研究每个配置,使之尽量正确。通常有几种应用配置的方法,有些配置文件和选项可能会被丢弃,所以要查看产品文档确保你没有应用过时的配置。

运行 raspi-config

树莓派系统的主设置程序叫做 raspi-config。登录以后立即运行它:

# raspi-config

Raspberry Pi config main window

它出现了一个扩展根文件系统的选项,可以利用储存卡上所有可利用的空间。选择这个选项之后,重启并重新登录。

df 命令来验证储存卡的总容量是否被完全使用:

# df -h

如果你需要设置其他选项,请再次运行 raspi-config。它们中的一些选项可以根据你的偏好和配置进行变化。仔细检查所有这些选项,确定没有任何遗漏。为了获得最佳性能,我建议做以下调整。(我跳过了一些我们没有做任何变化的选项。)

  • 系统选项 System options :在此你可以设置主机名,最好使用完全限定的域名(FQDN)。你也能在这里更改你的密码,这始终是强烈建议的。
  • 接口选项 Interface options :开启 SSH 服务。
  • 性能选项 Performance options :将 GPU 内存减少到最低值(16MB)。
  • 本地化选项 Localization options :选择你的时区、位置、键盘类型。
  • 高级选项 Advanced options :这个选项包括扩展根文件系统的选项。如果你在上面没扩展,一定要在这里做。这样你可以访问储存卡上的所有可用空间。
  • 更新 Update :进入更新选项会立即检查 raspi-config 工具是否有更新。如果更新可用,它将被下载并应用,raspi-config 将在几秒钟后重启。

一旦你在 raspi-config 中完成这些配置,选择“ 完成 Finish ”退出该工具。

手动配置

我还建议几个其他更改,它们全都要求编辑某种配置文件来手动更改设置。

设置静态 IP 地址

一般来说,最好用静态 IP 地址设置服务器。通过 ip 命令来验证网络接口,并设置 IP 地址和你的缺省网关(路由器)和域名服务(DNS)地址:

# ip link
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether b8:27:eb:48:3f:46 brd ff:ff:ff:ff:ff:ff

你还需要知道你的缺省网关和一个及以上的 DNS 服务器地址。将这些信息添加到 /etc/dhcpcd.conf 配置文件中(我强烈建议更改之前对这个文件做一个备份):

# cd /etc
# cp -a dhcpcd.conf dhcpcd.conf.original

按照以下来编辑文件:

# vi dhcpcd.conf

# static IP configuration:
interface eth0
static ip_address=192.168.1.5/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.3 192.168.1.4
关闭 IPv6 协议

除非你有特别需要使用 IPv6,否则你可能倾向于禁用它。为此,你可以创建两个新文件,其中包括一个单行指令,指示 Linux 内核不要使用 IPv6。

首先,创建 /etc/sysctl.d/disable-ipv6.conf 文件,其中包含一行指令:

# cd /etc/sysctl.d
# echo "net.ipv6.conf.all.disable_ipv6 = 1" > disable-ipv6.conf

然后创建 /etc/modprobe.d/blacklist-ipv6.conf 文件包含一行指令:

# cd /etc/modprobe.d
# echo "blacklist ipv6" > blacklist-ipv6.conf
关闭 Wi-Fi、蓝牙和音频

我的服务器的具体用途并不需要蓝牙和音频,同时,它用以太网连接,并不使用无线(Wi-Fi)。除非你计划用它们,否则按照以下步骤来关闭它们。

/boot/config.txt 这个文件做以下更改(再次强调,我建议为这个文件做个备份):

# cd /boot
# cp -a config.txt config.txt.original

加入以下两个指令到文件底部来禁用蓝牙和 Wi-Fi:

  • dtoverlay=disable-bt
  • dtoverlay=disable-wifi

这些 echo 命令就可以完成:

# cd /boot
# echo "dtoverlay=disable-bt" >> config.txt
# echo "dtoverlay=disable-wifi" >> config.txt

要关闭音频,更改 dtparam=audio 的参数为 off。你可以用一个简短的命令 sed 来完成:

# sed -i '/dtparam=audio/c dtparam=audio=off' config.txt

最后一步是禁用 Wi-Fi 服务,用 systemctl mask 命令来操作:

systemctl mask wpa_supplicant.service

如果你不需要其他服务的话,也可以禁用它们:

  • 禁用调制解调器服务:systemctl disable hciuart
  • 禁用 Avahi 守护进程:systemctl disable avahi-daemon.service

最后一步

检查你的内存使用量:

# free -h

我震惊了:我的系统只用了 30MB 的内存。

创建个人账户:建议为登录这台服务器的个人创建用户账户。你能分配他们到 sudo 组允许他们运行管理命令。举个例子,创建一个用户名为 George 的一个账户。

# adduser george
# usermod -a -G adm,sudo,users george 

进行更新:这是一个重要的步骤。应用更新来获取树莓派操作系统的最新修复。

# apt update
# apt full-upgrade

重启:重启你的新服务器是一个好主意:

# systemctl reboot`

安装 Cockpit:你可以在树莓派系统上安装著名的 Linux Web 控制台 Cockpit,它提供了一个基于 HTML 界面来远程管理和监控你的服务器。我最近写了一篇 Cockpit 入门 的文章。用这个命令来安装它

# apt install cockpit

现在我的树莓派服务器已经准备好托管服务器了,我能用它来做 网页服务器VPN 服务器Minetest 等游戏服务器,或者就像我做的基于 Pi-Hole 的广告屏蔽器

保持旧硬件的活力

不论你有什么硬件,仔细地精简并控制你的操作系统和软件包,可以使你的系统资源使用量保持在低水平,以便你获得最大收益。这还可以通过减少试图利用漏洞的潜在恶意行为者可用的服务和软件包数量,提高了安全性。

因此,在你丢弃旧硬件之前,考虑一下能够继续使用的各种可能性。


via: https://opensource.com/article/21/1/minimal-server-raspberry-pi

作者:Alan Formy-Duval 选题:lujun9972 译者:hwlife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

通过Linux串口实现树莓...
目录 一  串口说明 二  USB—TTL模块 ● usb-ttl...
2025-06-01 20:44:00
嵌入式Linux入门必看!...
最近总有人问我:想学嵌入式Linux,到底该买哪块开发板?这问题就...
2025-05-10 12:17:26
不明白为什么在树莓派上使用...
在树莓派上使用join()函数会导致TypeError错误的原因是...
2024-12-26 22:02:04
不明白为什么我的树莓派3没...
要解决树莓派3没有向服务器发送RSSI数据的问题,以下是一些可能的...
2024-12-26 21:30:46
步进电机在工作一段时间后停...
步进电机在工作一段时间后停止工作,尽管代码仍然正常,可能有以下几个...
2024-12-25 21:02:03
笔记本电脑无法通过串口通信...
要解决笔记本电脑无法通过串口通信接收树莓派发送的数据,需要进行以下...
2024-12-15 20:31:00

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...