Hyper-V安裝Arch踩坑指南
感覺在Windows11上,Hyper-V的虛擬機(jī)性能從啟動(dòng)速度和使用流暢度,到空間占用都遠(yuǎn)勝VMWare中的虛擬機(jī)
環(huán)境:
OS Version : Windows 11專業(yè)版 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虛擬機(jī)時(shí),無法使用從U盤/CD等物理設(shè)備啟動(dòng)安裝系統(tǒng),必須使用官方提供的.iso文件進(jìn)行安裝(相關(guān)鏈接Hyper-V - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Hyper-V#Virtual_machine_creation)
Hyper-V在虛擬機(jī)的內(nèi)存設(shè)置中如果啟動(dòng)了動(dòng)態(tài)內(nèi)存,建議手動(dòng)設(shè)定一個(gè)稍大的最小RAM的值(比如1024M),如果該值太小比如128M,Hyper-V僅分配了最低內(nèi)存量,安裝過程中執(zhí)行安裝軟件包語句時(shí),可能會(huì)內(nèi)存不足,導(dǎo)致進(jìn)程被殺,從而安裝失敗
Intel在最新的Kernel上集成的ibt(indirect branch tracking)功能與Hyper-V不兼容,會(huì)導(dǎo)致安裝盤啟動(dòng)后無法進(jìn)入用于安裝系統(tǒng)。通過在啟動(dòng)界面選項(xiàng)時(shí)使用e,進(jìn)入啟動(dòng)項(xiàng)命令編輯界面,并在內(nèi)核啟動(dòng)的語句(以Linux開頭的語句)最后添加ibt=off關(guān)閉ibt功能,按Ctrl+x即可正常啟動(dòng)。(相關(guān)連接Hyper-V 無法啟動(dòng) 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中生成內(nèi)核啟動(dòng)語句模板中也加入ibt=off,否則無法啟動(dòng)該內(nèi)核對(duì)應(yīng)的啟動(dòng)項(xiàng)
Arch 標(biāo)準(zhǔn)安裝流程 Installation guide - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Installation_guide
GRUB
GRUB安裝配置流程 GRUB - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/GRUB
支持主板的安全啟動(dòng)
如果要讓grub支持從主板進(jìn)行安全啟動(dòng)有兩種方法:CA密鑰或shim-lock,在grub-install命令后添加對(duì)應(yīng)的選項(xiàng)即可
使用CA密鑰:
使用shim-lock:
安全啟動(dòng)詳細(xì)文檔 Unified Extensible Firmware Interface/Secure Boot - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot
ibt=off
參考安裝一節(jié)的第3、4點(diǎn),由于Hyper-V不支持ibt的關(guān)系,需要在/etc/grub.d/10_linux中生成內(nèi)核啟動(dòng)語句模板中也加入ibt=off,否則無法啟動(dòng)該內(nèi)核對(duì)應(yīng)的啟動(dòng)項(xiàng):
/etc/grub.d/10_llinux中內(nèi)核啟動(dòng)語句的模板:
修改:
然后用以下語句生成/boot/grub/grub.cfg
注意:不應(yīng)該在/boot/grub/grub.cfg文件中直接修改加入ibt=off,該文件由grub-mkconfig根據(jù)/etc/grub.d下的文件生成,如果直接修改,下次手動(dòng)運(yùn)行或者是軟件包更新時(shí)自動(dòng)運(yùn)行g(shù)rub-mkconfig將會(huì)丟失修改,造成啟動(dòng)失敗
在啟動(dòng)項(xiàng)中添加一些常用操作
GRUB Custom Configuration- ArchWiki (archlinux.org): https://wiki.archlinux.org/title/GRUB#Custom_grub.cfg
可以將以下命令添加到/etc/grub.d/40_custom中,從而在GRUB啟動(dòng)項(xiàng)中添加對(duì)應(yīng)功能
關(guān)機(jī)
重啟
進(jìn)入主板UEFI設(shè)置
添加后使用grub-mkconfig更新grub配置
網(wǎng)絡(luò)
網(wǎng)絡(luò)配置詳細(xì)文檔 Network configuration - ArchWiki (archlinux.org): https://wiki.archlinux.org/title/Network_configuration
使用dbcpcd
OpenSSH
宿主機(jī)遠(yuǎn)程
相關(guān)鏈接 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默認(rèn)的網(wǎng)絡(luò)適配器的IP地址不固定,如果使用該適配器,就無法用固定IP訪問虛擬機(jī),但是由于主機(jī)名是固定的,如果虛擬機(jī)是Windows,我們可以通過設(shè)定的主機(jī)名訪問虛擬機(jī)。
然而在Arch Linux,正常情況下Windows無法通過主機(jī)名(IP是可以ping通的)ping通Arch虛擬機(jī),因?yàn)閃indows是通過NetBIOS協(xié)議廣播主機(jī)名的,要想讓Arch走這個(gè)協(xié)議,需要安裝samba:
軟件源
使用阿里源
在/etc/pacman.d/mirrorlist最前面添加:
Arch官方https源 Arch https Source: https://archlinux.org/mirrorlist/all/https/
添加archlinuxcn源
使用AUR包
paru不可在root賬戶使用,需要添加一個(gè)用戶名并設(shè)置sudo權(quán)限