wsl2安装及相关编程环境配置

2023-11-02

wsl2的安装及相关环境配置

1. 设置->更新和安全->开发者选项->开发人员模式

2. 设置->应用->应用和功能->程序和功能->程序和功能->启用或关闭windows功能->适用于linux的windows子系统

命令行方式:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

3.安装依赖,并重启

4. 启用虚拟化(管理员模式)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

5. 安装wsl_update_x64.msi
下载地址: https://docs.microsoft.com/zh-cn/windows/wsl/install-win10

6. 重启

7. 将wsl2 设置为默认版本
wsl --set-default-version 2

8. 打开microsoft store, 搜索需要的linux版本,下载安装即可

9. 完成后做linux账户及密码设置即可

10.有些人使用 wsl -l -v 得到的还是wsl
升级为wsl2,注意后面是你的linux名字
 wsl.exe --set-version Ubuntu-20.04 2

11. 重启后即可愉快使用

wsl2的配置

1. 修改wsl的虚拟磁盘目录,以Ubuntu-20.04为例
    注意: 打开管理员模式cmd首先执行关机命令 wsl --shutdown
    1) 导出分发版为tar文件到d盘
      wsl --export Ubuntu-20.04 d:\ubuntu20.04.tar
    2) 注销当前分发版
      wsl --unregister Ubuntu-20.04
    3) 重新导入并安装在d:\ubuntu
      wsl --import Ubuntu-20.04 d:\ubuntu d:\ubuntu20.04.tar --version 2
    4) 设置默认登陆用户为安装时用户名
      ubuntu2004 config --default-user yourname(此为你之前设置的用户名)
    5) 删除tar文件(可选)
      del d:\ubuntu20.04.tar

2. 为ubuntu20.04 换源
    1) 打开命令行使用管理员账户
      sudo su
    2) 备份当前源
      cp /etc/apt/sources.list /etc/apt/sources.list.old
    3) 编辑软件源文件
      vim /etc/apt/sources.list
    4) 删除所有内容
      按下esc 输入dG
    5) 复制粘贴源(清华镜像源)
      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
      deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
      deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
      deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
      deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
      deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
      deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    6) 更新
      apt-get update
      apt-get upgrade
3. 设置系统语言为中文
    1) 安装中文支持
      sudo apt-get install -y language-pack-zh-hans
    2) 设置默认语言
      sudo update-locale LANG=zh_CN.UTF-8
4. 限制wsl2 cpu和内存用量
    1) 按下Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹,新建文件 .wslconfig
      [wsl2]
      memory=2GB      #内存最大值
      swap=2GB        #虚拟内存最大值
      processors=2    #cpu核最大值
      localhostForwarding=true
    2) 然后运行cmd,输入 wsl --shutdown 来关闭当前的子系统,重新运行bash进入子系统
5. 固定IP
    @echo off
    setlocal enabledelayedexpansion

    if !errorlevel! equ 0 (
      :: 查看IP端口在不在,有没有被占用
      wsl -u root ip addr | findstr "192.168.120.181" > nul
      if !errorlevel! equ 0 (
          echo "wsl ip has set"
        ) else (
          ::不在的话给安排上
          wsl -u root ip addr add 192.168.169.1/28 broadcast 192.168.169.15 dev eth0 label eth0:1
          echo "set wsl ip success: 192.168.169.2"
        )
      :: 设置windows的ip	
      ipconfig | findstr "192.168.169.1" > nul
        if !errorlevel! equ 0 (
            echo "windows ip has set"
        ) else (
            netsh interface ip add address "vEthernet (WSL)" 192.168.169.2 255.255.255.0
            echo "set windows ip success: 192.168.169.1"
        )
    )
    exit

  注意:宿主机可以使用192.168.169.1 链接linux
        但是linux 无法使用192.168.169.2 访问宿主机

6. 设置开机自启脚本
    win+r 输入   shell:startup
    将脚本保存至一个不会动的地方,发送快捷方式到桌面
    右键属性以管理员模式打开
    再将这个快捷方式放到自启文件夹下

    设置定时任务
    打开控制面板,右上角选小图标,点击管理工具
    点击任务计划程序,选择左上角任务计划程序库
    右边创建任务
    名称随便取,勾选
    不管用户是否登录都要运行;
    不存储密码(P),该任务将只有访问本地计算机资源的权限;
    使用最高权限运行;
    标题选触发器->新建->开始任务:启动时
    标题选操作->填入脚本具体路径及文件
    确定后重启验证

7.安装nodejs
  sudo apt install npm 
  npm install -g n

  安装最新版NODE:n latest
  安装稳定版NODE:n stable
  安装版本号(示例):n x.x.x
  选择版本号(实例):n 8.7.0
  选择版本号:n
  如果需要更多命令,请输入:n --help
  
  sudo gedit /etc/profile
    在文件中if上一行添加
    export PATH=$PATH:/usr/local/node/bin
  source /etc/profile

8.安装mysql
  sudo apt install mysql-server
  注意: 先关闭windows的mysql相关进程

  sudo service mysql start
  报错: No directory......
  解决:
       sudo service mysql stop(停止mysql)
       sudo usermod -d /var/lib/mysql/ mysql(修改权限)
       sudo service mysql start(重启mysql)
  
  sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
  添加: skip-grant-tables
  修改端口: port = 3307 (避免与win10冲突)
  打开所需注释
  esc     wq   (保存退出)

  sudo service mysql restart

  mysql -u root -p (无需输入密码直接回车进入)

  修改root密码:
  use mysql;
  flush privileges;
  update user set authentication_string='' where user='root';
  flush privileges;
  ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';
  flush privileges;
  quit;

  sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
  注释: skip-grant-tables

  sudo service mysql restart

  链接Navicat:
  连接名: 随意写
  主机: localhost
  端口: 你修改的端口(3307)
  用户名: root
  密码: 你设置的密码

9.安装java
  去官网下载jdk
    tar -zxvf jdk-8u301-linux-x64.tar.gz
    cp -r jdk1.8.0_291 jdk8
    sudo mkdir /usr/local/java8/
    sudo mv jdk8 /usr/local/java8/

    sudo vim /etc/profile
    添加:
      #java8
      export JAVA_HOME=/usr/local/java8/jdk8
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    source /etc/profile
    输入 java -version和javac -version测试无异常即可。

10.安装maven
  去官网下载jdk
    tar -zxvf apache-maven-3.8.2-bin.tar.gz
    sudo mkdir /usr/local/maven382/
    sudo mv apache-maven-3.8.2 /usr/local/maven382/

    sudo vim /etc/profile
    
    添加:
      #maven382
      export MAVEN_HOME=/usr/local/maven382
      export PATH=$PATH:$MAVEN_HOME/bin
    
    source /etc/profile
    输入 mvn -v 测试无异常即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wsl2安装及相关编程环境配置 的相关文章

  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • 如何在Mysql中仅将不同的值从一个表复制到另一个表?

    我有一个大约 2 5GB 的 MySql 数据库 表 A 具有以下列 anoid query date item rank url 我刚刚创建了另一个仅包含列的表 b query and date 我想在查询列中插入所有不同的记录 及其各自
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb

随机推荐

  • Selenium防踩坑 - StaleElementReferenceException 解决方案

    主要内容 1 异常原因 2 解决方案 1 异常原因 在执行脚本时 有时候引用元素对象会抛出如下异常 selenium common exceptions StaleElementReferenceException Message stal
  • 企业建设数字化工厂之前需要准备哪些硬件设施

    随着数字化技术的快速发展 数字化工厂已经成为了企业建设的重要方向 数字化工厂管理系统能够提高生产效率 降低成本 保证产品质量 为企业可持续发展提供有力支持 然而 建设数字化工厂需要准备一系列的硬件设施 以确保数字化工厂的正常运行 那么企业建
  • 关于文件上传漏洞的观点(upload-labs第九关)

    关于文件上传漏洞的观点 upload labs第九关 is upload false msg null if isset POST submit if file exists UPLOAD PATH deny ext array php p
  • java-web 过滤器 & 监听器 & 拦截器

    Tomcat 的容器分为四个等级 真正管理 Servlet 的容器是 Context 容器 一个 Context 对应一个 Web 工程 在 Tomcat 的配置文件中可以很容易发现这一点 如下 Context 配置参数
  • 有关校园网无法开启wifi的简单解决方法

    作为一个新时代的大学生 没有wifi的世界就是个噩梦 以前用的猎豹wifi 但发现卸载猎豹wifi后无法登陆校园网后 果断抛弃了这个家伙 现在使用的是一个叫360免费wifi的东西 现在开着校园网客户端的情况下打开360wifi 但是问题来
  • 如何用python远程探查每天的网页访问记录

    前言 利用Python制作远程查看别人电脑的操作记录 与其它教程类似 都是通过邮件返回 利用程序得到目标电脑浏览器当中的访问记录 生产一个文本并发送到你自己的邮箱 当然这个整个过程除了你把python程序植 入目标电脑外 其它的操作都是自动
  • nginx 报错[emerg]: unknown directive “锘? in E:\nginx-1.18.0/conf/nginx.conf:3

    报错 nginx 报错 emerg 32408 14080 unknown directive 锘 in E nginx 1 18 0 conf nginx conf 3 原因 使用nginx服务时 用txt记事本打开编辑了nginx co
  • 清除浮动的五种方法以及优缺点

    方法一 额外标签法 给谁清除浮动 就在其后额外添加一个空白标签 给其设置clear both 优点 通俗易懂 书写方便 缺点 添加许多无意义的标签 结构化比较差 clear both 本质就是闭合浮动 就是让父盒子闭合出口和入口 不让子盒子
  • Python实例:用Pandas处理表格(简单的增删改查)

    目录 任务描述 实现过程 任务描述 描述 现有一个excel表格 补充SCI模板 其中包括6个子表 中科院1区 表1 JCR Q1 表2 教研室补充 表 CCF A 表 CCF B 表 CCF C 表 每个表格第一列为期刊名称 需要为这些期
  • 基于springboot+vue的网上商城管理系统,附源码+数据库+lw文档+PPT,适合课程设计、毕业设计

    1 项目介绍 在Internet高速发展的今天 我们生活的各个领域都涉及到计算机的应用 其中包括网上图书商城的网络应用 在外国网上图书商城已经是很普遍的方式 不过国内的管理网站可能还处于起步阶段 网上图书商城具有网上图书信息管理功能的选择
  • Visual Studio在Release模式下开启debug调试,编译器提示变量已被优化掉,因而不可用

    系列文章目录 文章目录 系列文章目录 前言 一 解决办法 1 修改工程属性 参考 前言 我们在编写代码的时候 如果用到别人的库 而别人只提供了release版本 所有我们也只能生成release版本的工程 但是 我们又想调试代码 如果我们直
  • vue3 naiveui 自定义v-loading指令

    1 在sr目录下创建loading文件夹 包含index ts和index vue 2 index ts import render VNode createVNode from vue import Loading from index
  • 【Java基础知识 12】java枚举详解

    Java学习路线 搬砖工逆袭Java架构师 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞 收藏 留言 目录 一 基本概念 二 枚举的优缺点 1 优点
  • focal loss的几种实现版本(Keras/Tensorflow)

    起源于在工作中使用focal loss遇到的一个bug 我仔细的学习多个靠谱的focal loss讲解及实现版本 通过测试 我发现了这样一个奇怪的现象 几乎每个版本的focal loss实现对同样的输入计算出的loss都是不同的 通过仔细的
  • 吃透Kafka底层通信机制后,我把系统网络性能提升了10倍以上!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 1 客户端与服务端的交互 2 频繁网络通信带来的性能低下问题 3 batch机制 多条消息打包成一个batch 4 request机制 多个batch打包成一个
  • 使用遗传算法解决旅行商问题

    遗传算法 Genetic Algorithm GA 最早是由美国的 John holland于20世纪70年代提出 该算法是根据大自然中生物体进化规律而设计提出的 是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型 是一种
  • Install and Configure JRebel for MyEclipse

    http www zeroturnaround com jrebel using jrebel with myeclipse utm source jrebelDLpage utm medium idepluginlink utm camp
  • Zabbix 邮件告警

    一 登录邮箱 这里使用126邮箱 http mail 126 com 二 开启POP3的授权码 三 Zabbix服务器与邮箱服务器的连通性测试 root zabbix server nc smtp 126 com t 25 220 126
  • chatgpt赋能python:Python长度转换程序:方便快捷的单位转换工具

    Python长度转换程序 方便快捷的单位转换工具 如果你曾经需要将英寸转换为厘米 或是想知道你的身高在米制和英制中是多少 那么你一定知道这是一个烦人的任务 为了解决这个问题 我们创建了基于Python的长度转换程序 能够帮助你轻松转换任何单
  • wsl2安装及相关编程环境配置

    wsl2的安装及相关环境配置 1 设置 gt 更新和安全 gt 开发者选项 gt 开发人员模式 2 设置 gt 应用 gt 应用和功能 gt 程序和功能 gt 程序和功能 gt 启用或关闭windows功能 gt 适用于linux的wind