Linux系统迁移教程(很详细)

本文详细介绍了如何在Linux系统迁移过程中管理磁盘,包括磁盘分区、Ubuntu启动流程、U盘文件系统选择、文件备份和迁移步骤,以及注意事项和常见问题解决策略。
摘要由CSDN通过智能技术生成

Linux系统迁移教程(很详细)

前言

由于项目需要,需要将某个配置好的Linux环境完全迁移到别的PC上,在迁移过程中踏了很多坑,参考网上的其他教程有些部分未详细说明,给本人带来了很大的困扰,因此在此做整理,给需要的人一点帮助。


为了便于后文描述方便,在这里做个约定:

  • 本机系统: 指环境配置完成,将要迁移的系统
  • 目标系统(pc): 指目标PC平台,将要被迁移的系统

背景知识

Linux磁盘管理

  1. 进入本机系统,使用lsblk,可以查看当前系统磁盘分区拓扑:
    在这里插入图片描述
    图中SDA是本机系统磁盘名字,这个SDA磁盘被分成了三个分区,SDA1、SDA2、SDA3。SDA1分区未被挂载,SDA2被挂载到efi分区(系统启动时的引导程序),SDA3挂载到根目录和firefox的某个目录。(如果安装Ubuntu系统时,没有修改过安装指导中的磁盘分区,那么磁盘状态应该和笔者展示的差不多)
  2. 可以使用Ubuntu自带的Disk工具查看系统分区详细信息:
    在这里插入图片描述
    显示的磁盘状态如下:
    在这里插入图片描述
    和我们使用lsblk命令查看到的分区拓扑一致。(这个工具很强大哦,可以用来做磁盘分区的,后面我们配置目标PC磁盘空间的时候会使用)
  3. 也可以使用sudo fdisk -l命令查看磁盘分区详细信息:
    在这里插入图片描述
    里面会打印一堆信息,我们只需要关注这部分即可:
    在这里插入图片描述
    可以看到type列中描述了磁盘下各个分区的作用,SDA1用作BIOS,SDA2用作EFI ,SDA3就是普通的Linux文件系统(我们的根文件系统就是挂载在这个分区)。
  4. 使用du -sh可以查看当前目录占用磁盘空间,可以根据这个信息选择U盘大小

Ubuntu系统相关

Ubuntu启动流程大致如下:

BIOS自检
GRUB引导
装载Linux内核
系统INIT

在Linux系统迁移中我们只需关注前三步即可。

U盘文件系统

U盘格式化时,请选择使用exFAT格式,而不是使用FAT32,因为FAT32不支持拷贝大于4GB的文件。如果我们的根目录文件大于4GB,在进行文件拷贝的时候会失败。
在这里插入图片描述

系统迁移

本地主机:

备份本地主机文件到U盘:

  1. 使用lsblk命令查看当前U盘挂载分区
    在这里插入图片描述
    通过判断容量可以判断当前的U盘为sdb,而且已经挂载到/media/david/Ubuntuback路径下了。
    如果你使用的是一个全新的格式化U盘,需要手动挂载U盘:(如果已挂载可跳过下述步骤)
    在这里插入图片描述

    • 创建临时挂载目录 sudo mkdir /mnt/sdb1
      在这里插入图片描述

    • 挂载U盘 sudo mount /dev/sda1 /mnt/sdb1
      在这里插入图片描述

    • 查看挂载状态 lsblk
      在这里插入图片描述

    • 注意此时你挂载的目录(/mnt/sdb1)就是接下来tar中的目标目录

  2. 拷贝文件
    tar -cvpf /media/david/Ubuntuback/backup.tar --exclude=mnt --exclude=media --exclude=tmp --exclude=proc --exclude=sys /
    (由于我U盘已经自动挂载了,就使用了默认挂载目录,如果是手动挂载的,需要使用你手动创建的目录)

    • -tar: 压缩命令名
      • -c create.新建一个压缩文件
      • -v verbose 输出详细信息
      • -p preserve-permissions 连同文件的权限属性一起打包进去
      • -f file 指定tar文件的名称
      • –exclude 以模式匹配排除文件
        注意: tar不能自我递归打包
    • /proc: 进程虚拟文件系统,随内存纯在
    • /sys: 硬件设备的驱动程序信息
    • /tmp: 公用的临时文件存储点
    • /media: media是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置。 包括软盘、光盘、DVD等等装置都暂时挂载于此
    • /mnt: 如果你想要暂时挂载某些额外的装置,一般建议你可以放置到这个目录中
    • / 根目录,系统所有的文件都在其中

    (请务必将U盘格式化为exFAT格式,不然拷贝根目录文件时会报错)

目标主机:

制作Ubuntu最小系统

  1. 使用U盘制作Ubuntu最小系统

    • 下载Ubuntu系统镜像
      • 建议使用的镜像和迁移主机的镜像版本相同
      • 这里我的本地主机是22.04.03,我选用了22.04.04作为最小系统
    • 下载镜像烧录工具
      • 我使用的是rufus,大家可以随意选择喜欢的
    • 格式化U盘
      • 烧录镜像到U盘中

    网上教程很多大家随意找个参考即可

  2. 进入目标主机BIOS,配置其启动方式为U盘启动

  3. 此时你应该有两块U盘:

    • 一块U盘为Ubuntu最小启动系统(live cd)
    • 一块为本地主机根目录的备份
  4. 重启目标主机,进入Ubuntu安装界面后选择try Ubuntu不要选择"Install Ubuntu"!!!
    在这里插入图片描述

    • 使用lsblk查看目标系统当前挂载状态
      在这里插入图片描述
    • sda1为Ubuntu最小系统,sb1为本地主机根目录备份,nvme0n1p1~3为目标主机的磁盘划分

格式化目标主机磁盘空间

  1. 格式化目标主机磁盘空间

    • sudo apt install gparted
      在这里插入图片描述
    • sudo gparted启动图型配置界面格式化目标主机磁盘
      在这里插入图片描述
      请务必确认格式化磁盘为目标主机磁盘!!!!(点击左上角的那个禁止符号,可以看到原本的磁盘空间已经被我们格式化了)
      在这里插入图片描述
      按此操作格式化全部磁盘空间。
  2. 重新分配目标主机磁盘空间,按照如下空间分配,重新划分磁盘空间

    分区容量类型说明
    nvme0n1p12GEFIboot分区
    nvme0n1p2256GEXT4root分区
    nvme0n1p364GSWAPswap分区 用于进行虚拟内存的映射,一般推荐大小为内存的两倍

    在这里插入图片描述
    root分区和boot分区一定是要有的,空间大小和其他的分区大家根据自己需求划分,可以看到我只使用到了一部分磁盘空间。
    图中n1p1的文件类型不是EFI,我们可以进入disk工具修改它的文件系统类型:
    在这里插入图片描述
    最后,我们使用sudo fdisk -l命令查看目标系统划分的磁盘空间文件系统是否正确:
    在这里插入图片描述
    使用lsblk查看当前文件大小如下:
    在这里插入图片描述

解压备份文件到目标主机

  1. 开始解压本地主机的根文件备份到目标主机的根文件分区,如上图:

    • sudo mkdir /mnt/target
    • sudo mount /dev/nvme0n1p2 /mnt/target
    • 查看挂载状态如下:
      在这里插入图片描述
    • 使用sudo tar -xvpf /media/ubuntu/Ubuntuback -C /mnt/target/ --numeric-owner指令,解压本地主机文件备份(需要等一段时间)
      在这里插入图片描述
  2. 因为我们将备份文件解压到目标主机的/mnt/target目录下,因此我们需要在目标主机上添加在压缩文件时删除的文件夹:

    • cd /mnt/target
    • sudo mkdir proc sys media mnt tmp
    • ps:在目标主机哪里解压的,就去哪里创建!对于我来说,我解压到目标主机/mnt/target下,因此我就去这个路径下创建,大家自行替换解压目录

修正文件系统表

  1. 在成功解压本地主机根文件备份到目标主机根目录后,我们修改文件系统表(/etc/fstab file systeam table),因为我们拷贝过来的文件系统表中的磁盘UUID为本地主机的,需要修正为目标主机的磁盘UUID:
    在这里插入图片描述
    左边的为fstable文件内容展示,可以看到其中的/挂载的UUID不符合目标主机上的任一磁盘UUID(blkid可以查看).
    • 切换目标系统根分区为根目录,并根据blkid指令的显示信息修正/etc/fstab文件
    • sudo blkid查看当前UUID
    • sudo chroot /mnt/target/ , vim /etc/fstab
      在这里插入图片描述
      修改后的文件内容应该如下,nvme0n1p2 -> /,nvme0n1p1 -> /boot/etf,nvme0n1p3 -> swp 在这里插入图片描述
    • 注意一定要切根目录(chroot)后再进行修改!!

重建EFI引导分区

  1. 做到这里已经成功了一大半了,接下来,卸载所有磁盘挂载:
    *sudo umount /mnt/target
    在这里插入图片描述
    *删除创建的临时挂载目录 sudo rm -r /mnt/target ,因为我mkdir的时候创建的目录为/mnt/target,因此我在此删除它

  2. 将目标系统的根分区挂载到**/mnt**,将目标主机的boot分区挂载到**/mnt/boot/efi**,再执行
    for i in /dev /dev/pts /proc /sys /run;do sudo mount -B $i /mnt$i;done
    对应我的系统指令如下:

    sudo mount /dev/nvme0n1p2 /mnt
    sudo mount /dev/nvme0n1p1 /mnt/boot/efi/
    for i in /dev /dev/pts /proc /sys /run;do sudo mount -B $i /mnt$i; done
    

    截图如下:
    在这里插入图片描述

  3. 切换根目录为/mnt目录,执行如下命令:

    • sudo chroot /mnt/
    • grub-install /dev/nvme0n1
    • 注意此处的nvme0n1为目标主机的磁盘名称
      在这里插入图片描述
    • update-grub
      在这里插入图片描述
  4. 键入reboot按提示重启设备,大功告成~

迁移总结:

结合本人踩过的坑,对系统迁移理解总结如下:

  1. 系统是运行在磁盘上。
  2. 安装系统即是对磁盘进行分区配置

所以无论是迁移系统到新硬盘上,还是迁移到远端PC上,本质上都是对磁盘内容的处理。唯一的差异在于磁盘所处的位置(本地主机迁移系统到新磁盘,可以使用DD命令,而远端迁移,需要使用第三方介质转移宿主机器的文件内容)。

在本教程中,我只备份了主机的根文件分区,查阅其他Linux本地机磁盘迁移时,发现还可以把boot分区一起备份走,在U盘系统中使用boot-repair修复ELF分区。由于时间关系(懒),没有进行尝试,这里给大家介绍一下,如果按照此方法不能成功迁移,可以尝试一下其他方法。

最后,在系统迁移中,难免会遇到各种坑,大家要善与分析问题定义问题,再运用搜索引擎解决问题,对于系统迁移来说,步骤还是较为简单的(参考背景知识中,Ubunt系统相关)。

参考链接

  1. https://firmum.top/2023/05/04/%E7%B3%BB%E7%BB%9F%E8%BF%81%E7%A7%BB/#%E9%80%82%E7%94%A8%E8%8C%83%E5%9B%B4
  2. https://blog.csdn.net/weixin_54026671/article/details/118106335
  • 28
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sure! 我们可以为您提供Superset的安装详细教程。以下是安装过程的简要概述: 1. 安装Python和pip。Superset使用Python编写,并且需要pip来管理Python虚拟环境和依赖项。在命令行中输入`python --version`检查是否已安装Python,输入`pip --version`检查pip是否安装。 2. 创建Python虚拟环境。虚拟环境可以确保Superset所需的依赖项与系统中的其他Python应用程序不冲突。在终端中输入`python -m venv superset-env`创建虚拟环境。这会在您的当前目录中创建一个名为superset-env的虚拟环境。 3. 激活Python虚拟环境。在Windows系统中,使用以下命令:`.\superset-env\Scripts\activate`。在macOS和Linux系统中,使用以下命令:`source superset-env/bin/activate`。 4. 使用pip升级pip和setuptools。在虚拟环境中输入以下命令:`pip install --upgrade pip setuptools`。 5. 安装Superset。在虚拟环境中输入以下命令:`pip install apache-superset`。 6. 初始化数据库。使用以下命令在虚拟环境中执行数据库迁移:`superset db upgrade`。然后使用以下命令加载示例数据:`superset load_examples`。 7. 创建管理员帐户。使用以下命令在虚拟环境中输入管理员帐户的详细信息:`superset fab create-admin`。然后输入管理员的用户名、电子邮件地址和密码。 8. 启动Superset。使用以下命令在虚拟环境中启动Superset服务器,然后在Web浏览器中访问它:`superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger`。 这就是安装Superset的基本步骤,希望可以对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值