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

多图警告

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. 什么是AR技术?AR的价值究竟有多大?

    什么是AR技术? AR技术,解释来说就是增强现实(Augmented Reality),是一种实时地计算摄影机影像的位置及角度并加上相应图像.3D模型的技术,它的目标是把虚拟世界嵌套进真实世界进行互动 ...

  2. BUUCTF-FLAG

    FLAG 16进制打开没看到有什么东西,使用binwalk分离也没看到其他文件,猜测是否使用lsb隐写方式. StegSolve打开 可以看到是压缩包的文件头,save bin保存为zip文件解压 提 ...

  3. BUUCTF-qr

    qr 签到题

  4. MySQL十种锁,一篇文章带你全解析

    MySQL有两个核心的知识点,索引和锁.前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁. 1 为什么要加锁? 当多个事务并发操作同一批数据的时候,如果不加锁,就无法保 ...

  5. 3行python代码翻译70种语言,这个OCR神奇太赞了

    写在前面的一些P话: 今天给大家介绍一个超级简单且强大的OCR文本识别工具:easyocr. 这个模块支持70多种语言的即用型OCR,包括中文,日文,韩文和泰文等.完全满足了大家对于语言的要求,不管你 ...

  6. 【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

    上一篇介绍了表单控件,这一篇介绍一下表单里面的各种子控件的封装方式. 主要内容 需求分析 子控件的分类 子控件属性的分类 定义 interface. 定义子控件的的 props. 定义 json 文件 ...

  7. Note -「数论 定理及结论整合」

    数学素养 low,表达可能存在不严谨,见谅.我准备慢慢补上证明? Theorems. 裴蜀定理:关于 \(x, y\) 的线性方程 \(ax + by = c\) 有解,当且仅当 \(\gcd (a, ...

  8. HashSet集合的介绍和哈希值

    java.util.Set接口 extends Collection接口 Set接口的特点: 1.不允许存储重复的元素 2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历 java.uti ...

  9. 【水】关于 __attribute__

    目录 1. weak 2. aligned 3. __packed__ 4. always_inline 1. weak 实现如果 Func1 被定义了,我就调用 Func1, 否则就调用 MyFun ...

  10. 鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机

    鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机 原文转载自「刘悦的技术博客」https://v3u.cn/a_id_176 众所周知,尤文图斯需要一座欧冠奖杯,C罗 ...