Skip to content

Linux Mint 22.2 Btrfs + 交换文件 全新安装流程 #27

@syaofox

Description

@syaofox

本流程基于 Linux Mint 22.2 安装程序自动创建 @@home 子卷的特性进行定制。它通过增加 @swap, @cache, 和 @log 三个子卷,确保了 Btrfs 上的 Timeshift 快照排除优化,以及交换文件的最佳性能配置。


第一部分:安装前的准备和分区

  1. 准备安装介质: 下载 Linux Mint 22.2 ISO 文件,并使用 Rufus 或 Ventoy 等工具制作一个可启动的 USB 驱动器。

  2. 启动 Live Session: 从 USB 驱动器启动电脑,选择进入 Linux Mint Live 环境。

  3. 运行分区工具(GParted): 打开 GParted,对目标硬盘进行分区。

分区类型 大小(建议) 文件系统 标志 (Flags) 挂载点(用于安装程序) 作用
EFI 系统分区 (ESP) 512MB ~ 1GB FAT32 boot, esp /boot/efi UEFI 启动所需
Btrfs 主分区 剩余所有空间 btrfs / 系统和所有用户数据

提示: 这一步不需要创建独立的交换分区(Swap Partition)。


第二部分:运行 Linux Mint 安装程序

  1. 启动安装程序: 双击桌面上的 Install Linux Mint 图标。

  2. 选择语言、键盘布局、是否安装多媒体解码器,然后继续。

  3. 选择安装类型: 在分区步骤,选择 Something else(其他选项)进行手动配置。

  4. 配置分区挂载点:

    • 找到您创建的 FAT32 分区:双击它,选择 Use as: EFI System Partition,挂载点为 /boot/efi

    • 找到您创建的 Btrfs 分区:双击它,选择 Use as: Btrfs journaling file system勾选 Format,挂载点为 / (根目录)。

  5. 开始安装: 检查引导加载程序安装位置是否正确,然后点击 Install Now

  6. 完成用户、密码、时区等设置,等待安装完成。安装完成后,选择 Continue Testing(继续测试),不要重启


第三部分:高级 Btrfs 子卷和交换文件配置(关键步骤)

安装完成后,保持在 Live Session 环境中,打开终端,开始配置新子卷和交换文件。

1. 检查和准备工作(定义变量,挂载顶层)

首先,定义您的 Btrfs 分区(例如 /dev/nvme0n1p2),然后挂载 Btrfs 顶层

# 1. 定义 Btrfs 分区变量(请根据您的实际分区调整!)
BTRFS_DEV=/dev/nvme0n1p2

# 2. 确保所有挂载点已卸载并创建 /mnt 目录
cd ~
sudo umount -R /mnt 2>/dev/null
sudo mkdir -p /mnt

# 3. 挂载 Btrfs 顶层到 /mnt
sudo mount $BTRFS_DEV /mnt

# 4. 获取 Btrfs UUID (后面 fstab 必需)
BTRFS_UUID=$(lsblk -no UUID $BTRFS_DEV)
echo "请记住您的 Btrfs UUID: $BTRFS_UUID"

# 5. 创建所有新的子卷
sudo btrfs subvolume create /mnt/@swap
sudo btrfs subvolume create /mnt/@cache
sudo btrfs subvolume create /mnt/@log

# 6. 卸载顶层挂载点 (为下一步操作做准备)
sudo umount /mnt

2. 数据迁移与挂载点修正

将已安装系统(位于 @ 子卷)中的日志和缓存数据迁移到新创建的专用子卷中。

# 1. 挂载 @ 子卷作为根 (已安装系统所在)
sudo mount -o subvol=@ $BTRFS_DEV /mnt

# 2. 创建所有子卷的临时挂载点
sudo mkdir -p /mnt_log /mnt_cache 

# 3. 挂载 @log, @cache 子卷,准备迁移数据
sudo mount -o subvol=@log $BTRFS_DEV /mnt_log
sudo mount -o subvol=@cache $BTRFS_DEV /mnt_cache

# 4. 迁移日志和缓存数据
# 日志和缓存的原始位置在 /mnt/var/log 和 /mnt/var/cache
# ⚠️ 此处确保目录存在且有内容再移动,防止出错
if [ -d /mnt/var/log ] && [ "$(ls -A /mnt/var/log)" ]; then
    sudo mv /mnt/var/log/* /mnt_log/
    sudo rmdir /mnt/var/log
fi

if [ -d /mnt/var/cache ] && [ "$(ls -A /mnt/var/cache)" ]; then
    sudo mv /mnt/var/cache/* /mnt_cache/
    sudo rmdir /mnt/var/cache
fi

# 5. 卸载临时迁移目录
sudo umount /mnt_log
sudo umount /mnt_cache
sudo rm -rf /mnt_log /mnt_cache

3. 配置交换文件与永久挂载点

创建所有永久挂载点目录,并设置交换文件。

# 1. 确保所有永久挂载点目录在 @ 子卷内创建
# Linux Mint 安装程序已创建 @home,此处仅需创建缺失的目录
sudo mkdir -p /mnt/{var/log,var/cache,swap}

# 2. 挂载所有缺失的子卷到 @ 子卷的对应目录中
# 注意:@home 子卷的挂载点是 /mnt/home (Live Session 挂载的 @ 子卷下的 /home 目录)
# Linux Mint 安装程序通常已经挂载了 @home,此处需确认或重新挂载
sudo mount -o subvol=@home $BTRFS_DEV /mnt/home 2>/dev/null 
sudo mount -o subvol=@log $BTRFS_DEV /mnt/var/log
sudo mount -o subvol=@cache $BTRFS_DEV /mnt/var/cache
sudo mount -o subvol=@swap $BTRFS_DEV /mnt/swap

# 3. 创建并初始化 8GB 交换文件
# ⚠️ 路径是 /mnt/swap/swapfile
# 您可以根据内存大小调整 8G 的值
sudo btrfs filesystem mkswapfile --size 8G /mnt/swap/swapfile

# 4. 启用交换文件
sudo swapon /mnt/swap/swapfile

# 5. 验证交换文件是否成功启用
swapon --show
# 预期结果:应显示 /mnt/swap/swapfile 且大小为 8G。

4. 更新 /etc/fstab 文件

编辑新的系统根目录下的 fstab 文件,确保所有子卷和交换文件在重启后自动挂载和启用。

# 1. 编辑 fstab 文件
sudo nano /mnt/etc/fstab
  1. 替换和新增 fstab 内容:

    • 重要: 将文件中原有的 Btrfs 挂载行(//home)使用您获取的 $BTRFS_UUID 替换修改为以下格式,确保使用 relatime,compress=no 选项。

    • 在文件末尾添加新子卷的挂载点和交换文件配置。

    请将下面所有 a94861b2-e36a-405f-9175-982750cea431 替换为您在第 1 步中获取的实际 UUID

    # / (Root Subvolume)
    UUID=$BTRFS_UUID /               btrfs   subvol=@,defaults,relatime,compress=no 0 0
    
    # /boot/efi (保持不变)
    UUID=78C6-1B05  /boot/efi       vfat    umask=0077      0 1
    
    # /home (Home Subvolume)
    UUID=$BTRFS_UUID /home           btrfs   subvol=@home,defaults,relatime,compress=no 0 0
    
    # --- Timeshift 排除子卷 ---
    # /var/log Subvolume
    UUID=$BTRFS_UUID /var/log        btrfs   subvol=@log,defaults,relatime,compress=no 0 0
    
    # /var/cache Subvolume
    UUID=$BTRFS_UUID /var/cache      btrfs   subvol=@cache,defaults,relatime,compress=no 0 0
    
    # /swap Subvolume
    UUID=$BTRFS_UUID /swap           btrfs   subvol=@swap,defaults,noatime,compress=no 0 0
    
    # Swap File
    /swap/swapfile none swap defaults 0 0
    

    注意: @swap 子卷通常建议使用 noatimecompress=no 来保证交换文件性能。

  2. 保存并关闭文件(在 nano 中按 Ctrl+O 保存,Ctrl+X 退出)。


第四部分:完成和首次启动

  1. 卸载所有挂载点:

    cd ~
    sudo umount -R /mnt
  2. 重启系统:

    reboot
  3. 首次启动后验证: 进入新安装的 Linux Mint 系统,打开终端,运行 free -h。确认 Swap 行显示为您设置的交换文件大小(8G),即表示配置成功。

  4. Timeshift 验证: 运行 Timeshift,确认 /home, /var/log, 和 /var/cache 子卷已被正确识别并排除在快照范围之外。

安装脚本

以下是一个整合了改进建议的 shell 脚本,用于在 Linux Mint 22.2 上配置 Btrfs 子卷(@、@home、@swap、@cache、@log)和交换文件。脚本假设在 Live Session 环境中运行,且已完成 Linux Mint 安装和分区步骤(EFI 分区和 Btrfs 主分区)。

configure_btrfs.sh

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions