最近看到halo博客发布了2.10.0,终于是新增了个备份功能,于是有了念头想要升级下
但是目前我还是使用halo1.5版本,所以跨版本迁移可能会有问题,官方提议还是先用个测试环境进行测试验证是否有问题
但由于2.x版本之后,官方是不提供jar包方式,而是改用docker来进行部署,对于docker不太熟悉的我选择了1Panel面板来安装(不过1Panel面包和宝塔类似,都是属于Linux系统的管理工具)
所以首先得有Linux系统,但手头没有Linux系统,服务器生产环境不太想乱动,也不太想安装个虚拟机,之前有了解过window10系统新增了linux的子系统可以使用,于是就有了这篇文章
本篇文章包含window10系统安装子系统Linux以及如何把Linux系统迁移到其他盘(默认是安装C盘)
由于我是研究成功之后才根据之前的做法回想做的记录,可能有些步骤没写全,各位仅供参考
安装步骤
1.前提配置和资源下载
开启配置:
下载安装下面的msi文件:
wsl_update_x64.msi
文件下载: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下载并更新wsl为wsl2版本,到Releases · microsoft/WSL手动下载最新版本的安装包wsl.2.0.4.0.x64.msi
,之后安装即可(这个因为后面我安装1Panel面板需要用到systemd命令,需要更新环境才成功启动1Panel)
下载Unbuntu22.04的镜像,之后备用:
https://www.crxsoso.com/store/detail/9PN20MSR04DW
可以将上面的配置开启和软件都安装后,重启电脑再进行下一步
2.安装镜像
上面的Unbuntu22.04镜像文件,实际就是微软应用商店的安装包,我们直接安装就可以(它会默认安装到C盘,之后我们再讲如何将它移动到其他盘)
安装的时候会弹出一个powershell的命令行窗口,之后会提示我们输入一个默认账号和密码(下面的截图因为当时是研究迁移,所以有报错,不过重点就是后面输入账号的部分,错误提示可以忽略哈)
之后输入完密码后,就可以启动系统了(上安装完后命令行是自动帮我们启动了系统)
之后我们设置下root账号的密码即可,linux命令如下
sudo passwd root
上面的命令会先让我们输入上面我们设置的默认账号密码,之后才是输入root的账号密码和二次密码确认
之后切换到root账号命令:
su root
输入我们上面的root账号的密码即可切换成功(即左边的$
变为#
)
PS: 可以通过开始菜单的Ubuntu22.04来启动或者通过输入
wsl
来启动,这个命令可以在cmd命令行或者powershell命令窗口输入
3.Linux系统使用国内仓库源
由于账号需要使用到ifconfig来查看IP地址信息,所以要先设置下使用国内的Linux软件仓库源
1、将系统源文件复制一份备用
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2、用vi编辑器打开源文件
sudo vi /etc/apt/sources.list
3、找到国内源复制粘贴
阿里源地址https://developer.aliyun.com/mirror/?spm=a2c6h.12883283.1364563.38.6c69201cmnp0oi
输入49dd
清除全部内容,如果你的是22.04版本,可以直接复制下面内容
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
在vim编辑器按下shift+insert实现粘贴
输入:wq
保存并退出
更新系统仓库源:
sudo apt-get -y update && sudo apt-get -y upgrade
4.Linux安装ifconfig
由于我们需要查看ip地址,需要需要先安装此工具
sudo apt-get install net-tools
查询ip地址命令
ifconfig
下面截图得到我们的IP地址
迁移系统
上面我们成功了安装完Linux系统,但是由于它是默认放在C盘,为了防止C盘爆红,所以决定将其迁移到D盘
刚开始参考的一篇文章教程,先是使用的wsl,然后再切换为wsl2,步骤很多,到最后,迁移是成功了,但是却午无法启动Linux系统了…
他的思路也就是利用了wsl支持导出和导入,于是基于他的思路尝试了下,发现居然完美成功了
1.导出wsl系统
- 设置当前wsl版本为wsl2
wsl --set-default-version 2
设置的时候可能会出错,原因就是你没有按照上面配置开启window平台的虚拟化平台
如果开启了还报错,可以试着输入下面2个命令其中之一(我这里是没有报错的)
报错输入下面的命令,2选一
bcdedit /set hypervisorlaunchtype auto
bcdedit /set hypervisorlaunchtype off
- 导出子系统镜像备份
查看镜像实例名
wsl -l -v
打包输出备份,导出到D盘,文件名为export.tar
wsl --export Ubuntu-22.04 D:/export.tar
注销实例,实际会将磁盘里的子系统文件删除
wsl --unregister Ubuntu-22.04
上面的Ubuntu-22.04
就是从查询得到的,如果你是安装的其他版本,记得要爱夏
- 导入子系统镜像备份
重新安装,第一个目录就是你要将子系统安装的目录位置
wsl --import Ubuntu-22.04 D:\app\dev\Ubuntu_22_04\ D:\export.tar --version 2
设置默认子系统
wsl --setdefault Ubuntu-22.04
启动
wsl -d Ubuntu-22.04
之后可以发现迁移已完成
安装1Panel
Ubuntu系统安装命令:
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
之后就是一路回车,安装会提示相关配置进行设置,如端口号,登录1Panel的账号名和密码
最终控制台会输出一个入口的地址
通过ifconfig的linux命令,查看当前ip地址,把上面的入口地址的127.0.0.1改下就可以访问了
如果没法访问,可以看下window对应的防火墙规则是不是把端口给拦截了,因为子系统的端口占用是和window系统共同的,相关防火墙规则如何修改这里就不多说了
不过查阅资料的时候,有文章说127.0.0.1加上端口名也可以访问,但我实际测试发现不行…还是得实践出真知
之后我们访问入口地址,登录即可进入1Panel面板了
启动失败说明
上面已经说了,因为要安装1Panel需要sytemd,需要更新下wsl环境即可,之后的是我一些随手记的问题和资料文章,随便看看就好
但是启动的时候提示失败了
查看官方文档操作系统相关 - 1Panel 文档
给出的建议是我们需要升级wsl,输入wsl --version
,看了下自己的版本比较低的
This change is only available in the Microsoft Store version of WSL version 0.67.6 and higher
因为我不想开启window更新设置,所以可以到Releases · microsoft/WSL手动下载安装包,之后安装即可
WSL需要是从Microsoft Store下载安装的版本(即上面的Github链接的),而不是Windows自带的WSL
在命令行执行:
C:>wsl --version
如果结果没有显示如下的输出,而是提示参数使用错误的信息,那使用的WSL是Windows自带的版本,不是可用的版本,需要替换(即上面说的更新wsl)
WSL 版本: 1.0.3.0
内核版本: 5.15.79.1
WSLg 版本: 1.0.47
MSRDC 版本: 1.2.3575
Direct3D 版本: 1.606.4
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows版本: 10.0.19045.2486
此命令查看是否systemd可用
systemctl status | cat
遇到的问题
1.初次安装系统的时候出现Wsl/Service/0x8007273d
window wsl2 打开 出现 Wsl/Service/0x8007273d
原因是用了安装了VPN代理软件导致虚拟网卡被占用,卸载即可解决
或者是可以考虑降低wsl2为1(不推荐此做法)
参考
- 在 Win11安装 Ubuntu20.04子系统 WSL2 到其他盘(此处为D盘,因为C盘空间实在不能放应用)-CSDN博客
- WSL 的基本命令 | Microsoft Learn
- 旧版 WSL 的手动安装步骤 | Microsoft Learn
- Windows安装Linux子系统_windows 安装linux子系统_小白华的博客-CSDN博客
- Windows下Linux子系统(WSL)完美安装流程 - 简书
- wsl2更新后,报错0x8007273d解决方案-CSDN博客
- 在WSL中使用systemd - 简书
- 1Panel - 现代化、开源的 Linux 服务器运维管理面板
- 在Windows10 WSL 2 上启用微软官方支持Linux GUI和systemd - 知乎
评论区