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

多图警告

WSL2真香?

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

那么WSL2真香吗?

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

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

System has not been booted with systemd as init system (PID 1). Can't operate.
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用户

sudo su

更新软件源

apt update

安装net-tools

apt install net-tools

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

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

文件默认内容为:

# This is the network config written by 'subiquity'
network:
ethernets:
eth0:
dhcp4: true
version: 2

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

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

# This is the network config written by 'subiquity'
network:
ethernets:
eth0:
dhcp4: true
eth1:
dhcp4: false
addresses: [10.10.10.1/24]
version: 2

应用配置

netplan apply

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

10、优化虚拟机访问

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

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. JDBC、ORM、JPA、Spring Data JPA,傻傻分不清楚?一文带你厘清个中曲直,给你个选择SpringDataJPA的理由!

    序言 Spring Data JPA作为Spring Data中对于关系型数据库支持的一种框架技术,属于ORM的一种,通过得当的使用,可以大大简化开发过程中对于数据操作的复杂度. 本文档隶属于< ...

  2. Windows-VS2017创建.NET项目

    首先新建->项目 选择如下, 注意要选择.NET Framework4.x 选择对应的项目类型 建议选上Web窗体(如果是用于实验的话) 完成后进行测试 如果出现 HTTP Error 403. ...

  3. SAP Web Dynpro-监视应用程序

    您可以使用ABAP监视器来监视Web Dynpro应用程序. 存储有关Web Dynpro应用程序的信息. 您可以使用T代码-RZ20查看此信息. 您可以在Web Dynpro ABAP监视器中查看以 ...

  4. 深入理解 volatile 关键字

    volatile 关键字是 Java 语言的高级特性,但要弄清楚其工作原理,需要先弄懂 Java 内存模型.如果你之前没了解过 Java 内存模型,那可以先看看之前我写过的一篇「深入理解 Java 内 ...

  5. 8.3 如何在Windows电脑安装Java开发环境(JDK)

    下载 来到JDK官方下载界面,找到Java SE 8(简称JDK 8)后面的JDK下载,来到该界面,先同意协议,然后下载对应平台的JDK,我们这里下载Windows x64. 安装 双击安装就行了了, ...

  6. tauri+vue开发小巧的跨OS桌面应用-股票体检

    最近打算写一个用于股票体检的软件,比如股权质押比过高的股票不合格,ROE小于10的股票不合格,PE大于80的股票不合格等等等等,就像给人做体检一样给股票做个体检.也实现了一些按照技术指标.基本面自动选 ...

  7. @Async注解的坑,小心

    大家好,我是三友. 背景 前段时间,一个同事小姐姐跟我说她的项目起不来了,让我帮忙看一下,本着助人为乐的精神,这个忙肯定要去帮. 于是,我在她的控制台发现了如下的异常信息: Exception in ...

  8. Tomcat介绍和配置使用

    目录 JavaWeb 的概念 什么是 JavaWeb? 什么是请求? 什么是响应? 请求和响应的关系 Web 资源的分类 常用的 Web 服务器 Tomcat 服务器和 Servlet 版本的对应关系 ...

  9. 002 JWT令牌

    1.JWT数据 Json Web Token 添加数据 --> 解析数据 --> 传递数据 1.1 JWT数据处传递流程 注意:JWT数据必须携带在请求头(Request Header)的 ...

  10. day04 Java_分支_循环

    精华笔记: Scanner接收用户输入的数据:共3步,不需要理解,先背下来 分支结构: if...else if结构:多条路 switch...case结构:多条路 优点:效率高.结构清晰 缺点:只能 ...