虽然都是自己写的,还是贴个原文链接吧,如果文章里的图片错乱了,可能就是我贴错了,去看原文吧。

多图警告

WSL2真香?

WSL2相比于WSL1前者更类似于虚拟机,配合上Windoes Terminal的漂亮界面以及通过localhost直接访问,让人直呼真香!

那么WSL2真香吗?

WSL2理所当然的可以运行docker,你可以把一些mysql、redis之类的服务放在docker容器里运行。

当有一天你会发现在使用systemctl命令的时候会报这样的错误:

  1. System has not been booted with systemd as init system (PID 1). Can't operate.
  2. Failed to connect to bus: Host is down

出现这个问题是有解决方案的,去google搜索也能找到教程,但是点进教程连接我就默默地离开了页面(完全不想看)。

既然systemctl存在这样的问题,那其他地方也可能存在着问题,不如就直接使用虚拟机了。

Hyper-V方案

1、开启Hyper-V功能

在这里默认为你觉得WSL2有问题才考虑使用虚拟机的,那么你的设备一定开启了Hyper-V功能。

另外的,如果你没有使用过WSL2或者电脑系统为Windows10家庭版(Windows11家庭版),那么你需要参考下面的操作(具体操作方式请自行搜索,下面几步并非全部都是完成)。

  1. 如果你的系统为家庭版,你可以搜索家庭版开启Hyper-V的教程。
  2. 如果你的系统为家庭版,你可以更换系统为专业版或者使用 蓝点网 的系统版本转换工具进行转换(不论是更换系统还是进行转换,都会失去原来的正版系统)。
  3. 如果你的系统是专业版,仅仅需要在控制面板>程序>启用或关闭Windows功能中打开Hyper-V功能就可以。

2、Ubuntu镜像下载

Ubuntu Server 22.04 LTS

写这篇博客时的,最新server lts版本是22.04,目前没有测试18.04。

3、创建虚拟机配置(暂时不安装操作系统)

经过前几步的配置后应该可以在Win菜单中搜索到Hyper-V 管理器,打开后界面如下:

点击右侧操作栏目的新建>虚拟机后会出现配置引导


点击下一步进行配置


在这里需要制指定一下虚拟机的名称和虚拟机的存放位置。

如果是长期使用并且安装较多软件的话尽量选择一个存储空间足够的位置。

设置完成后点击下一步继续。


这里选择第二代,然后下一步。


内存先使用默认的1024MB动态内存,后期可以调整内存大小。


先选择Default Switch,默认的网络连接用来连接互联网,后面装完系统后需要再新增一个网卡来固定虚拟机IP用来SSH连接使用。

选择默认后点击下一步。


暂时选择不添加虚拟硬盘,点击下一步继续。


点击完成等待虚拟机配置创建完成。

4、添加硬盘

点击Hyper-V管理器主界面上前面几步创建的虚拟机


在弹出界面上依次点击SCSI控制器>硬盘驱动器>添加


在点击添加后我们可以看到如下的界面,可以看到能够使用虚拟硬盘和脱机的虚拟硬盘。

当我们有空闲的硬盘时可以考虑使用物理硬盘。

这里先选择创建虚拟硬盘,点击新建按钮


接下来回进入到虚拟硬盘创建引导。

这里可以看到有三种模式。

当想要创建一个长期使用的虚拟机时建议选择固定大小并分配较大容量。

现在做配置演示属于临时性的并且硬盘IO非常低,这里我选择动态扩展。


给硬盘一个名称并指定位置,建议放在创建的虚拟机目录下。


接下来是指定硬盘大小,如果是固定硬盘大小模式,这里指定之后硬盘就会被初始化为指定的大小。

如果是选择的动态扩展,这里创建的虚拟硬盘文件小于这个最大值。

当然可以选择复制物理硬盘或其他虚拟硬盘的内容到新的虚拟硬盘。


磁盘配置完成后会看到如下信息

5、添加系统镜像

再点击SCSI控制器>DVD驱动器>添加>映像文件选择下载好的Ubuntu22.04系统镜像。

6、启动位置

点击固件,调整启动顺序为如图所示:

7、关闭安全启动

点击安全,把启用安全启动去掉勾选,然后点击确定保存。

到这里虚拟机的基本配置已经完成了,接下来就是启动安装系统了。

8、安装系统

在主界面上选中我们创建的虚拟机右击连接,在弹出窗口中点击启动。


等待几秒后会出现选择菜单,这里我们选择第一项安装系统。


经过等待几十秒后出出现语言选择界面,然后选择English


选择正常安装


网络配置我们默认使用DHCP,这里不要修改否则可能安装完成后无法连接互联网。

这个eth0网卡就的Hyper-V的Default Switch,它的IP地址是系统开机自动分配的,我们无法固定这个IP,后面将通过再添加一个网卡的方式实现固定IP连接SSH。


代理设置和源设置默认就可以


硬盘分区选择,第一个方案,继续。想自定义分区可以参考:UbuntuServer2204分区


这是默认提供的分区方案,我们可以看到free space还有60G+的空间。

选择中free space后回车,选择Create Logical Volume

设置如下配置后选择Create继续

设置完成后选择Done继续,会有一个确认提示,选择Continue。


接下来就是常见的用户信息设置了,设置完成后继续。


这里要选择上ssh服务,如图所示。


这一步是Snaps软件安装,一个都不要选,后面自己安装需要的软件。


接下来会进入安装阶段,等待出现Reboot Now选项。

选中reboot now,进行重启,这里一定会出错,不过没有关系,直接强制关机虚拟机就可以了。


接下来我们再次启动虚拟机就可以进入系统了。

9、配置固定IP

在Hyper-V管理器主界面点击右侧的虚拟交换机管理器,点击新建虚拟网络交换机>内部>创建虚拟交换机

按照如图所示的进行配置:


关闭虚拟机的系统,点击选中虚拟机进行设置。

选中添加硬件>网络适配器>添加

虚拟交换选中上面创建的10.10.10.254。

完成后保存虚拟机配置。


控制面板>网络和Internet>网络连接里可以看到上面配置的虚拟网卡。

需要给这个网卡配置固定的IP地址


启动虚拟机的系统,进入系统后切换到root用户

  1. sudo su

更新软件源

  1. apt update

安装net-tools

  1. apt install net-tools

编辑/etc/netplan下的唯一一个yaml文件

  1. vi /etc/netplan/00-installer-config.yaml

文件默认内容为:

  1. # This is the network config written by 'subiquity'
  2. network:
  3. ethernets:
  4. eth0:
  5. dhcp4: true
  6. version: 2

这里的网卡不一定都是eht,也可能是ens

需要添加一个网卡eth1,修改这个文件内容为:

  1. # This is the network config written by 'subiquity'
  2. network:
  3. ethernets:
  4. eth0:
  5. dhcp4: true
  6. eth1:
  7. dhcp4: false
  8. addresses: [10.10.10.1/24]
  9. version: 2

应用配置

  1. netplan apply

如果配置没有错误,在windows实体机器上ssh ubuntu@10.10.10.1就可以连接到虚拟机的Ubuntu了。

10、优化虚拟机访问

修改C:\Windows\System32\drivers\etc\hosts文件,在文件末尾添加

  1. 10.10.10.1 vmlinux1

在命令行中ssh ubuntu@vmlinux1就可以连接到系统了。

打开windows terminal,到设置中添加一项配置。

这里我没有设置图标,如果需要的话可以自行设置。

这样每次连接仅输入密码就可以了,如果觉得输入密码比较麻烦可以配置一下RSA密钥。

如果想要像WSL一样在资源管理器里就可以浏览linux文件,可以参考:sftp映射为win磁盘

11、挂载物理硬盘

要挂载物理硬盘必要条件是电脑是双硬盘的,这里要注意挂载的是硬盘不是分区。

首先将要挂载的物理硬盘清空所有分区(推荐使用 DiskGenius 来操作):

右击磁盘选择脱机。

得到如下状态的磁盘:

在虚拟机设置窗口依次点击SCSI控制器>硬盘驱动器>物理硬盘

只有存在脱机的物理硬盘这里才能识别到具体的硬盘

完成后确定保存配置。

需要注意的是挂载了物理磁盘后就不能再使用检查点了,需要关闭检查点后才能启动开机。

需要注意系统安装到物理硬盘上后,如果BIOS的第一启动项是这个硬盘的话,是完全可以启动的。

所以要设置一下BIOS让这个硬盘不会在第一启动位

最终解决方案

Buy a Mac

在hyper-v虚拟机中安装并配置linux的更多相关文章

  1. CentOS 7中安装和配置Promethues

    Prometheus 是什么? Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prome ...

  2. VMware 虚拟机图文安装和配置 AlmaLinux OS 8.6 教程

    前言: 这是<VMware 虚拟机图文安装和配置 Rocky Linux 8.5 教程>一文的姐妹篇教程,如果你需要阅读它,请点击这里. 2020 年,CentOS 宣布:计划未来将重心从 ...

  3. VMware 虚拟机图文安装和配置 Rocky Linux 8.5 教程

    前言 2020 年,CentOS 宣布:计划未来将重心从 CentOS Linux 转移到 CentOS Stream.CentOS 8 的生命周期已于 2021 年 12 月 31 日终止,而 Ce ...

  4. Linux环境搭建-在虚拟机中安装Centos7.0

    最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...

  5. 在虚拟机中安装CentOS7

    在虚拟机中安装CentOS7 听语音 | 浏览:17352 | 更新:2014-10-31 12:14 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅最快的到家服务,最优质的电脑清灰! 百 ...

  6. 在虚拟机中安装Ubuntu Server 15.04

    学Linux,上红联! 红联Linux门户|Linux通用技术|Linux发行版技术|Linux企业应用|Linux实验室|红联Linux论坛 Linux系统教程 Linux入门 Linux管理 Li ...

  7. 给虚拟机中的CentOS7配置固定ip

    在虚拟机中安装完了CentOS7之后,使用了DHCP来获取ip,vmware的网络连接使用了NAT模式.但是在把Linux设置为固定ip地址后,虚拟机里的linux可以ping通全网段的ip地址,但是 ...

  8. 在VM虚拟机中安装Centos操作系统

    首先我们要下载  Centos https://www.centos.org/ 这个是Centos官方 最新版本 7 https://www.centos.org/download/ 提供有 DVD安 ...

  9. 在 VirtualBox 虚拟机中安装 Arch Linux 系统指南

    How to install Arch Linux on VirtualBox 在 VirtualBox 虚拟机中安装 Arch Linux 系统指南 本文导航 1.Arch Linux 软件仓库2. ...

随机推荐

  1. nodeJS与MySQL实现分页数据以及倒序数据

    大家在做项目时肯定会遇到列表类的数据,如果在前台一下子展示,速度肯定很慢,那么我们可以分页展示,比如说100条数据,每10条一页,在需要的时候加载一页,这样速度肯定会变快了.那么这里我给大家介绍如何在 ...

  2. js中通过ajax调用网上接口

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. 2分钟实现一个Vue实时直播系统

    前言 我们在不敲代码的时候可能会去看游戏直播,那么是前台怎么实现的呢?下面我们来讲一下.第一步,购买云直播服务 首先,你必须去阿里云或者腾讯云注册一个直播服务.也花不了几个钱,练手的话,几十块钱就够了 ...

  4. SAP APO-供应网络计划

    供应网络计划整合了供应链中的所有流程-采购,制造和分销. 供应网络计划可以优化采购和生产,缩短订单完成时间,并改善客户服务. 供应网络计划与高级计划和优化的其他过程紧密集成,以开发用于购买,制造和分配 ...

  5. 毕设着急了吧?Python股票数据分析,制作动态柱状图

    写在前面的一些屁话: 雪球成立于 2010 年,是北京雪球信息科技有限公司旗下推出的投资者社区.雪球一直致力于为中国投资者提供跨市场(沪深.香港.美国),跨品种(股票.基金.债券等)的数据查询.资讯获 ...

  6. 编程思想转换&体验Lambda的更优写法和Lambda标准格式

    编程思想转换做什么,而不是怎么做 我们真的希望创建一个匿名内部类对象吗?不,我们只是为了做这件事情而不得不创建一个对象. 我们真正希望做的事情是:将run方法体内的代码传递给Thread类知晓. 传递 ...

  7. Math类和函数定义

    Math这个类是java系统内部当中的一个类,他用来提供一些基本的数学操作,他也有些工具可以给我们用比如 :abs--算绝对值   pow--算幂次   random--随机数   round--四舍 ...

  8. yum-config-manager: command not found

    yum-config-manager: command not found ,这个是因为系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum- ...

  9. java通过注解顺序通过映射导出excel

    import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.ann ...

  10. Scala学习第一天(Hello world)

    一.Scala介绍 1. Scala概念 Scala 是 Scalable Language 的简写,是一门多范式的编程语言 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于 ...