唠唠闲话
最近服务器硬盘故障多,在修复过程中,学习了一些操作,这里做个记录。本期主要介绍 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: 2
renderer: 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.1
nameservers:
addresses:
- 114.114.114.114
search: []
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 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
前边是指定的日志文件,大括号 {}
内的是对这些文件应用的具体规则:
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
以上。实践过程中遇到了其他问题或有新的发现,欢迎讨论~