美文网首页
wsl导入已有的ext4.vhdx

wsl导入已有的ext4.vhdx

作者: VellBibi | 来源:发表于2022-12-16 09:32 被阅读0次

    前言

    由于电脑系统损坏,重装了windows系统,我大部分工作环境都在wsl下,所以将wsl的ext4.vhdx文件copy出来备份了,但重装完系统后怎么从ext4.vhdx文件中启动我的wsl呢?发现网上并没有这方面比较好的教程,我来记录下我折腾的过程
    我的wsl子系统是Ubuntu-18.04,系统是windows11专业版

    原理

    先安装一个新的和之前版本一样的wsl子系统,再用旧的ext4.vhdx替换掉新的

    注意,如果只是文件重命名一下,可能会出现旧的ext4.vhdx和新的权限不一致问题,会导致wsl子系统无法启动,所以需要将旧的ext4.vhdx文件内容完整覆盖新的文件,不是简单的重命名替换

    1. 安装wsl

    安装教程很多,就不细讲,自行搜索吧

    注意,安装一个跟你ext4.vhdx一样的发行版子系统,我这里是Ubuntu-18.04,所以我的安装命令是:

    wsl --install -d Ubuntu-18.04
    wsl --update 
    

    2. 迁移wsl【可省略】

    wsl默认安装在C盘,下次重装系统一不小心就格式化了,所以一般我会先迁移到其他盘符
    可以参考我的备份还原教程:https://www.jianshu.com/p/37b5f4b3d02c
    比如我这里迁移到d:\Ubuntu-18.04-wsl文件夹下,使用到的命令就是:

    wsl --terminate Ubuntu-18.04
    wsl --export Ubuntu-18.04 d:\Ubuntu-18.04-wsl.tar
    wsl --unregister Ubuntu-18.04
    wsl --import Ubuntu-18.04 d:\Ubuntu-18.04-wsl d:\Ubuntu-18.04-wsl.tar
    

    执行完上述命令后,在d:\Ubuntu-18.04-wsl文件夹下就会有一个ext4.vhdx文件了

    3. 替换ext4.vhdx

    将旧的ext4.vhdx文件copy到新的里,避免权限问题,因为旧的ext4.vhdx是上一个系统创建的,新的系统有时候会无法访问,这里我试过两种方式,都是可行的,只要不是剪切重命名貌似都可以

    1. 使用copy命令,或者在文件管理器里复制粘贴进行覆盖
    copy D:\Ubuntu-18.04-wsl-old\ext4.vhdx D:\Ubuntu-18.04-wsl\ext4.vhdx
    
    1. python脚本, 使用copy命令会修改新ext4.vhdx的权限属性,如果想完整保留新ext4.vhdx的属性,我写了个python脚本,只覆盖文件内容,不修改任何属性
    in_p = r"d:/Ubuntu-18.04-wsl-old/ext4.vhdx"
    out_p = r"d:/Ubuntu-18.04-wsl/ext4.vhdx"
    
    buf_size = 1024 * 1024 * 1024
    with open(in_p, "rb") as in_f:
        with open(out_p, "wb") as out_f:
            while True:
                data = in_f.read(buf_size)
                if data:
                    out_f.write(data)
                    print("wrote: ", buf_size)
                else:
                    print("done")
                    break
    

    相关文章

      网友评论

          本文标题:wsl导入已有的ext4.vhdx

          本文链接:https://www.haomeiwen.com/subject/glydqdtx.html