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

news2024/9/27 10:23:50

期望通过每一次分享,让技术的门槛变低,落地更容易。 —— 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

# 完成

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes动态分配存储卷组件 nfs-subdir-external-provisioner

Kubernetes动态分配存储卷组件 nfs-subdir-external-provisioner 存储组件 nfs-subdir-external-provisioner 是一个存储资源自动调配器&#xff0c;它可用现有的 NFS 服务器通过持久卷声明来支持 Kubernetes 持久卷的动态分配&#xff0c;自动创建的文件夹将被命名为 n a m …

Note24091101_基恩士日期获取相关测试01

基恩士日期获取相关测试 1、SEC和RSEC的使用&#xff1a; 资料如图&#xff1a; 要点提示&#xff1a;SEC和RSEC成对使用。 日期转秒&#xff0c;秒转日期测试如图所示&#xff1a; 2. LDWK与LDWKB星期接点的使用示例&#xff1a; 资料如图&#xff1a; 仿真如图&…

chapter14-集合——(List)——day18

目录 518-Set接口方法 518-Set接口方法

Rickdiculously Easy靶场渗透测试

靶机下载地址 https://www.vulnhub.com/entry/rickdiculouslyeasy-1,207/ 一.信息收集 1.端口扫描 nmap 172.16.1.20 -p- -sV 发现还扫描出一个flag 2.目录扫描 二.获取shell和提权 1、访问靶机IP地址 2、拼接并访问robots.txt文件 3、逐个访问&#xff0c;发现cgi-bin/tr…

‌移动管家手机智能控制汽车系统

‌ 手机可以通过下载特定的应用程序来控制汽车系统&#xff0c;实现远程启动、锁/解锁车门、调节车内温度等功能。‌ ‌ 手机智能控制汽车系统主要通过下载并安装特定的APP来实现。‌ 首先&#xff0c;用户需要确定自己的手机系统是安卓还是苹果版&#xff0c;然后前往应用…

图像和文本统一识别

图像和文本统一识别&#xff08;UNIT&#xff09;是一种尝试将图像识别和文本识别任务统一到单一模型中的技术。这种方法的目标是提高模型在处理包含文本信息的图像时的效率和准确性&#xff0c;从而使模型能够更好地理解和处理视觉内容中的文本信息。 使用的技术&#xff1a;…

浮毛危害人体健康?希喂、安德迈、有哈宠物空气净化器吸毛测评

养宠之前了解清楚相关的知识&#xff0c;这既是对宠物负责&#xff0c;也是对我们自己负责。宠物最让铲屎官头疼的就是毛发问题&#xff0c;大量脱落的毛发会带来繁重的清理任务&#xff0c;同时飘在空中浮毛还是潜藏在身边的健康”杀手“。浮毛微小、质量轻&#xff0c;容易随…

JAVA 使用POI实现单元格行合并生成

预期效果 maven引用 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency>Java代码实现 功能实现 private boolean callExcel(List<MColumnValueVo&g…

Nignx 增加权限(windows)

Nignx 增加权限&#xff08;windows&#xff09; 1、nginx增加权限配置 问题描述&#xff1a; windows下路径含有空格和路径符号产生的问题 server {listen 9025;server_name localhost;# 验证时的提示信息auth_basic "请输入用户和密码"; # 认证文件auth_b…

鸿蒙界面开发——组件(7):组件导航 页面路由

组件导航 (Navigation)(推荐) Navigation() Navigation(pathInfos: NavPathStack)Navigation是路由容器组件&#xff0c;一般作为首页的根容器&#xff0c;包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。Navigation组件适用于模块内和跨模块的路由切换&#xff0c…

【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs

【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs Introduction方法 使用传统GANS建模去噪分布理解模式覆盖率 Paper&#xff1a;https://arxiv.org/abs/2112.07804 Code&#xff1a;https://github.com/NVlabs/denoising-diffusion-…

大模型LLM部署学习

1、推理工具vLLM vLLM使用指北 https://zhuanlan.zhihu.com/p/685621164 VLLM官方文档 Welcome to vLLM! — vLLM 2、RAG&#xff08;检索增强生成&#xff09; https://zhuanlan.zhihu.com/p/675509396 RAG就是通过检索获取相关的知识并将其融入Prompt&#xff0c;让大模…

企业预算管理的数字化转型

在当今激烈的市场竞争中&#xff0c;企业面临着前所未有的挑战&#xff0c;尤其在成本控制和资源配置方面&#xff0c;预算管理成为企业成功运营的关键。然而&#xff0c;传统的预算管理方式&#xff0c;尤其依赖于Excel等工具的操作&#xff0c;随着企业规模的扩大和业务复杂度…

13步指南:如何建立品牌社区(附真实案例)

如果你正在寻找增强客户忠诚度、降低营销费用&#xff0c;并直接从客户那边获取创新想法的方法&#xff0c;那么创建一个品牌社区可能非常适合你。在这里&#xff0c;我们还推荐使用光年AI&#xff0c;将两者结合可以事半功倍。 例如&#xff0c;丝芙兰的美妆爱好者社区自2017…

SAP Fiori UI5-环境搭建-2022-2024界面对比

文章目录 一、Fiori项目初始化实际操作第一步&#xff1a;新建文件夹&#xff08;项目文件&#xff09;第二步&#xff1a;打开我们项目第三步&#xff1a;打开终端 部署环境第四步: XML中新增文本 二、 2023年Vscode中Fiori界面三 、2024年Vscode中Fiori界面 一、Fiori项目初始…

上海徐汇区开启大模型备案奖励申报

上海徐汇区开启大模型备案奖励申报 徐汇区作为全国首批人工智能战略性新兴产业集群&#xff0c;敏锐地抓住了通用人工智能的变革趋势和产业风口&#xff0c;率先打造了全国首个大模型创新生态社区“模速空间”&#xff0c;并创建了上海人工智能大模型创新生态集聚区。为了进一步…

2024伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码

一、端口说明、域名解析及服务器配置要求 1.1端口说明 使用二级域名映射的情况下 使用端口说明3306数据导入是可以开放 后期关闭 或者直接在服务器上面导入6379不用对外开放9903需要开放80需要开放 1.2 子域名说明&#xff1a; api.xxx.com接口 im.xxx.com通讯 web.xxx.…

Go跨平台Wails框架入门教程

前言 Go跨平台Wails UI应用框架是一个强大的工具&#xff0c;它允许开发者利用Go语言的性能优势和Web技术的灵活性来构建跨平台的桌面应用程序。以下是一个详细的Wails应用框架应用教程及相关示例的概述。 一、Wails简介 Wails是一个开源项目&#xff0c;旨在让开发者能够使…

2024.9 学习笔记

9.10 1.大地坐标系 大地坐标系&#xff08;Geodetic Coordinate System&#xff09;: 定义: 基于地球表面&#xff0c;通常使用经度、纬度和高度来描述位置。也可以称为东北天&#xff08;XYZ轴&#xff09;用途: 常用于地图制作、地理信息系统&#xff08;GIS&#xff09;和…

基于 NIM 建构多模态 AI-Agent (代码解析)

本次课程将着重介绍一下内容: 多模态模型基于 NIM 的调用方式基于 NIM 接口实现 Phi-3-Vision 的推理实践基于 Gradio 框架建立前端互动界面 申请NIM的API Key&#xff0c;来调用NIM的计算资源 进入NVIDIA NIM | phi-3-vision-128k-instruct, 点击Get API Key按钮&#xff0…