admin管理员组

文章数量:1550692

唠唠闲话

最近服务器硬盘故障多,在修复过程中,学习了一些操作,这里做个记录。本期主要介绍 U盘启动盘的制作,以及持久化存储。

U 盘启动盘

镜像选择

Ubuntu 的版本命名遵循 “Adjective Animal” 的模式,即 “形容词+动物” 名称,每个版本都有一个官方代号。此外,版本还分为 LTS 和普通版,LTS 是“Long Term Support”的缩写,意味着这个版本将获得长期的支持,通常是五年。普通版本通常每六个月发布一次,支持期限为九个月。

写这篇博客的时候是 2024 年,建议下载至少 20.04 LTS 版本的 Ubuntu 镜像,这是一个长期支持版本,支持到 2025 年。

  1. 20.04 LTS “Focal Fossa”

    • 发布时间:2020年4月
    • “Focal”意味着“中心的”或“焦点”,“Fossa”是马达加斯加的一种猫科动物,暗示该版本稳定且聚焦于长期支持特性
    • 下载地址:https://releases.ubuntu/focal/
  2. 22.04 LTS “Jammy Jellyfish”

    • 发布时间:2022年4月
    • “Jammy”在英国俚语中意思是“非常幸运的”,“Jellyfish”即水母,可能是指新的长期支持版本在稳定性与新特性引入方面的“幸运平衡”
    • 下载地址:https://releases.ubuntu/jammy/

下载 Ubuntu 22 镜像:

wget -c https://releases.ubuntu/jammy/ubuntu-22.04.4-desktop-amd64.iso

制作启动盘

从 Rufus 官网下载 Rufus 工具,该工具仅支持 Windows 系统:

wget -c https://github/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/ubuntu jammy main restricted
deb http://archive.ubuntu/ubuntu jammy-updates main restricted
deb http://archive.ubuntu/ubuntu jammy universe
deb http://archive.ubuntu/ubuntu jammy-updates universe
deb http://archive.ubuntu/ubuntu jammy multiverse
deb http://archive.ubuntu/ubuntu jammy-updates multiverse
deb http://archive.ubuntu/ubuntu jammy-backports main restricted universe multiverse
deb http://archive.ubuntu/ubuntu jammy-security main restricted
deb http://archive.ubuntu/ubuntu jammy-security universe
deb http://archive.ubuntu/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 linkip 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 + F1Ctrl + 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

以上。实践过程中遇到了其他问题或有新的发现,欢迎讨论~

本文标签: 启动盘工作空间Rufus