我电脑配置不高,开虚拟机跑linux总觉得太卡。最近才了解到windows早就上了wsl2——一款较为轻量的虚拟机软件。所以本篇博客偏笔记向,存粹记录以便多次使用。
可直接参考Microsoft官网手册,输入命令wsl --install一次性默认安装完毕。不过我本机配置不高,所以自己采用分步安装,以达到自定义存放虚拟机位置的目的。
启用windows功能
设置->应用和功能 ->程序和功能 ->启用或关闭windows功能

启动windows的linux子系统和虚拟机平台,管理员身份打开Powershell,运行命令
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启电脑让设置生效。
下载linux内核更新包并且运行更新。
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
(可选)如果想默认使用wsl2,则设置命令wsl --set-default-version 2 。如果想同时使用wsl1和wsl2,则可以对下载好不同的linux发行版设置version 。
wsl --set-version Ubuntu-18.04 2wsl --set-version Ubuntu-20.04 1下载ubuntu20.04 https://aka.ms/wslubuntu2004。(可能是网络问题下载很慢,我改用微软商店下载很快)
将文件后缀改为.zip,然后解压
双击exe启动,根据提示设置账号密码,安装完成。

/etc/apt/sources.list文件中(记得先备份)。sudo apt-get update------------------------------------以下安装内容为可选向-----------------------------------------
直接在apt源内找一个下载。
sudo apt search jdkudo apt install openjdk-11-jdkjava -v #下载好后测试一下下载:可以直接用apt源下载maven3.6.3。不过由于我曾经用3.6.3版本各种构筑出bug,所以还是老实上官网下。(进入maven官网,下载后缀为bin.tar.gz的版本)
wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz #下载包tar -zxf apache-maven-3.8.5-bin.tar.gz配置环境变量
sudo vim /etc/profileexport M2_HOME=/opt/apache-maven-3.8.5M2_HOME = /opt/apache-maven-3.8.5export PATH=${M2_HOME}/bin:$PATH #添加到文件结尾退出后运行 source /etc/profile让变量生效mvn -v #打印出版本号说明配置成功配置maven阿里云镜像,此处获取镜像地址
cd /opt/apache-maven-xxx/conf #进入安装目录下的conf文件夹vim settings.xml在指定位置贴代码就行。下载mysql 8.0的安装配置包->解压->更新apt源->安装mysql 8.0 server
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb #下载sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb #解压并且选择配置sudo apt update #更新sudo apt install mysql-server #下载mysql 8.0创建用户,支持远程连接
sudo service mysql start 启动数据库。sudo mysql打开即可。sudo mysqluse mysql;create user '#userName'@'#host' identified by '#passWord'; #创建角色,#host设置为%,代表该账户允许其他ip地址连接grant all on *.* to '#username'@'%'; #图省事,给了所有权限。flush privileges; #刷新授权修改配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf将 bind-address 注释重启mysql服务即可因为笔者的linux环境自带python,所以暂时直接用。在此也备份一个网络上的方法(添加源然后下载)。
sudo apt updatesudo apt install software-properties-commonsudo add-apt-repository ppa:deadsnakes/ppasudo apt updatesudo apt install python3.6sudo apt updatesudo apt install build-essential #一次安装gcc,g++和makesudo apt install redis 下载仓库自带的版本,比较方便。这里演示一下下载官网版本。wget https://github.com/redis/redis/archive/7.0.0.tar.gz #下载安装包tar -zxf 7.0.0.tar.gz #解压mv redis /opt/ # 移动到自定义位置sudo make ; #安装 (可选)sudo make install PREFIX=/opt/redis-7.0.0 #自定义安装位置并且安装(可选)./opt/redis-7.0.0/bin/redis-server #运行redis-server,如果出现运行画面则成功cd /opt/redis-7.0.0cp redis.conf ./bin/6379.conf#将配置文件复制一份到软件目录下,端口号作为名字是为了之后注册脚本服务时方便用到。cp /opt/redis-7.0.0/utils/redis_init_script /etc/init.d/redis #复制脚本文件,方便service命令启动sudo vim /etc/init.d/redis 14 REDISPORT=6379 15 EXEC=/opt/redis-7.0.0/bin/redis-server 16 CLIEXEC=/opt/redis-7.0.0/bin/redis-cli 17 18 PIDFILE=/var/run/redis_${REDISPORT}.pid 19 CONF="/opt/redis-7.0.0/bin/${REDISPORT}.conf"sudo vim /opt/redis-7.0.0/bin/6379.confprotected-mode no #关闭保护模式,允许远程连接的写入读取。daemonize yes #后台运行# bind 127.0.0.1 -::1 #注释此行,允许远程连接我感觉wsl2目前比较受人诟病的其中一点是wsl2的ip是动态的,每次完全关闭再打开wsl2都会更新ip,尽管目前可以使用localhost访问wsl2内运行的服务器,可是还是想尝试固定ip。翻阅论坛、博客以及开源社区,找到一个比较精简的方法。在宿主机上写个脚本(可以自行修改linux发行版名称以及ip)
wsl -d Ubuntu-20.04 -u root ip addr add 192.168.50.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1 #注意必须是rootnetsh interface ip add address "vEthernet (WSL)" 192.168.50.88 255.255.255.0每次重启wsl后以管理员权限运行一下该脚本即可。
ps :不用每次右击脚本使用管理员权限的方法。

wsl2目前还没有systemctl,所以软件不能开机自启,开源社区提供一些自己开发的仿Systemctl软件,不过目前还不够完善,所以我用开机+自动运行脚本来达到傻瓜式自启。
wsl /home/allworldg/startup.sh/home/allworldg/startup.shstartup.sh ,例如 echo '123123'| sudo -S service mysql start #自动输入sudo的密码 echo '123123'| sudo -S service redis start/etc文件的权限,导致sudo无法使用。/etc文件都得加 sudo,太不爽,图痛快直接来了一句 sudo chown "myusername" -R /etc ,结果后来使用sudo命令时报错。sudo: /etc/sudoers is owned by uid 1000, should be 0sudo: no valid sudoers sources found, quittingsudo: unable to initialize policy pluginpkexec /usr/sbin/visudo命令即可。wsl -u root 。然后修改sudoers和sudoers.e即可。chown root:root /etc/sudoerschown -R root:root /etc/sudoers.d