2. 环境搭建:在 Ubuntu 22.04 上安装 Renode,验证安装,启动第一个模拟
环境搭建这事儿,说简单也简单,说坑也多。我这些年帮团队搭过不下二十次 Renode 环境,从 Ubuntu 18.04 一路折腾到 22.04,踩过的坑能写个小本子。今天咱们就把 Ubuntu 22.04 上的安装流程捋一遍,保证你装完就能跑起来。
2.1 安装前的准备
先看看你的系统对不对。Ubuntu 22.04 LTS 是目前最稳的选择。我个人习惯用 Jammy Jellyfish 的桌面版,服务器版也行,但少了图形界面调试起来会麻烦些。
- 操作系统:Ubuntu 22.04 LTS(64-bit)
- 内存:至少 4GB(建议 8GB+)
- 磁盘:至少 5GB 空闲空间
- 网络:需要访问 GitHub 和 NuGet 源
嗯,这里要注意:如果你的 Ubuntu 是刚装好的,先把系统更新跑一遍:
sudo apt update
sudo apt upgrade -y
我曾经在一台没更新的系统上直接装 Renode,结果 Mono 运行时版本不对,折腾了两小时才找到原因。所以别偷懒,先更新。
2.2 安装 Mono 运行时
Renode 是用 C# 写的,底层依赖 Mono 运行时。Ubuntu 22.04 自带的 Mono 版本可能不够新,我建议直接从 Mono 官方源装。
为什么要这么做?因为 Renode 的某些功能需要 Mono 6.12 以上版本。你想想看,如果装了个旧版,跑起来报一堆莫名其妙的错,多闹心。
安装步骤:
- 导入 Mono 官方 GPG 密钥:
sudo apt install gnupg ca-certificates
sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
- 添加 Mono 源:
echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
- 安装 Mono 完整版:
sudo apt update
sudo apt install mono-complete -y
装完后验证一下:
mono --version
你应该能看到类似这样的输出:
Mono JIT compiler version 6.12.0.200 (tarball Fri Jul 14 09:27:11 UTC 2023)
版本号 6.12 以上就没问题。如果低于这个版本,检查一下源是不是加对了。
2.3 安装 Renode
Renode 官方提供了三种安装方式:源码编译、预编译包、以及 .NET 全局工具。我推荐用 预编译包,省时省力。
| 安装方式 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 源码编译 | 可定制、最新特性 | 编译时间长、依赖多 | 二次开发、贡献代码 |
| 预编译包 | 即装即用、稳定 | 更新稍慢 | 日常使用、教学 |
| .NET 全局工具 | 与 .NET 生态集成 | 需要 .NET SDK | .NET 开发者 |
咱们用预编译包。从 GitHub Releases 页面下载最新版:
wget https://github.com/renode/renode/releases/download/v1.14.0/renode_1.14.0_amd64.deb
然后安装:
sudo dpkg -i renode_1.14.0_amd64.deb
如果提示依赖缺失,跑一下:
sudo apt --fix-broken install -y
~/Downloads 目录,装完再删掉。这样不会污染家目录。
2.4 验证安装
装完别急着跑,先验证一下。打开终端,输入:
renode --version
正常会输出:
Renode version 1.14.0.39999 (2024-01-15T10:30:00)
如果提示 command not found,检查一下 /usr/bin 里有没有 renode 的软链接。没有的话手动建一个:
sudo ln -s /opt/renode/bin/renode /usr/bin/renode
接下来跑个简单的测试:
renode --test
这个命令会执行 Renode 内置的自检程序,大概跑 30 秒左右。如果一切正常,你会看到:
All tests passed!
我曾经遇到过自检卡在某个测试项上,后来发现是 Mono 的 JIT 编译缓存出了问题。清一下缓存就好了:
rm -rf ~/.cache/mono
2.5 启动第一个模拟
好,现在咱们来真的。启动 Renode 的交互模式:
renode
你会看到 Renode 的 Monitor 界面,类似这样:
(monitor)
这就是 Renode 的命令行控制台。咱们先加载一个最简单的平台——ARM Cortex-M3 的模拟。Renode 自带了很多平台描述文件,放在 /opt/renode/platforms 目录下。
输入以下命令:
include @platforms/cpus/cortex-m3.repl
这条命令会加载 Cortex-M3 的 CPU 模型。然后创建一个机器实例:
machine CreateMachine "my_machine"
接着把 CPU 挂到机器上:
machine LoadPlatformDescription @platforms/cpus/cortex-m3.repl
现在咱们的模拟器里已经有了一颗 Cortex-M3 核心。启动它:
machine Start
你会看到类似这样的输出:
Starting emulation...
CPU: ARMv7-M (Cortex-M3)
Frequency: 100 MHz
Memory: 256 KB
恭喜!你的第一个 Renode 模拟已经跑起来了。
- Renode 的模拟流程:加载平台描述 → 创建机器 → 启动模拟
- 平台描述文件(.repl)定义了 CPU、内存、外设等硬件信息
- Monitor 是 Renode 的控制台,所有操作都在这里完成
2.6 知识体系总览
下面这张图帮你理清 Renode 环境搭建和模拟启动的完整流程:
2.7 常见问题与避坑
安装过程中你可能会遇到一些问题。我把常见的列出来:
现象:sudo apt install mono-complete 报依赖错误。
原因:源没加对,或者网络问题导致 GPG 密钥没导入成功。
解决:重新执行 GPG 密钥导入步骤,确认源文件内容正确。
现象:运行 renode 提示找不到共享库。
原因:Mono 安装不完整,或者 LD_LIBRARY_PATH 没设置。
解决:重新安装 mono-complete,或者手动设置:
export LD_LIBRARY_PATH=/usr/lib/mono/4.5:$LD_LIBRARY_PATH
现象:machine Start 后没有输出,CPU 状态显示 stopped。
原因:平台描述文件没加载成功,或者机器创建顺序不对。
解决:先 machine CreateMachine,再 machine LoadPlatformDescription,最后 machine Start。顺序不能乱。