标签 hyperv 下的文章


构建 UEFI 启动的 OpenWrt 磁盘映像


请注意,本文中的方法已经不再被建议使用。因为在 2021 年 9 月 5 日,随着 OpenWrt 21.02 的释出,官方已经正式开始提供支持 EFI 的镜像,只需要下载带 -efi 后缀的即可,如 generic-ext4-combined-efi.img.gz

可惜这篇文章只活了半年就结束了它的使命(主要还是我咕,不然早就可以出现了)


在 Hyper-V 上第一代和第二代虚拟机有着一些差别,最显著的就是旧式 BIOS 启动和 UEFI 启动的区别,但还有其他的例如热插拔硬盘和网卡的区别。我一直以为是 OpenWrt 对 UEFI 启动支持不良,官方才一直没有推出 EFI 的磁盘映像的。因此,之前我的做法都是创建好一个 OpenWrt 虚拟机后都一次性加一堆网卡,以解决临时要加一个口的问题。昨天准备给家里的 OpenWrt 升级版本,就又想到了这个事情,就想试一试如果用 UEFI 启动能不能正常使用。

OpenWrt x86 的启动本身就是 GRUB 了,按理说如果内核支持,那么只要整一个 ESP 分区,然后整个 EFI 版本的 GRUB 进去,grub.cfg 复制过来以后按照老样子启动就可以了。试了之后,确实就这么简单就能启动并正常使用了,暂时也没发现什么问题,就让它冒烟测试吧。因为在调研的时候似乎没看到介绍这么做的教程,我就来水一篇博客了。

// 点开我,里面还有许多内容!


让OpenWRT完美适应Hyper-V


-1 保持更新

请注意,本文中自行编译的方法已经不再被建议使用。第一点,自己编译可能会遇到一些奇怪的事情,同时也会浪费时间;二则是现在已经有了更好的解决方案。

OpenWRT 的官方 x86 版本现在自带了 Hyper-V 的支持,在官方页面直接下载 x86/64 版本的磁盘映像就可以直接使用第一代 Hyper-V 虚拟机挂磁盘启动了。因为官方给的磁盘映像是仅 MBR 的,如果想要使用第二代虚拟机(UEFI 模式)启动,请参考《构建 UEFI 启动的 OpenWrt 磁盘映像》来构建一个 UEFI 启动的磁盘映像。

Project LEDE他们说自己是Reboot了OpenWRT社区。而且很多用OpenWRT的也都升级到了LEDE。LEDE的x86_64版本是直接支持Hyper-V的,可以直接下载官网预编译版本而不用自己编译。因此建议大家使用LEDE的x86_64版本,本文中的方法仅用于学习借鉴。谢谢。

附上一张LEDE的x86_64的官方预编译版本在Hyper-V上的表现。

orz

0 为什么我会折腾这个

自己在国内放了台服务器,线路什么的都是自己拾掇的。因为丢在自己家里,那条线路也是肩负着我家出网的任务。一时兴起乘着续费线路的机会,打算试试软路由,就搞了个软路由。

首先我根据一篇文章,Hyper-v 安装 OpenWrt_x86 版教程(03.14更新) 在Hyper-V上装好了OpenWRT。

正当我兴奋的时候,我发现测速结果不太对劲。上传下载都只有20Mbps左右。和我的100Mbps相差甚远。看起来像是OpenWRT不支持Hyper-V的网卡,我一直搞不懂这是为什么,后来我闲逛的时候看到了一个贴子:Hyper-V安装Open-WRT的问题。于是我大概知道了为什么我的Hyper-V上的OpenWRT速度会如此坑爹。(看起来我的情况还比这个发帖人好一些哈哈哈)

我马上开始着手倒腾一个适合Hyper-V的OpenWRT。

1 准备工作

首先先get一个Linux Server,然后

git clone git://git.openwrt.org/15.05/openwrt.git

注意一些依赖包,我准备安装了以下包,如果还有别的依赖没安装,make前是会进行依赖检查的

sudo apt-get install build-essential openssl unzip libncurses5-dev zlib1g-dev libssl-dev subversion

make过程中经常会从网上下载需要的东西,大部分来自aws,情况大家都是知道的,所以自己准备好proxychains或者vpn等避免下载失败所导致的make中止。

// 点开我,里面还有许多内容!