嘮嘮閑話
最近服務器硬盤故障多,在修復過程中,學習了一些操作,這里做個記錄。本期主要介紹 U盤啟動盤的制作,以及持久化存儲。
U 盤啟動盤
鏡像選擇
Ubuntu 的版本命名遵循 “Adjective Animal” 的模式,即 “形容詞+動物” 名稱,每個版本都有一個官方代號。此外,版本還分為 LTS 和普通版,LTS 是“Long Term Support”的縮寫,意味著這個版本將獲得長期的支持,通常是五年。普通版本通常每六個月發布一次,支持期限為九個月。
寫這篇博客的時候是 2024 年,建議下載至少 20.04 LTS 版本的 Ubuntu 鏡像,這是一個長期支持版本,支持到 2025 年。
-
20.04 LTS “Focal Fossa”
- 發布時間:2020年4月
- “Focal”意味著“中心的”或“焦點”,“Fossa”是馬達加斯加的一種貓科動物,暗示該版本穩定且聚焦于長期支持特性
- 下載地址:https://releases.ubuntu.com/focal/
-
22.04 LTS “Jammy Jellyfish”
- 發布時間:2022年4月
- “Jammy”在英國俚語中意思是“非常幸運的”,“Jellyfish”即水母,可能是指新的長期支持版本在穩定性與新特性引入方面的“幸運平衡”
- 下載地址:https://releases.ubuntu.com/jammy/
下載 Ubuntu 22 鏡像:
wget -c https://releases.ubuntu.com/jammy/ubuntu-22.04.4-desktop-amd64.iso
制作啟動盤
從 Rufus 官網下載 Rufus 工具,該工具僅支持 Windows 系統:
wget -c https://github.com/pbatard/rufus/releases/download/v4.4/rufus-4.4.exe
打開后,選擇鏡像,和 U 盤,然后開始制作啟動盤。
設置持久化分區存儲,這樣在 U 盤上安裝軟件和保存文件都會被保留。如果該 U 盤僅用于系統盤,可將持久分區拉滿。
下圖保留了部分空間用于日常存儲。
注1:如果不設置持久存儲,U 盤時將以只讀模式加載,同時使用 RAM(隨機訪問存儲器)作為臨時的寫入空間。這意味著使用過程中產生的數據(如臨時文件、系統日志等)都存儲在內存中,而不是 U 盤或硬盤上。
注2:Rufus 的持久性功能被明確標記為 EXPERIMENTAL,如果希望更穩定的持久性功能,可以嘗試其他工具,如 UNetbootin。
啟動 U 盤
進 BIOS 的方式和主板相關。通常,開機按 F2 或 Delete 進入 BIOS 設置,找到啟動項,將 U 盤啟動項調整到第一位。
開機后,選擇語言,選擇 “試用 Ubuntu” 進入系統。
輸入 ctrl + alt + t
打開終端,輸入 df -h
查看硬盤信息,可以看到系統目錄 /
由持久化存儲分區 /cow
掛載。
軟件配置
可將 U 盤當作移動的系統盤,隨時隨地使用。
根據需要給 U 盤安裝軟件,參考 Ubuntu 教程(一) | 必備軟件的安裝和配置。
默認的 APT 源不完整,搜索不到 testdisk
等應用,需要修改。以下為 22 版本的 apt 源:
# cd /etc/apt
# cp sources.list sources.list.bak
# nano sources.list
deb http://archive.ubuntu.com/ubuntu jammy main restricted
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted
deb http://archive.ubuntu.com/ubuntu jammy universe
deb http://archive.ubuntu.com/ubuntu jammy-updates universe
deb http://archive.ubuntu.com/ubuntu jammy multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates multiverse
deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted
deb http://archive.ubuntu.com/ubuntu jammy-security universe
deb http://archive.ubuntu.com/ubuntu jammy-security multiverse
更改 apt 源后,開始安裝軟件:
sudo apt update
sudo apt install net-tools vim testdisk curl git network-manager gddrescue lvm2 -y
# 可選,用于 ssh 連接和網絡掛載
sudo apt install openssh-server sshfs -y
sudo apt install python3 python3-pip -y
實測用 Rufus 安裝的 U 盤啟動盤,在啟動時,有可能會重置主機名和默認登錄用戶。因此建議創建新用戶,并在新用戶上配置環境。
網絡設置
Netplan
會讀取 /etc/netplan/
目錄下的所有以 .yaml
結尾的文件來構建整個系統的網絡配置。如果目錄中有多個配置文件,Netplan
會按字母順序合并這些文件。
查看默認 netplan
配置文件:
# cat /etc/netplan/01-network-manager-all.yaml
network:version: 2renderer: NetworkManager
網絡配置由 NetworkManager 服務管理,NetworkManager 是一個動態網絡管理工具,它可以自動檢測和配置網絡連接,使得用戶在大多數情況下無需手動配置網絡。
部分情況需手動修改,可通過以下方法之一來查看系統中所有網絡接口的名稱:
- 執行
ip link
或ip a
命令在終端中查看。 - 使用
ifconfig
命令(如果已安裝net-tools
包)。
舉個例子:
network:ethernets:enp195s0: # 接口名稱,通過 ip link 查看addresses: [192.168.98.26/24]eno2:addresses: # 靜態 IP 地址- 172.23.148.35/24# 網絡配置gateway4: 172.23.148.1nameservers:addresses:- 114.114.114.114search: []version: 2
接口名稱的含義:
en
表示以太網(Ethernet)。o
表示 onboard(板載設備)。s
表示 hotplug slot(熱插槽)。x
表示 MAC地址(通常用于無法通過其他方式分類的情況)。- 數字表示物理位置或者是內部編號,如
eno1
通常指的是第一個板載以太網接口。
修改配置后,執行 sudo netplan apply
使配置生效。
修改日志規則
默認情況下,Ubuntu 系統日志使用 rsyslog
服務來記錄系統事件,按時間輪轉。
cd /etc/logrotate.d
cat rsyslog
內容形如:
/var/log/syslog
/var/log/kern.log
...
/var/log/debug
/var/log/messages
{rotate 4weeklymissingoknotifemptycompressdelaycompresssharedscriptspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}
前邊是指定的日志文件,大括號 {}
內的是對這些文件應用的具體規則:
rotate 4
:保留最新的4個輪替文件。超過這個數量的舊文件會被刪除。weekly
:日志文件將每周輪替一次。missingok
:如果日志文件不存在,不會報錯。notifempty
:如果日志文件為空,不進行輪替。compress
:輪替的日志文件將被壓縮(默認使用gzip)。delaycompress
:壓縮操作將延遲到下一次輪替周期。sharedscripts
:這個選項意味著postrotate
腳本將只執行一次,而不是對每個日志文件執行一次。postrotate
/endscript
:這是一對指令,定義了在日志文件輪替后需要執行的腳本。
比如將 weekly
改為 size 100M
選項,指定日志文件達到一定大小時進行輪替,避免異常占用。
執行 sudo logrotate -f /etc/logrotate.conf
使配置生效。
異常處理
U 盤運行 ddrescue
時,沒限制日志大小,把電腦卡死了,導致重啟一直卡在光標處進不了系統。
在論壇翻到了一個進入命令行系統的方案:Ubuntu boots to a black screen with blinking a underscore character after release upgrade。
開機選擇安全模式,卡在光標處的時候,按 Ctrl + Alt + F1
或 Ctrl + Alt + F3
切換到命令行模式。
最后通過命令行發現了該問題: U 盤的 /var/log/syslog
和 /var/log/kern.log
把持久化內存撐爆了,導致系統無法正常啟動。
清理并刷新系統日志:
cd /var/log
sudo echo > syslog
sudo echo > kern.log
sudo systemctl restart rsyslog
重新輸入 df -h
查看硬盤占用信息。
工作區備份
Rufus 重裝后有兩個分區,一個是只讀的 squashfs,另一個是持久化的 ext4。如果將 U盤用于日常工作,可以用 dd 命令備份硬盤,避免 U 盤損壞丟失工作區。命令如下:
sudo dd if=/dev/sda of=/path/to/backup.img bs=4M status=progress
以上。實踐過程中遇到了其他問題或有新的發現,歡迎討論~