内容摘要
本文详细介绍飞牛OS系统从大容量磁盘迁移到小容量磁盘的方法,支持BIOS和UEFI两种引导模式。采用Linux原生命令进行迁移,确保系统完整性和可启动性。文章分别说明了BIOS和UEFI引导系统的迁移步骤,包括磁盘分区、文件复制、修改fstab文件和重建引导程序等操作,并提供常见问题的解决方案。迁移前需备份数据,确认系统引导类型,确保目标磁盘有足够空间。
— 此摘要由AI分析文章内容生成,仅供参考。

本文将详细介绍如何将飞牛OS系统从大容量磁盘迁移到小容量磁盘,支持BIOS和UEFI两种引导模式。

系统迁移示意图

系统盘迁移是将操作系统从一个存储设备完整复制到另一个存储设备的过程。在飞牛OS中,由于某些工具(如DG)克隆后可能无法正常引导,本教程采用Linux原生命令进行迁移,确保系统的完整性和可启动性。

  • 无需PE环境:直接在系统终端中操作
  • 支持两种引导:兼容BIOS和UEFI引导模式
  • 数据完整性:使用rsync确保文件完整复制
  • 引导修复:自动重建引导程序

重要提醒

迁移过程涉及磁盘分区和系统文件操作,请务必备份重要数据。错误的操作可能导致系统无法启动或数据丢失。

  • 源磁盘:当前运行飞牛OS的系统盘
  • 目标磁盘:用于迁移的新磁盘(容量可以小于源盘,但需大于已使用空间)
  • 可用接口:足够的SATA或其他接口连接两块磁盘

  • 飞牛OS系统正常运行
  • SSH访问权限
  • 管理员权限

在开始迁移之前,需要确认当前系统的引导类型,这将决定后续的操作流程。

通过SSH终端执行以下命令:

根据输出结果判断引导类型:

引导类型 特征 说明
BIOS引导 系统盘第一分区没有挂载任何目录 传统BIOS引导模式
UEFI引导 系统盘第一分区挂载在/boot/efi 现代UEFI引导模式

识别要点

  • sda2通常是系统根目录(后面有反斜杠/标识)
  • UEFI系统会有单独的EFI分区挂载到/boot/efi

  • 引导类型:BIOS引导
  • 分区特点:不需要单独的EFI分区,克隆过程相对简单
  • 示例:将sda迁移到sdb

BIOS引导系统的迁移包含以下主要步骤:

  1. 给目标磁盘进行分区
  2. 挂载新磁盘以便后续操作
  3. 使用rsync动态复制系统文件
  4. 修改fstab文件系统标识
  5. 重新生成GRUB引导文件

  1. 目标磁盘分区

    磁盘标识确认

    以下命令中的sdbsda需要根据实际情况修改为目标磁盘和源磁盘的设备名。

    进入SSH终端,创建分区:

    # 进入fdisk分区工具
    sudo fdisk /dev/sdb

    分区操作步骤:

    • 输入n创建新分区
    • 输入p选择主分区
    • 连续按回车键使用默认设置
    • 输入w保存分区表并退出

    BIOS分区操作

  2. 格式化目标分区

    将新创建的分区格式化为ext4文件系统:

    # 格式化为ext4文件系统
    sudo mkfs.ext4 /dev/sdb1

    格式化分区

  3. 挂载并复制系统文件

    挂载目标分区并复制系统文件:

    # 挂载新磁盘到/mnt目录
    sudo mount /dev/sdb1 /mnt
    
    # 使用rsync复制系统文件(约需10分钟)
    sudo rsync -q -avxHAX --progress 
      --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found"} 
      / /mnt/

    复制说明

    • 根据系统大小,复制过程约需10分钟
    • 期间控制台可能无响应,属于正常情况
    • 指令执行完毕后不会有任何输出
  4. 修改文件系统标识

    获取目标磁盘的UUID并更新fstab文件:

    # 查看目标磁盘的UUID
    sudo blkid /dev/sdb1

    复制UUID等号后面的字符串,然后编辑fstab文件:

    # 编辑fstab文件
    sudo nano /mnt/etc/fstab

    编辑fstab文件

    保存方法

    按键盘Ctrl+X,再输入y,然后按回车键保存。

  5. 重建GRUB引导

    绑定系统目录并进入chroot环境:

    # 绑定必要的系统目录
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    sudo mount --bind /run /mnt/run

    执行说明

    全部命令可以一次性复制粘贴到终端执行,正常情况下不会有任何输出。

    进入目标系统并重建引导:

    # 进入chroot环境
    sudo chroot /mnt
    
    # 安装GRUB引导程序
    grub-install /dev/sdb
    
    # 生成GRUB配置文件
    grub-mkconfig -o /boot/grub/grub.cfg

    GRUB安装过程

    完成后输入exit或按Ctrl+D退回原系统。

  6. 取消挂载

    清理挂载点:

    # 递归卸载所有挂载点(约需1分钟)
    sudo umount -R /mnt

    完成标志

    执行完毕后不会有任何输出,此时BIOS系统克隆已完成。

重启系统并进入BIOS,将引导顺序切换到目标磁盘,或在关机状态下移除原系统盘。

BIOS迁移验证

可以看到系统根目录已经成功迁移到新磁盘。

  • 引导类型:UEFI引导
  • 分区特点:需要单独的EFI引导分区,步骤相对复杂
  • 示例:将sda迁移到sdb

UEFI引导系统需要单独分区EFI引导盘,迁移过程包含以下步骤:

  1. 给目标磁盘进行分区(EFI分区+系统分区)
  2. 挂载新磁盘以便后续操作
  3. 复制EFI引导文件
  4. 复制系统文件
  5. 修改fstab文件系统标识
  6. 重新生成GRUB引导文件

设备标识

以下命令中的sdbsda需要根据实际情况分别修改为目标磁盘和源磁盘的设备名。

  1. 目标磁盘分区

    为UEFI系统创建EFI分区和系统分区:

    # 进入fdisk分区工具
    sudo fdisk /dev/sdb

    分区操作步骤:

    创建EFI分区:

    • 输入np → 回车 → 回车 → +94My

    修改分区类型为EFI:

    创建系统分区:

    • 输入np → 回车 → 回车 → 回车 → w

    UEFI分区操作

  2. 格式化分区

    分别格式化EFI分区和系统分区:

    # 格式化EFI分区为FAT32
    sudo mkfs.fat -F32 /dev/sdb1
    
    # 格式化根分区为ext4
    sudo mkfs.ext4 /dev/sdb2

    UEFI分区格式化

  3. 复制EFI引导文件

    首先复制EFI分区的内容:

    # 创建挂载点目录
    sudo mkdir -p /mnt/old-efi /mnt/new-efi
    
    # 挂载EFI分区
    sudo mount /dev/sda1 /mnt/old-efi
    sudo mount /dev/sdb1 /mnt/new-efi
    
    # 复制EFI文件
    sudo rsync -av /mnt/old-efi/ /mnt/new-efi/
    
    # 卸载分区
    sudo umount /mnt/old-efi /mnt/new-efi

    EFI文件复制

  4. 复制系统文件

    复制系统根分区的内容:

    # 创建挂载点并挂载根分区
    sudo mkdir -p /mnt/sdb2
    sudo mount /dev/sdb2 /mnt/sdb2
    
    # 复制系统文件(排除临时目录)
    sudo rsync -aAXv -q 
      --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} 
      / /mnt/sdb2/

    复制说明

    • 根据系统大小,复制过程约需10分钟
    • 期间控制台可能无响应,属于正常情况
    • 指令执行完毕后不会有任何输出
  5. 修改文件系统标识

    获取两个分区的UUID并更新fstab:

    # 查看两个分区的UUID
    sudo blkid /dev/sdb1 /dev/sdb2

    UUID说明

    需要复制两个分区的UUID(等号后面的字符串)

    编辑fstab文件:

    # 编辑fstab文件
    sudo nano /mnt/sdb2/etc/fstab

    UEFI fstab编辑

    保存方法

    按键盘Ctrl+X,再输入y,然后按回车键保存。

  6. 重建UEFI引导

    挂载分区并绑定系统目录:

    # 挂载根分区和EFI分区
    sudo mount /dev/sdb2 /mnt/sdb2
    sudo mount /dev/sdb1 /mnt/sdb2/boot/efi
    
    # 绑定必要的系统目录
    sudo mount --bind /dev /mnt/sdb2/dev
    sudo mount --bind /dev/pts /mnt/sdb2/dev/pts
    sudo mount --bind /proc /mnt/sdb2/proc
    sudo mount --bind /sys /mnt/sdb2/sys
    sudo mount --bind /run /mnt/sdb2/run

    挂载报错

    这里可能会有挂载报错的提示,可以忽略。

    进入目标系统并重建UEFI引导:

    # 进入chroot环境
    sudo chroot /mnt/sdb2
    
    # 安装UEFI引导程序
    grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sdb
    
    # 更新GRUB配置
    update-grub

    完成后输入exit或按Ctrl+D退回原系统。

  7. 取消挂载

    按顺序卸载所有挂载点:

    # 按顺序卸载所有挂载点
    sudo umount /mnt/sdb2/dev/pts
    sudo umount /mnt/sdb2/dev
    sudo umount /mnt/sdb2/proc
    sudo umount /mnt/sdb2/sys
    sudo umount /mnt/sdb2/run
    sudo umount /mnt/sdb2/boot/efi
    sudo umount /mnt/sdb2

    完成标志

    到这里UEFI系统克隆已完成,可以重启进入BIOS将引导切换到目标磁盘,或在关机状态下移除原系统盘。

重启系统并进入UEFI设置,将引导顺序切换到目标磁盘。

UEFI迁移验证

可以看到系统根目录已经成功迁移到新磁盘。

系统无法启动

可能原因:

  • fstab文件UUID配置错误
  • GRUB引导程序安装失败
  • 分区类型设置错误

解决方案:

  1. 检查fstab文件中的UUID是否正确
  2. 重新执行GRUB安装步骤
  3. 确认EFI分区类型为ef
文件复制中断

可能原因:

  • 磁盘空间不足
  • 磁盘读写错误
  • 权限不足

解决方案:

  1. 检查目标磁盘空间是否充足
  2. 检查磁盘健康状态
  3. 确认使用sudo权限执行命令
UEFI引导失败

可能原因:

  • EFI分区未正确挂载
  • EFI文件复制不完整
  • GRUB UEFI模块缺失

解决方案:

  1. 重新挂载EFI分区到/boot/efi
  2. 重新复制EFI分区内容
  3. 重新安装GRUB UEFI引导程序

  1. 完整备份:迁移前务必备份重要数据
  2. 磁盘检查:检查源磁盘和目标磁盘的健康状态
  3. 空间评估:确保目标磁盘有足够空间
  4. 引导确认:正确识别当前系统的引导类型

  • 功能测试:全面测试系统功能是否正常
  • 性能监控:观察新磁盘的性能表现
  • 备份更新:更新备份策略以适应新的存储配置
  • 文档记录:记录迁移过程和配置变更

通过正确的迁移操作,您可以成功将飞牛OS系统迁移到新的存储设备!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。