您当前的位置: 首页 >  编程语言

在hyper-v虚拟机中安装并配置linux

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

WSL2真香?

WSL2相比于WSL1前者更类似于虚拟机,配合上的漂亮界面以及通过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家庭版),那么你需要参考下面的操作(具体操作方式请自行搜索,下面几步并非全部都是完成)。

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

写这篇博客时的,最新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。

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

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

这是默认提供的分区方案,我们可以看到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文件,可以参考:

11、挂载物理硬盘

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

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

右击磁盘选择脱机。

得到如下状态的磁盘:

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

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

完成后确定保存配置。

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

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

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

最终解决方案