windows通过wsl2安装linux系统之Ubuntu,傻瓜式安装

期望通过每一次分享,让技术的门槛变低,落地更容易。 —— around

目录

  • 1.基础环境和要求
  • 2.安装wsl2
  • 3.安装linux系统
  • 4.迁移linux系统挂载
  • 5.配置linux账号密码
  • 6.配置ssh登录方式
  • 待续…

前言

为什么要在windows上安装linux,这个问题当你是研发、测试、运维人员,我相信应该有你使用的场景,特别是部署和测试较大的服务,直接本地模拟线上真实环境操作会更好。

为什么不安装vmware、docker之类的虚拟化应用呢,因为最终跑不掉还是要安装linux系统,所以干脆直接运行一个可交互的双系统来的好,并且vmware使用时间长了莫名其妙的问题和垃圾太多了。

正文

1.基础环境和要求

  • 操作系统
    必须是windows10(版本不低于1903)或windows11。
    可以点击控制面板或我的电脑右键查看属性,参考下图所见内容,如果你是windows10,版本号请保证不低于22H2,否则在接下来的安装过程中会出现非常多错误问题。
    在这里插入图片描述
    在微软官网提到了更详细的要求,也可参考下图。
    在这里插入图片描述

  • 系统设置
    请打开控制面板 - 程序和功能,点击启用或关闭windows功能,接下来选中“适用于Linux的Windows子系统”,点击确定,之后可能需要重启系统。
    在这里插入图片描述
    也可以使用下面的命令进行操作。

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
  • 开启虚拟化支持
    如果你的windows系统上安装了docker、vmware、模拟器之类的虚拟化软件应该就已经开启了,如果没有需要去开一下,这里只展示命令了,图形化界面还可去控制面板 - 程序和功能 - 启用或关闭windows功能中去开启。

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
  • 命令行
    确保本地有这三个命令行工具任意一个:cmd、powershell、terminal

2.安装WSL2

关于使用wsl1还是wsl2,作为一个研发,初始使用能用新的就别用旧的了,因为按照完毕后,以后不是有问题,不太会考虑去升级的,所以这次尽量选更新点的,下面是2个版本之间的对比,也可以自行选择。
在这里插入图片描述
下面进入正式按照环节,打开windows本地的命令行cmd、powershell、terminal三者任意一个就行,但必须是右键管理员运行,有人问怎么使用管理员运行,看这个图,先搜索,再鼠标右键以管理员身份运行,如果不通过管理员身份,中途会出现部分命令无法执行的问题。
在这里插入图片描述
请先在命令行输入wsl看看是不是命令无效,如果是,直接执行安装

wsl --install

如果提示别的,请执行

wsl --update 

安装完毕后验证一下安装的版本

PS C:\Users\pc> wsl -v
WSL 版本: 2.2.4.0
内核版本: 5.15.153.1-2
WSLg 版本: 1.0.61
MSRDC 版本: 1.2.5326
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26091.1-240325-1447.ge-release
Windows 版本: 10.0.19045.4780

如果你的wsl版本不是2.x的,说明需要升级,可以执行

接下来查询可选的操作系统

wsl --list --online

如果执行提示无法解析地址,或报错80080005表示你的网络有点小问题,找个梯子或者科学方法吧,不然无法拉取系统镜像了,下图为我不使用梯子和使用后执行命令的错误和正确情况。
在这里插入图片描述
确认此步骤查询没问题,我们就进入系统安装环节。

3.安装linux系统

请先确保可见下面命令的执行可见操作系统列表。

wsl --list --online

若可见列表,直接安装指定操作系统即可,我这里直接安装的Ubuntu

# 设置默认安装wsl2发行版系统
wsl --set-default-version 2
# 更改最后的名称为前面命令查询到的结果,不明白可以参考下图
wsl --install -d Ubuntu

若只想针对指定版本的系统做1或2版本的设置,默认可以忽略下面的操作

# 替换中间系统名称即可,后面的2就是代表2版本
wsl --set-version Ubuntu-20.04 2

在这里插入图片描述
执行安装完毕后会进入操作系统安装界面,如果这一步提示安装失败,注意检查自己是否有开梯子,不然可能会持续失败。同时,失败的原因还存在当前系统版本不支持,windows10请务必升级到1903和22H2之后。
确认完整系统完毕后,请记得确认一下系统安装情况,版本如果是显示的2表示前面的设置完成

PS C:\Users\pc> wsl -l -v
  NAME       STATE           VERSION
  Ubuntu     Running         2

完成系统安装后,需要创建linux系统的系统管理员,创建过程的标识如下图
在这里插入图片描述
上述创建账号的窗口可以通过2个方式打开:

  1. 点击电脑开始菜单,应该有最新创建的那个ubuntu图标应用,直接点开,会进入上述界面;
    在这里插入图片描述
  2. 直接打开终端cmd、powershell、terminal任意一个,直接输入wsl进入;
PS C:\Users\pc> wsl
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.153.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

This message is shown once a day. To disable it please create the
/root/.hushlogin file.
root@DESKTOP-7DNO2OG:/mnt/c/Users/pc#

至此完成系统安装。

4.迁移linux系统挂载

wsl2的文件系统是通过windows挂载磁盘中的vhdx实现的,此linux系统默认会安装在C盘中,路径大概是如下,有兴趣可以找找。

C:\Users\${系统用户名}\AppData\Local\Packages\CanonicalGroupLimited.${安装系统临时命名}\LocalState\ext4.vhdx

也就是说,随着我们在这个系统上安装越多东西,它会直接占用C盘空间,显然不符合长期使用的路子,我们先更改一下将磁盘映射挂载到其他目录中。
先将目前在运行的系统全部关闭掉。

PS C:\Users\pc> wsl --shutdown
PS C:\Users\pc> wsl -l -v
  NAME       STATE           VERSION
* Ubuntu    Stopped         2

系统状态为停止后即可开始迁移文件系统,我们先对目前的文件系统做镜像导出。

# 在管理员命令行窗口执行
# ubunt   表示上述我查询的子系统名称
# D:\wsl\system\ubuntu.tar 表示我需要将子系统镜像导出到哪里存储
PS C:\Users\pc> wsl --export Ubuntu D:\wsl\system\ubuntu.tar
正在导出。
操作成功完成

短暂等待后应该即可导出完成,接下来我们要做的就是卸载当前的系统文件挂载。

PS C:\Users\pc> wsl --unregister Ubuntu
正在注销。
操作成功完成。

如何确认文件挂载删除成功,打开我电脑文件夹参考下图确认即可。
在这里插入图片描述
接下来继续执行到新的地址中做挂载,请尽量选择空间大的盘符,避免多次迁移的问题。

# ubunt22 表示新的系统名称是什么
# D:\wsl\ubuntu22\ 表示新的系统文件挂载在哪个目录中
# D:\wsl\system\ubuntu.tar 表示需要导入的是哪个子系统文件
# --version 2 表示使用wsl2还是wsl1版本
wsl --import  ubunt22  D:\wsl\ubuntu22\  D:\wsl\system\ubuntu.tar  --version 2

导入完毕后直接打开系统,看是否能进入操作系统即可。

5.配置linux账号密码

每个子系统的账号密码独立的,且不予windows账户产生关系,若忘记了操作系统的账号密码,请打开命令行工具,并使用以下命令进入默认 WSL 分发版的根目录:

wsl -u root

如果需要在非默认分发版中更新忘记的密码,请使用命令:

#将 Ubuntu 替换为目标分发版的名称。
wsl -d Ubuntu -u root

在命令行工具内的根级别打开 WSL 发行版后,可使用此命令更新密码:

# 其中 <username> 是发行版中帐户的用户名,而你忘记了它的密码
passwd <username>

系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在命令行工具内关闭

exit

6.配置linux系统ssh登录

更新子系统

# 适用于 Ubuntu 和 Debian
sudo apt update && sudo apt upgrade

在windows系统上直接访问linux,使用terminal已经是看起来最友好的方式了,但并不好用,这里建议使用ssh的方式进行访问,这样我们就能使用xshell之类的应用无缝访问,但初始安装的ubuntu是没有ssh的,好像ubuntu24版本默认自带了,因此我们需要自己安装。

# 尝试启动ssh服务,发现没有这个服务
root@DESKTOP-7DNO2OG:/data# service ssh start
Failed to start ssh.service: Unit ssh.service not found.
# 接着执行安装服务
root@DESKTOP-7DNO2OG:/data# sudo apt-get install openssh-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
......

安装完毕后,执行下面命令确认服务状态,我执行完毕后处于active状态了,说明开启sshd服务成功,可以被远程访问了。

root@DESKTOP-7DNO2OG:/data# systemctl restart ssh.service
root@DESKTOP-7DNO2OG:/data# service ssh status
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-09-09 14:04:41 CST; 7s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 1245 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 1246 (sshd)
      Tasks: 1 (limit: 19089)
     Memory: 1.8M
     CGroup: /system.slice/ssh.service
             └─1246 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

接着再设置系统启动开启sshd服务

root@DESKTOP-7DNO2OG:/data# systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh

服务启动成功了,但本地可能访问不了,因为端口、ip、账号、是否使用证书等配置还没有做,下面去修改sshd配置,以下为账号密码最小配置方式,由于是本地不考虑安全问题。

# 编辑本页面
vi /etc/ssh/sshd_config

#接下来放开被注释的属性,并设置为自己想要的
# 系统ssh访问端口号
Port 50022
# 许可访问ip
ListenAddress 0.0.0.0
# 开启密码验证方式
PasswordAuthentication yes

# 重启sshd服务
systemctl restart sshd

至此,sshd服务配置完成,通过你自己习惯用的第三方ssh工具连接即可。
若需要开启外部访问,建议关闭账号密码访问方式,配置证书访问,本文最后附一下所有配置证书登录和完整的sshd_config配置。

附:

1.配置证书登录模式,创建证书,修改sshd_config

# 生成证书,建议添加密码,出现在/root/~/.ssh目录下
ssh-keygen -t rsa
# 导入公钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 设置权限
chown -R 0700  ~/.ssh
chown -R 0644  ~/.ssh/authorized_keys

# 设置策略
vi /etc/ssh/sshd_config

RSAAuthentication yes
StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# 重启服务
systemctl restart sshd

# 将id_rsa复制到远程连接的客户端电脑
# 配置通过证书ssh连接
# 连接成功后继续去服务器修改策略
vi /etc/ssh/sshd_config

# 关闭通过密码登录(请先保证使用证书登录成功,再来修改关闭密码登录策略)
PasswordAuthentication no  

# 重启服务
systemctl restart sshd

# 完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/874354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rancher搭建k8s及jenkins自动化部署

1、准备环境 角色IP用途k8s-rancher-master192.168.3.63master节点k8s-rancher-node01192.168.3.64node节点k8s-rancher-node02192.168.3.66node节点k8s-rancher-server192.168.2.33rancher-server节点注: 服务器名需要配置不同,相同服务器名不能加入node节点 在所有节点进行…

1万3医学考研题库医学题库ACCESS\EXCEL数据库

今天这个题库按知识点分章节模块智能练习&#xff0c;覆盖书本上所有知识点以及考点&#xff0c;在真#题的解析里边也有详细的展示&#xff1b;另外&#xff0c;这份数据库与《4820道西#医综合真题西#医真#题ACCESS数据库》、《4170条中#医综合真#题中医真#题ACCESS\EXCEL数据库…

Android V 广播注册和配置注意事项问题

现象 在Android V平台上&#xff0c;应用注册非Protected广播时&#xff0c;如果没有加导出flag会抛出异常导致进程crash。 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.SecurityException: com.demo.myapplication: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORT…

如何用3个月零基础入门网络安全?_网络安全零基础怎么学习

前 言 写这篇教程的初衷是很多朋友都想了解如何入门/转行网络安全&#xff0c;实现自己的“黑客梦”。文章的宗旨是&#xff1a; 1.指出一些自学的误区 2.提供客观可行的学习表 3.推荐我认为适合小白学习的资源.大佬绕道哈&#xff01; →点击获取网络安全资料攻略← 一、自学…

k8s的配置管理

一、配置管理分为两种&#xff1a; 1. 加密配置&#xff1a;用来保存密码和token密钥对以及其它敏感的k8s资源。 2.应用配置&#xff1a;我们需要定制化的给应用进行配置&#xff0c;我们需要把定制好的配置文件同步到pod当中的容器。 二、加密配置 1.secret三种类型&#xf…

YOLOv8改进 | 模块缝合 | C2f 融合RVB + EMA注意力机制【二次融合 + 结构图】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

《垃圾回收的算法与实现》-算法-摘抄

本文是书籍《垃圾回收的算法与实现》的摘抄&#xff0c;不涉及算法源码及步骤讲解模块。 预备 对象由头(header)和域(field)构成。 头&#xff1a;对象中保存对象本身信息的部分&#xff0c;主要含有以下信息&#xff1a;对象的大小和种类。 域&#xff1a;对象使用者在对象…

图结构详解

概述 图是由有穷非空集合的顶点和顶点之间的边组成的集合&#xff0c;通常表示为 G(V,E)。G 表示一个图&#xff0c;V 是 图 G 顶点的集合&#xff0c;E 是图 G 边的集合。在图形结构中&#xff0c;数据之间具有任意联系&#xff0c;任意两个数据之间都可能相关&#xff0c;可…

彻底解决 node/npm, Electron下载失败相关问题, 从底层源码详解node electron 加速配置

最近玩了一下electron项目, 总是会遇到electron的下载失败问题, 于是看了一下node源码, 做一个记录. node/npm 加速配置 这个配置通过设置node配置里面的registry 这个配置项来完成加速. 配置方法 npm config set registry https://registry.npmmirror.com上面的命令就是将当…

打破界限,自闭症寄宿学校带给孩子的改变

在社会的广阔画卷中&#xff0c;有一群特别的孩子&#xff0c;他们以独特的视角感知世界&#xff0c;以非凡的方式表达情感&#xff0c;他们就是自闭症儿童。自闭症&#xff0c;这个听起来略带神秘色彩的词汇&#xff0c;实则承载着无数家庭的期盼与挑战。在这片充满爱的土地上…

C++设计模式——Iterator迭代器模式

一&#xff0c;迭代器模式的定义 迭代器模式是一种行为型设计模式&#xff0c;它使得遍历一个容器对象中的元素变得更加简单。 迭代器模式将遍历操作从容器对象&#xff08;如集合、列表&#xff09;中分离出来&#xff0c;它通过迭代器对象来遍历容器对象中的元素&#xff0…

RK3568平台开发系列讲解(PWM篇)使用 sysfs 接口操作 pwm

🚀返回专栏总目录 文章目录 一、查看 pwm 设备信息二、使用 sysfs 操作 PWM沉淀、分享、成长,让自己和他人都能有所收获!😄 PWM 子系统被划分为了三个层次, 分别为用户空间、 内核空间和硬件层, 内核空间包括 PWM 设备驱动层、 PWM 核心层和 PWM 适配器驱动层 一、查看…

JS面试真题 part3

JS面试真题 part3 11、bind、call、apply区别&#xff1f;如何实现一个bind12、JavaScript中执行上下文和执行栈是什么13、说说JavaScript中的事件模型14、解释下什么是事件代理&#xff1f;应用场景&#xff1f;15、说说你对闭包的理解&#xff1f;闭包使用场景 11、bind、cal…

分布式技术概览

文章目录 分布式技术1. 分布式数据库&#xff08;Distributed Databases&#xff09;2. 分布式文件系统&#xff08;Distributed File Systems&#xff09;3. 分布式哈希表&#xff08;Distributed Hash Tables, DHTs&#xff09;4. 分布式缓存&#xff08;Distributed Caching…

面向对象需求分析

1. 面向对象分析概述 1.1 面向对象基本概念 以对象为中心&#xff0c;以类为构造机制&#xff0c;来认识、理解、刻画客观世界和设计、构建相应的软件系统。 1.2 UML统一建模语言 为什么要使用UML UML基本概念 统一建模语言&#xff08;UML&#xff09;是一个支持模型化和软…

【电子通识】半导体工艺——刻蚀工艺

在文章【电子通识】半导体工艺——光刻工艺中我们讲到人们经常将 Photo Lithography&#xff08;光刻&#xff09;缩写成 Photo。光刻工艺是在晶圆上利用光线来照射带有电路图形的光罩&#xff0c;从而绘制电路。光刻工艺类似于洗印黑白照片&#xff0c;将在胶片上形成的图像印…

opencv之图像梯度

图像梯度 图像梯度计算的是图像变化的速度。对于图像的边缘部分&#xff0c;其灰度值变化较大&#xff0c;梯度值也较大&#xff1b;相反&#xff0c;对于图像中比较平滑的部分&#xff0c;其灰度值变化较小&#xff0c;相应的梯度值也较小。一般情况下&#xff0c;图像梯度计…

首批通过!华为云CodeArts Snap智能开发助手通过可信AI智能编码工具评估,获当前最高等级

近日&#xff0c;华为云CodeArts Snap智能开发助手在中国信通院组织的智能编码工具首轮评估中&#xff0c;最终获得4级评级, 成为国内首批通过该项评估并获得当前最高评级的企业之一。 此次评估以《智能化软件工程技术和应用要求 第2部分&#xff1a;智能开发能力》为依据&…

ubuntu 20.04 一直卡在登录界面,即使密码正确也无法登录(失败记录)

ubuntu 20.04 一直卡在登录界面&#xff0c;即使密码正确也无法登录 这次是装实体机&#xff0c;一次失败的尝试。。。 名称型号CPUIntel Xeon E5-2673 V3GPURTX 3060 mobile 安装的时候不要选install third-party software for graphics and Wi-fi hardware and additional …

Leetcode面试经典150题-55.跳跃游戏

解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public boolean canJump(int[] nums) {/**如果就一个位置&#xff0c;你本来就在这&#xff0c;肯定可以跳到*/if(nums.length 1) {return true;}/**这个题的解题思路是遍历数组&#xff0c;如果当前位置不在之…