Hyper-V安装Arch踩坑指南|环球简讯

来源: 哔哩哔哩 2023-05-27 22:49:10

感觉在Windows11上,Hyper-V的虚拟机性能从启动速度和使用流畅度,到空间占用都远胜VMWare中的虚拟机

环境:


【资料图】

OS Version : Windows 11专业版 22H2 22621.1778

Hyper-V Version: 10.0.22621.1

CPU : 13th Gen Intel(R) Core(TM) i7-13700H   2.40 GHz

Virutal Version:Hyper-V Gen2

安装

在Arch的官方文档中,明确说明了,Hyper-Vz在使用Gen2版本安装Arch虚拟机时,无法使用从U盘/CD等物理设备启动安装系统,必须使用官方提供的.iso文件进行安装(相关链接Hyper-V - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Hyper-V#Virtual_machine_creation)

Hyper-V在虚拟机的内存设置中如果启动了动态内存,建议手动设定一个稍大的最小RAM的值(比如1024M),如果该值太小比如128M,Hyper-V仅分配了最低内存量,安装过程中执行安装软件包语句时,可能会内存不足,导致进程被杀,从而安装失败

Intel在最新的Kernel上集成的ibt(indirect branch tracking)功能与Hyper-V不兼容,会导致安装盘启动后无法进入用于安装系统。通过在启动界面选项时使用e,进入启动项命令编辑界面,并在内核启动的语句(以Linux开头的语句)最后添加ibt=off关闭ibt功能,按Ctrl+x即可正常启动。(相关连接Hyper-V 无法启动 Arch Linux 安装盘 - 知乎 (zhihu.com): https://zhuanlan.zhihu.com/p/612496309、FS#75178 : Unable to boot with kernel >= 5.18 (archlinux.org): https://bugs.archlinux.org/task/75178、[SOLVED] Unable to boot on installation medium with Hyper-V Gen2 / Installation / Arch Linux Forums: https://bbs.archlinux.org/viewtopic.php?id=281111)

同样的,安装完成后,在生成grub.cfg之前,需要在/etc/grub.d/10_linux中生成内核启动语句模板中也加入ibt=off,否则无法启动该内核对应的启动项

Arch 标准安装流程Installation guide - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Installation_guide

GRUB

GRUB安装配置流程GRUB - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/GRUB

支持主板的安全启动

如果要让grub支持从主板进行安全启动有两种方法:CA密钥或shim-lock,在grub-install命令后添加对应的选项即可

使用CA密钥:

使用shim-lock:

安全启动详细文档 Unified Extensible Firmware Interface/Secure Boot - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot

ibt=off

参考安装一节的第3、4点,由于Hyper-V不支持ibt的关系,需要在/etc/grub.d/10_linux中生成内核启动语句模板中也加入ibt=off,否则无法启动该内核对应的启动项:

/etc/grub.d/10_llinux中内核启动语句的模板:

修改:

然后用以下语句生成/boot/grub/grub.cfg

注意:不应该在/boot/grub/grub.cfg文件中直接修改加入ibt=off,该文件由grub-mkconfig根据/etc/grub.d下的文件生成,如果直接修改,下次手动运行或者是软件包更新时自动运行grub-mkconfig将会丢失修改,造成启动失败

在启动项中添加一些常用操作

GRUB Custom Configuration- ArchWiki (archlinux.org): https://wiki.archlinux.org/title/GRUB#Custom_grub.cfg

可以将以下命令添加到/etc/grub.d/40_custom中,从而在GRUB启动项中添加对应功能

关机

重启

进入主板UEFI设置

添加后使用grub-mkconfig更新grub配置

网络

网络配置详细文档Network configuration - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Network_configuration

使用dbcpcd

OpenSSH

宿主机远程

相关链接 linux - Hyper-V guest hostname doesn't resolve in local network - Super User: https://superuser.com/questions/1125459/hyper-v-guest-hostname-doesnt-resolve-in-local-network

Hyper-V默认的网络适配器的IP地址不固定,如果使用该适配器,就无法用固定IP访问虚拟机,但是由于主机名是固定的,如果虚拟机是Windows,我们可以通过设定的主机名访问虚拟机。

然而在Arch Linux,正常情况下Windows无法通过主机名(IP是可以ping通的)ping通Arch虚拟机,因为Windows是通过NetBIOS协议广播主机名的,要想让Arch走这个协议,需要安装samba:

软件源

使用阿里源

在/etc/pacman.d/mirrorlist最前面添加:

Arch官方https源Arch https Source: https://archlinux.org/mirrorlist/all/https/

添加archlinuxcn源

使用AUR包

paru不可在root账户使用,需要添加一个用户名并设置sudo权限

关键词:

你可能会喜欢: