如何在WSL上导入任何Linux发行版

news2024/10/7 16:27:07

文章目录

    • 一、准备
      • 1. 开启`WSL`相关功能
      • 2. 升级`WSL`
      • 3. 设置默认的wsl版本
    • 二、通过 Microsoft Store 安装 Linux
      • 1. 查看 Microsoft Store 有哪些可安装的 Linux 发行版
      • 2. 安装 Linux 发行版
      • 3. 查看已安装的 Linux 发行版
      • 4. 启动Linux发行版
    • 三、通过Linux发行商提供的tar文件安装
      • 1. 导入 Alpine 发行版 Linux
      • 2. 启动 Alpine Linux
    • 四、通过Docker中导出容器的tar文件安装
      • 1. 在Docker中拉取CentOS镜像
      • 2. 创建CentOS容器
      • 3. 导出CentOS容器为tar文件
      • 4. 将tar文件导入到WSL
      • 5. 启动新导入的 CentOS

本文将总结如何在WSL上安装Linux发行版。

总结三种方式:
1)从Microsoft Store安装;
2)从Linux发行商提供的tar文件安装;
3)从Docker中导出容器的tar文件安装;

一、准备

1. 开启WSL相关功能

启用或关闭 Windows 功能中,勾选适用于 Linux 的 Windows 子系统虚拟机平台,确认保存后重启系统。
开启WSL

2. 升级WSL

在命令行窗口,执行如下命令,升级wsl

wsl --update

3. 设置默认的wsl版本

在命令行窗口,执行如下命令,设置wsl2为默认的版本

wsl --set-default-version 2

二、通过 Microsoft Store 安装 Linux

1. 查看 Microsoft Store 有哪些可安装的 Linux 发行版

使用wsl -l -o查看Microsoft Store有哪些可安装的 Linux 发行版

D:\WSL2>wsl -l -o
以下是可安装的有效分发的列表。
使用 'wsl.exe --install <Distro>' 安装。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed

2. 安装 Linux 发行版

这里以Debian为例

D:\WSL2>wsl --install Debian
正在安装: Debian GNU/Linux
已安装 Debian GNU/Linux。
正在启动 Debian GNU/Linux...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: chen
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
chen@GC:~$

安装过程中,会要求创建用户、设置密码,安装成功后便以该用户进入bash交互模式

3. 查看已安装的 Linux 发行版

使用wsl -l -v命令,可以查看当前已安装的Linux发行版

D:\WSL2>wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-22.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
  Debian                 Stopped         2

Ubuntu-22.04docker-desktopdocker-desktop-data 这三个是我本地安装Docker Desktop时自动安装的。

4. 启动Linux发行版

首次安装后会自动进入bash交互模式,若后续想再次进入,可执行wsl -d <Distro>命令

D:\WSL2>wsl -d Debian
chen@GC:/mnt/d/WSL2$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

三、通过Linux发行商提供的tar文件安装

部分Linux发行商会提供 包含发行版的所有 Linux 二进制文件 的tar包。比如:Alpine Linux

Alpine各版本下载:https://dl-cdn.alpinelinux.org/alpine/

下载适合你的版本,注意要tar.gz包,不是iso包。
我这里为了演示,下载的是minirootfs(只有3M,你能想象一个系统只有3M真的是牛啊):
alpine-minirootfs-3.18.3-x86_64.tar.gz

1. 导入 Alpine 发行版 Linux

使用wsl --import命令,将指定的 tar 导入为新分发。
完整格式:wsl --import <Distro> <InstallLocation> <FileName> [Options]

D:\WSL2>cd Alpine

D:\WSL2\Alpine>dir /B
alpine-minirootfs-3.18.3-x86_64.tar.gz

D:\WSL2\Alpine>wsl --import Alpine3.18 . .\alpine-minirootfs-3.18.3-x86_64.tar.gz
正在导入,这可能需要几分钟时间。
操作成功完成。

D:\WSL2\Alpine>

2. 启动 Alpine Linux

D:\WSL2\Alpine>wsl -d Alpine3.18
GC:/mnt/d/WSL2/Alpine# cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.18.3
PRETTY_NAME="Alpine Linux v3.18"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
GC:/mnt/d/WSL2/Alpine# cat /etc/alpine-release
3.18.3
GC:/mnt/d/WSL2/Alpine#

四、通过Docker中导出容器的tar文件安装

这里假定你已经按照了Docker DesktopDocker Engine
Windows Docker Desktop 安装
在CentOS中安装Docker Engine

更多安装方式可参考docker官网:
https://docs.docker.com/desktop/
https://docs.docker.com/engine/install/

接下来以安装 CentOS为例
(实际上docker上能找到几乎所有的Linxu/Unix等发行版)

1. 在Docker中拉取CentOS镜像

docker pull quay.io/centos/centos:centos7.9.2009

相信大多数人都无法访问 https://hub.docker.com/
如何知道CentOS有哪些版本(tag)可下载呢?
请参考:
Docker 中下载各版本的 CentOS、CentOS Steam 方式

也可以用官方的centos仓库下载

docker pull centos:centos7.9.2009

但官方的仓库里没有 stream 的版本,quay.io/centos/centos 仓库提供了所有版本(CentOS、CentOS Stream 各个版本)

2. 创建CentOS容器

D:\WSL2>docker images
REPOSITORY               TAG              IMAGE ID       CREATED         SIZE
quay.io/centos/centos    stream9          e3d50dda340a   38 hours ago    154MB
alpine                   latest           7e01a0d0a1dc   3 weeks ago     7.34MB
centos                   centos7.9.2009   eeb6ee3f44bd   23 months ago   204MB
quay.io/centos/centos    centos7.9.2009   8652b9f0cb4c   2 years ago     204MB

D:\WSL2>docker create --name CentOS7.9 8652b9f0cb4c
bd2f4bc3336e492dbea363e41c70f5356f70449395a1a3122acbafa604c9034b

直接复制IMAGE ID,然后使用docker create命令创建

3. 导出CentOS容器为tar文件

D:\WSL2\CentOS>docker ps -a
CONTAINER ID   IMAGE                    COMMAND       CREATED              STATUS                    PORTS     NAMES
bd2f4bc3336e   8652b9f0cb4c             "/bin/bash"   About a minute ago   Created                             
1852bde26843   centos:centos7.9.2009    "/bin/bash"   4 days ago           Exited (127) 4 days ago             centos7

D:\WSL2\CentOS>docker export -o centos7.9.2009.tar bd2f4bc3336e

D:\WSL2\CentOS>dir /B
centos7.9.2009.tar

复制CONTAINER ID,使用docker export -o命令导出容器为tar文件

4. 将tar文件导入到WSL

D:\WSL2\CentOS>wsl --import CentOS7.9 . .\centos7.9.2009.tar
正在导入,这可能需要几分钟时间。
操作成功完成。

D:\WSL2\CentOS>wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-22.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
  Alpine3.18             Stopped         2
  CentOS7.9              Stopped         2

5. 启动新导入的 CentOS

D:\WSL2\CentOS>wsl -d CentOS7.9
[root@GC CentOS]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@GC CentOS]#

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

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

相关文章

[PyTorch][chapter 53][Auto Encoder 实战]

前言&#xff1a; 结合手写数字识别的例子&#xff0c;实现以下AutoEncoder ae.py: 实现autoEncoder 网络 main.py: 加载手写数字数据集&#xff0c;以及训练&#xff0c;验证&#xff0c;测试网络。 左图&#xff1a;原图像 右图&#xff1a;重构图像 ----main----- 每轮训…

DHCP 服务器部署

| DHCP - - > Dynamic Host Configuration Protocol 动态主机配置协议 背景 任何一个需要上网的设备&#xff0c;都必须得有IP地址&#xff0c;子网掩码&#xff0c;网关&#xff0c;等等网络参数。比如&#xff1a;手机&#xff0c;电脑&#xff0c;智能手表&#xff0c…

【SpringBoot学习笔记】02.静态资源与首页订制

静态资源 Spring Boot 通过 MVC 的自动配置类 WebMvcAutoConfiguration 为这些 WebJars 前端资源提供了默认映射规则&#xff0c;部分源码如下。 jar包&#xff1a; JAR 文件就是 Java Archive File&#xff0c;顾名思意&#xff0c;它的应用是与 Java 息息相关的&#xff0c;…

IDEA 报 Cannot resolve symbol ‘HttpServletResponse‘ 解决

springboot2版本换成springboot3之后&#xff0c;代码这里突然报红了&#xff0c; 首先要淡定&#xff0c;把原先Import的引入删掉&#xff0c;重新引入试试呢&#xff0c;是不是很简单哈哈。 原来&#xff0c;springboot3的路径是&#xff1a; import jakarta.servlet.http…

Docker之私有仓库 RegistryHarbor

目录 一、Docker私有仓库&#xff08;Registry&#xff09; 1.1 Registry的介绍 二、搭建本地私有仓库 2.1首先下载 registry 镜像 2.2在 daemon.json 文件中添加私有镜像仓库地址 2.3运行 registry 容器 2.4Docker容器的重启策略 2.5为镜像打标签 2.6上传到私有仓库 2…

【车载雷达信号处理】利用sinc函数实现扣点

针对信号处理流程中多次FFT输出的频谱结果&#xff0c;在特殊的场景下&#xff0c;可能存在针对某一特定频点的固定"虚警"&#xff0c;所以针对某一个特定频点进行“扣点”的操作是常有的信号处理流程需求。不仅如此&#xff0c;针对最大能量值的扣点也能在不适合使用…

文件修改时间能改吗?怎么改?

文件修改时间能改吗&#xff1f;怎么改&#xff1f;修改时间是每个电脑文件具备的一个属性&#xff0c;它代表了这个电脑文件最后一次的修改时间&#xff0c;是电脑系统自动赋予文件的&#xff0c;相信大家都应该知道。我们右击鼠标某个文件&#xff0c;然后点击弹出菜单里面的…

并发编程(四大函数接口) 06 详细讲解

四大函数接口 函数接口&#xff1a;接口中只有一个方法 Function Function函数型接口&#xff0c;有一个输入参数&#xff0c;有一个输出只要是函数型接口可以用Lambda表达式简化 函数函数型接口&#xff0c;有一个输入参数&#xff0c;有一个输出只要是函数型接口可以用lamb…

并发容器11

一 JDK 提供的并发容器总结 JDK 提供的这些容器大部分在 java.util.concurrent 包中。 ConcurrentHashMap: 线程安全的 HashMap CopyOnWriteArrayList: 线程安全的 List&#xff0c;在读多写少的场合性能非常好&#xff0c;远远好于 Vector. ConcurrentLinkedQueue: 高效的并…

element 级联选择框偏移

如图所示&#xff0c;选择之后&#xff0c;位置跑到了左上角 添加:append-to-body"false",在弹出框的定位出现问题时&#xff0c;可将该属性设置为 false

(第六天)初识Spring框架-SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录

SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录&#xff08;第六天&#xff09;初识Spring框架 ​ 昨天我们已经把Mybatis框架的基本知识全部学完&#xff0c;内容有Mybatis是一个半自动化的持久层ORM框架&#xff0c;深入学习编写动态SQL&a…

淘宝京东1688商品价格监控(电商价格监测API接口系列)

淘宝价格监控&#xff0c;电商价格监测软件目前市面有一款是最火的&#xff0c;针对各个平台都可以进行价格监测&#xff0c;很多实用功能&#xff0c;今天我们就来介绍一下品牌卫士这款价格24小时监测软件都有哪些功能。 一&#xff0c;覆盖全网全平台 天猫淘宝、闲鱼、京东、…

RK3588平台驱动调试篇 [ GPIO篇 ] - RK3588-对GPIO的操作控制

1. 简介 RK3588从入门到精通本⽂介绍Linux操作gpio⽅法开发板&#xff1a;ArmSoM-W3 2. GPIO配置 Rockchip Pin的ID按照 控制器(bank)端口(port)索引序号(pin) 组成 2.1 GPIO驱动介绍 驱动包括Pinctrl驱动&#xff08; drivers/pinctrl/pinctrl-rockchip.c &#xff09; 和…

servlet初体验之环境搭建!!!

我们需要用到tomcat服务器&#xff0c;咩有下载的小伙伴看过来&#xff1a;如何正确下载tomcat&#xff1f;&#xff1f;&#xff1f;_明天更新的博客-CSDN博客 1. 创建普通的Java项目&#xff0c;并在项目中创建libs目录存放第三方的jar包。 建立普通项目 创建libs目录存放第三…

2023_Spark_实验三:基于IDEA开发Scala例子

一、创建一个空项目&#xff0c;作为整个项目的基本框架 二、创建SparkStudy模块&#xff0c;用于学习基本的Spark基础 三、创建项目结构 1、在SparkStudy模块下的pom.xml文件中加入对应的依赖&#xff0c;并等待依赖包下载完毕。 在pom.xml文件中加入对应的依赖 ​<!-- S…

模拟4~20ma电流输出的设计

文章目录 1. 原理2. 使用GP8102S或GP8212S进行设计2.1 共地型设计2.2 共源型设计2.3 其它电流需求 3. 隔离光耦电源连接方案4. 利用GP8102S实现0-40V 的可编程电压输出 1. 原理 4 ~ 20ma电流输出的目的不用多说&#xff0c;今天就简单聊一下4 ~ 20ma电流输出是怎么设计出来的&…

【AI】数学基础——概率论

随着联结主义学派的兴起&#xff0c;概率统计已经取代了数理逻辑&#xff0c;成为了人工智能研究的主流工具 数理统计的关注点是 无处不在的可能性 对随机事件发生的可能性进行规范的数学描述是概率论的公理化过程 频率学派认为先验分布式固定的&#xff0c;模型参数靠最大似…

C++day6

1. #include <iostream>using namespace std; class Animal { private:int id; public:Animal(){}Animal(int id):id(id){}virtual void show(){cout << "动物园门牌号:" << id << endl;} }; class Houzi:public Animal { private:string n…

用变压器实现德-英语言翻译【02/8】: 位置编码

一、说明 本文是“用变压器实现德-英语言翻译”系列的第二篇。它从头开始引入位置编码。然后&#xff0c;它解释了 PyTorch 如何实现位置编码。接下来是变压器实现。 二、技术背景 位置编码用于为序列中的每个标记或单词提供相对位置。阅读句子时&#xff0c;每个单词都依赖于它…