适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。
基本使用
安装
# 此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能。
wsl --install
仅当根本没有安装 WSL 时,上述命令才有效。
如果运行 wsl --install 并查看 WSL 帮助文本,
请尝试运行 wsl --list --online 以查看可用发行版列表
并运行 wsl --install -d <DistroName> 以安装一个发行版。
在Windows中访问Ubuntu文件
# \\wsl$\Ubuntu\home\<user name>\Project
cd \\wsl$\Ubuntu\home\wq\mysql
在Ubuntu访问Windows文件
# /mnt/d相当于D:\
cd /mnt/d/
在cmd中使用linux命令
# ls -l
wsl ls -l
WSL2切换默认的Linux子系统
wslconfig /list
wslconfig /setdefault Ubuntu
wslconfig /list
卸载Linux子系统
wsl --list
wsl --unregister Ubuntu-20.04
wsl --list
注意:一旦注销,与该发行版相关的所有数据、设置和软件都将永久丢失,三思而后行。
Ubuntu安装docker
使用官方安装脚本自动安装
安装命令如下:
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
添加用户到docker组
创建docker用户组
sudo groupadd docker
添加当前用户加入docker用户组
sudo usermod -aG docker ${USER}
重启docker服务
sudo systemctl restart docker
生效配置
sudo newgrp docker
docker安装运行mysql8
拉取镜像
docker pull mysql:8.0.27
创建挂载使用到的目录
mkdir -vp /home/wq/mysql
cd /home/wq/mysql
mkdir data logs conf
启动mysql
docker run -d -p 3306:3306 --name mysql --rm -e MYSQL_ROOT_PASSWORD=qifeng mysql:8.0.27
拷贝mysql的配置文件
docker cp mysql:/etc/mysql /home/wq/mysql/conf
停止并删除容器
docker stop mysql
重新启动容器(指定数据卷)
docker run -d -p 3306:3306 \
--name mysql \
--privileged=true \
--restart=unless-stopped \
-v /home/wq/mysql/conf/mysql/conf.d:/etc/mysql/conf.d \
-v /home/wq/mysql/logs:/var/log/mysql \
-v /home/wq/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=qifeng \
mysql:8.0.27
修改权限和密码
#进入容器
docker exec -it mysql bash
#登录
mysql -uroot -p
use mysql;
# 执行sql,创建远程可以连接mysql的用户
CREATE USER 'wq'@'%' IDENTIFIED WITH mysql_native_password BY 'qifeng';
#修改密码
# ALTER USER 'wq'@'%' IDENTIFIED BY 'qifeng';
#修改权限
GRANT ALL PRIVILEGES ON *.* TO 'wq'@'%';
#刷新权限
flush privileges;
#退出Mysql
exit;
#入退出容器
exit
wsl安装使用centos
导出CentOS.tar文件
在Ubuntu中启动docker
sudo service docker start
在 Docker 中运行 CentOS 容器
docker run -it --rm centos bash
使用 grep 和 awk 获取 CentOS 容器 ID:
dockerContainerID=$(docker container ls -a | grep -i centos | awk '{print $1}')
将容器 ID 导出到装载的 C盘上的 tar 文件
docker export $dockerContainerID > /mnt/c/temp/centos.tar
此过程从 Docker 容器导出 CentOS tar 文件,这样我们现在就可以导入它,以在本地将其与 WSL 一起使用。
将 tar 文件导入 WSL
准备好 tar 文件后,可使用以下命令导入它:wsl --import
打开 PowerShell,并确保已创建一个要存储发行版的文件夹
cd C:\temp
mkdir E:\wslDistroStorage\CentOS
使用命令 wsl --import 导入 tar 文件
wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar
使用命令 wsl -l -v 检查已安装的发行版
运行
- 最后,使用命令 wsl -d CentOS 运行新导入的 CentOS Linux 发行版
wsl -d CentOS
- 注意导入的CentOS运行docker会有问题,暂时没有找到解决办法
备份与恢复
备份
wsl --export Ubuntu-22.04 D:\vmware\Ubuntu-22.04.tar
恢复
wsl --import Ubuntu-22.04 D:\vmware\ubuntu22 D:\vmware\Ubuntu-22.04.tar --version 2
- 上述命令将从备份文件 “Ubuntu-22.04.tar” 中导入 Ubuntu WSL 子系统,并将其存储在 “D:\vmware\ubuntu22” 目录下。请确保目标目录存在并且是空的。
注意事项
在备份和恢复 WSL 子系统时,有几点需要注意:
- 备份文件保存路径:确保备份文件存储在其他磁盘或存储设备中,避免与系统盘数据放在同一处。
- 版本匹配:在恢复 WSL 子系统时,确保使用相同版本的 WSL。上述例子中,使用了 “–version 2” 参数,表示使用 WSL 2 版本。
- 备份系统配置:上述备份方法只备份了 WSL 子系统本身的数据,不包括系统配置和用户数据。如需备份系统配置和用户数据,请另外进行备份。
- 备份与网络状态:在备份和恢复 WSL 子系统时,最好断开网络连接,避免数据在备份和恢复过程中发生冲突或丢失。
恢复后登录用户默认为root修改方式
查看uid
cat /etc/passwd
打开注册表修改
- 首先在注册表那 ctrl + F 查找Lxss
- 找到BasePath数据为迁移后目录的那个文件夹,我这里只有一个就不用继续找了直接改
- 将DefaultUid的数据修改为ubuntu中普通用户对应的数字(十进制)
- 然后就完美解决了,变为熟悉的界面