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 以上版本。你想想看,如果装了个旧版,跑起来报一堆莫名其妙的错,多闹心。

安装步骤:

  1. 导入 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
  1. 添加 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
  1. 安装 Mono 完整版:
sudo apt update
sudo apt install mono-complete -y
注意: 安装过程可能比较慢,取决于你的网速。Mono 完整版大概 200MB 左右,耐心等就好。别中途中断,否则依赖关系会乱掉。

装完后验证一下:

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
小技巧: 我习惯把 Renode 的安装包下载到 ~/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 环境搭建和模拟启动的完整流程:

Renode 环境搭建与模拟启动流程 系统准备 Ubuntu 22.04 LTS 安装 Mono 运行时 版本 ≥ 6.12 安装 Renode 预编译包 / 源码 验证安装 renode --version / --test 启动模拟 renode → include → machine 加载平台描述 cortex-m3.repl machine Start 避坑提醒 • 先更新系统再装 Mono • Mono 版本必须 ≥ 6.12 • 自检失败清 Mono 缓存

2.7 常见问题与避坑

安装过程中你可能会遇到一些问题。我把常见的列出来:

问题 1:Mono 安装失败

现象:sudo apt install mono-complete 报依赖错误。

原因:源没加对,或者网络问题导致 GPG 密钥没导入成功。

解决:重新执行 GPG 密钥导入步骤,确认源文件内容正确。

问题 2:Renode 启动报错 "libmono-2.0.so.1 not found"

现象:运行 renode 提示找不到共享库。

原因:Mono 安装不完整,或者 LD_LIBRARY_PATH 没设置。

解决:重新安装 mono-complete,或者手动设置:

export LD_LIBRARY_PATH=/usr/lib/mono/4.5:$LD_LIBRARY_PATH
问题 3:模拟启动后 CPU 不跑

现象:machine Start 后没有输出,CPU 状态显示 stopped。

原因:平台描述文件没加载成功,或者机器创建顺序不对。

解决:先 machine CreateMachine,再 machine LoadPlatformDescription,最后 machine Start。顺序不能乱。