在樹莓派上創建一個最小化的伺服器
最近,我的 樹莓派 上的 microSD 儲存卡不工作了。它已經作為伺服器持續使用將近兩年了,這為我提供了一個開始探索和修正問題的好機會。在初始化安裝完成以後,它開始出現一些磁碟方面的問題,並且官方的樹莓派操作系統發布了一個有重大意義的更新(並從 Raspbian 更名為 樹莓派操作系統 )。所以我買了一個新的儲存卡並開始重裝。
儘管樹莓派 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](/data/attachment/album/202203/28/161230t2l8k1h7bx1xbflh.png "Raspberry Pi config main window")
它出現了一個擴展根文件系統的選項,可以利用儲存卡上所有可利用的空間。選擇這個選項之後,重啟並重新登錄。
用 df
命令來驗證儲存卡的總容量是否被完全使用:
# df -h
如果你需要設置其他選項,請再次運行 raspi-config
。它們中的一些選項可以根據你的偏好和配置進行變化。仔細檢查所有這些選項,確定沒有任何遺漏。為了獲得最佳性能,我建議做以下調整。(我跳過了一些我們沒有做任何變化的選項。)
- 系統選項 :在此你可以設置主機名,最好使用完全限定的域名(FQDN)。你也能在這裡更改你的密碼,這始終是強烈建議的。
- 介面選項 :開啟 SSH 服務。
- 性能選項 :將 GPU 內存減少到最低值(16MB)。
- 本地化選項 :選擇你的時區、位置、鍵盤類型。
- 高級選項 :這個選項包括擴展根文件系統的選項。如果你在上面沒擴展,一定要在這裡做。這樣你可以訪問儲存卡上的所有可用空間。
- 更新 :進入更新選項會立即檢查
raspi-config
工具是否有更新。如果更新可用,它將被下載並應用,raspi-config
將在幾秒鐘後重啟。
一旦你在 raspi-config
中完成這些配置,選擇「 完成 」退出該工具。
手動配置
我還建議幾個其他更改,它們全都要求編輯某種配置文件來手動更改設置。
設置靜態 IP 地址
一般來說,最好用靜態 IP 地址設置伺服器。通過 ip
命令來驗證網路介面,並設置 IP 地址和你的預設網關(路由器)和域名服務(DNS)地址:
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive