对于嵌入式开发者来说,OpenWRT是一个功能强大的开源路由器操作系统。一般OpenWRT都是在路由器嵌入式系统运行,需要一笔费用购买专门的ARM架构开发板,才可以运行启动它。下面尝试将它运行在x86架构的虚拟机上,方便没有开发板的同学接触学习OpenWRT。
将要介绍在Ubuntu系统中拉取OpenWRT源码、进行配置编译,并部署到VMware虚拟机中,最后实现宿主机与虚拟机的网络互联。
环境准备
首先确保你的Ubuntu系统已安装必要的编译工具:
sudo apt updatesudo apt install build-essential libncurses5-dev libncursesw5-dev \zlib1g-dev gawk git gettext libssl-dev xsltproc rsync wget unzip python
可以查看下面的文章,快速在Windows部署Ubuntu Linux系统环境。
WSL:Windows下的Linux开发利器
输洲才纸,公众号:Linux物联笔录WSL:Windows下的Linux开发利器
还有下载VMWare Workstation虚拟机软件,安装在Windows系统上。
获取OpenWRT源码
克隆官方源码
git clone https://git.openwrt.org/openwrt/openwrt.gitcd openwrt
更新feeds(软件包列表)
./scripts/feeds update -a./scripts/feeds install -a
由于资源在国外,这个过程下载可能是极其缓慢的,需要耐心。
配置编译选项
进入配置界面
make menuconfig
关键配置选项
下列是有关于虚拟机和x86架构相关的配置选项
在配置界面中,需要特别注意以下设置:
Target System: 选择 x86
Subtarget: 选择 x86_64(根据你的虚拟机架构)
Target Profile: 选择 Generic x86/64
Target Images: 选中 Build VMware image files (VMDK)
文件系统格式建议使用squashfs
Network: 选择需要编译的网卡驱动
LuCI: 如果需要Web管理界面,选中相关的LuCI组件
menuconfig配置选项状态说明
空白选项 [ ]
[ ] Network Support
表示该功能不会被编译进最终镜像,也不会生成对应的模块。
选中状态 [*]
[*] Network Support
表示该功能将直接编译进内核,成为系统的一部分。
模块状态 <M>
<M> USB Support
表示该功能将编译为可加载模块,可以在系统运行时动态加载和卸载。
具体步骤
步骤1:进入目标系统配置
→ Target System (x86) --->
→ Subtarget (x86_64) --->
→ Target Images --->
使用 → 键进入 "Target System" 子菜单,选择 x86 架构。
步骤2:选择镜像格式
在 "Target Images" 菜单中:
[ ] Build ext4 filesystem images
[*] Build VMware image files (VMDK)
[ ] Build VirtualBox image files (VDI)
按 空格 键选中 VMware 镜像格式。
步骤3:配置网络驱动
→ Kernel modules --->
→ Network Devices --->
<*> Virtual Network Driver
<*> VMware VMXNET3 driver
确保选中虚拟机所需的网络驱动程序。
步骤4:保存配置
配置完成后,连续按 ESC ESC 键退出到主界面,选择:
< Save > - 保存当前配置到.config文件
< Exit > - 退出menuconfig
开始编译
启动编译过程
make -j$(nproc) V=s
-j$(nproc) 表示使用所有可用的CPU核心进行编译,V=s 表示输出详细信息。如执行 make -j4 V=s
若网络不好,可以先下载好所有资源再编译,先执行
make download V=s
再进行编译。
详细OpenWRT编译过程解析,请查看下面这篇文章。
OpenWrt工程及编译过程解析
公众号:Linux物联笔录OpenWrt工程及编译过程解析
获取编译镜像文件
编译完成后,在 bin/targets/x86/64/ 目录下可以找到生成的镜像文件:
openwrt-x86-64-generic-squashfs-combined.img.gz
openwrt-x86-64-generic-squashfs-combined.vmdk(VMware专用)
把 openwrt-x86-64-generic-squashfs-combined.vmdk 镜像文件复制到Windows系统,稍后用于VMWare安装。
VMware虚拟机部署
创建新虚拟机
选择"自定义"配置
硬件兼容性选择最新版本
选择"稍后安装操作系统"
选择Linux -> Other Linux 5.x or later kernel 64-bit
处理器和内存根据需求配置(建议至少1核2GB)
网络类型选择"桥接模式"
(其它配置按自己选择,最好默认)
选择使用现有虚拟磁盘,指向刚才生成的.vmdk文件
虚拟机设置调整
确保网卡设置为桥接模式
调整显存为4MB即可
网络桥接配置详解
VMware网络设置
宿主机设置:
打开Windows控制面板,进入"网络和Internet" → "网络连接"
确认"VMware Network Adapter"网络适配器已启用
在虚拟网络编辑器中,将VMnet桥接到物理网卡
虚拟机设置:
网络适配器选择"桥接模式"
复制物理网络连接状态勾选
OpenWRT网络配置
首次启动OpenWRT后,需要通过串口或修改网络配置:
# 编辑网络配置文件vi /etc/config/network# 修改lan口配置config interface 'lan' option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.1.1' # 设置与宿主机同一网段的IP option netmask '255.255.255.0' option gateway '192.168.1.254' # 宿主机网关 option dns '8.8.8.8'
重启网络服务
/etc/init.d/network restart
网络连通性测试
宿主机ping测试
# 在宿主机终端执行ping 192.168.1.1
OpenWRT ping宿主机测试
# 在OpenWRT终端执行ping 192.168.1.100 # 假设宿主机IP是192.168.1.100
测试外网连接
# 在OpenWRT中测试外网连通性ping 8.8.8.8
通过本文的详细步骤,在VMware中部署自编译的OpenWRT系统,并实现了与宿主机的网络互通。这个环境为后续的网络功能开发和测试提供了完善的基础平台。也方便进行OpenWRT应用开发。
OpenWRT的强大之处在于其可定制性,希望在这个基础上探索更多有趣的功能!
本文链接:https://www.kinber.cn/post/5979.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
