👓 1. 引言
在嵌入式开发中,ARM 架构单板的常见开发方式通常有两种:
-
依赖公司内部的 Linux 服务器:这种方式适合团队协作,但服务器资源昂贵、维护成本高,个人开发者难以获得同样的环境。
-
在 Windows 上安装虚拟机(如 VMware/VirtualBox):通过虚拟机模拟 Linux 环境进行开发。但虚拟机往往资源占用高,启动速度慢,使用体验不佳。
相比之下,WSL(Windows Subsystem for Linux) 提供了另一种选择。作为在 Wiindows 系统内部运行的 Linux 子系统,WSL 既具备与服务器类似的功能,又拥有比虚拟机更快的启动速度和更低的资源消耗。对于个人开发者而言,WSL 是一个更轻量、更高效的解决方案。
本系列文章将以 S5P6818 单板 为例,系统地介绍如何基于 WSL2 构建一个可用于实际调试的嵌入式 Linux 开发平台。从前期的思路框架与环境准备,到 Bootloader、内核和根文件系统的构建,再到驱动移植与远程调试,一步一步的带你把整套流程跑通。
本篇(part 1)主要讲解我在这个过程中的思路框架、软硬件选型以及 WSL 安装配置,为下篇的系统部署做铺垫,使后续内容更易理解。
💡 2. 整体架构思路
⚽️ 2.1 WSL 版本选择
在搭建嵌入式开发平台时,首先需要明确开发环境的选择。Windows 提供了两种 WSL(Windows Subsystem for Linux)版本,各有特点:
WSL1
-
本质:系统调用转译层,模拟出一个 Linux 环境,但没有完整的 Linux 内核。
-
优点:与 Windows 主系统共享 USB 接口和网卡,直连嵌入式单板时非常方便。
-
缺点:缺乏内核功能,很多需要内核态支持的工具(如
tcpdump
、nmap
)无法运行。
WSL2
-
本质:基于虚拟化技术,提供完整的 Linux 内核。
-
优点:几乎可以运行所有 Linux 原生程序,兼容性最佳。
-
缺点:USB 和网卡都是虚拟出来的,无法直接访问物理设备。
-
USB 需要通过 usbipd 转发才能使用。
-
网络依赖 Hyper-V,而 Windows 家庭版甚至无法开启 Hyper-V。
-
综上,WSL1 可以轻松的直连物理设备,但功能受限;WSL2 功能更强,但在与物理设备的连接上存在天然障碍。
我的 PC 环境是 Windows 家庭版 ,但为了能够运行内核态的 Linux 程序,我还是选择了 WSL2 作为开发平台(也是最"硬核"的一条路,硬到我差点翻车。在此强烈建议 PC 环境是 Windows 家庭版 的小白用 WSL1 )。
🏀 2.2 单板硬件型号
在硬件方面,我选择了手头闲置的一块 三星 S5P6818 开发板。虽然性能一般,但能流畅运行 Linux 系统,接口齐全,适合调试实验,用来搭配 WSL 练手再合适不过。
🏐 2.3 通信与调试通道设计
针对 WSL2 系统自身固有的 USB 与网络的限制,我设计了以下架构:
-
USB 通道 :借助 PowerShell + usbipd 工具,把 USB 设备映射到 WSL2,再通过 kermit 进行串口调试。同时,利用 USB OTG 方式接入 fastboot,实现 Bootloader、内核和根文件系统的烧写。
-
网络通道:由于家庭版 Windows 无法直接在 WSL2 中使用物理网卡,我改为在开发板上移植 WiFi 驱动,插入迷你版 USB WiFi 网卡,让单板接入无线网络。随后在单板中移植 SSH 服务,通过无线 SSH 进行远程调试。
⚠️ 注意:这里的 SSH 并非连接 WSL2,而是通过 Windows 自带的 PowerShell SSH 客户端进行操作。虽然中间多了一个PowerShell,但好在 PowerShell 的 SSH 使用起来几乎与 Linux 下原生 SSH 无差别。
⚾️ 2.4 单板系统构建方式
在单板的 Linux 系统构建方式上,我没有采用一键式的 Buildroot 构建镜像,而是采用逐步移植的方法,原因有三:
-
适配风险:Buildroot 默认配置未必完全适配 S5P6818,可能需要大量额外修改。
-
调试定位:一步步移植 Bootloader、内核、RootFS,可以精确定位问题出在哪个环节,而不是整块镜像一起排查。
-
学习价值:为了扩大这篇博客的受众面,让新手小白也能深入理解每一步移植操作的含义,所以这里我选择了逐步移植,而不是追求企业级效率的自动化构建。
🍪 2.5 整体架构总结
因此,最终形成的整体架构如下:
-
单板操作系统构建方式: 逐步移植 Bootloader → 内核 → 根文件系统,分阶段调试、便于定位问题。
-
开发与交叉编译: 使用交叉编译器和构建脚本在 WSL2 环境中完成开发与交叉编译。
-
文件传输与远程调试: 通过 PowerShell 的 SSH 客户端和 Wifi 网络与单板建立通信,进行文件传输和远程调试。
-
镜像烧写与串口调试: 通过 PowerShell 的
usbipd
将 USB/OTG 映射到 WSL2,之后再用fastboot
进行烧写,用kermit
进行串口调试。
⚙️ 3. 软硬件列表
🔩 3.1 硬件配置
S5P6818 单板:
- CPU:8 核 Cortex-A53,1.4GHz
- 内存:1GB DDR3
- 存储:8GB eMMC
- 接口:
- UART ×2
- USB 2.0 ×3
- USB OTG ×1
- SD 卡槽 ×2
- 以太网接口 ×1
无线网卡:
- TL-LINK 迷你款 150M(光驱版,需移植驱动,已绝版)x1
其他配件:
- USB 转串口线 x1
- USB 转 USB OTG 线 x1
- 5V 3A 电源适配器 x1
- 32G SD卡 x1
- SD卡读卡器 x1
🖥️ 3.2 软件清单
交叉编译器:
arm-cortex_a9-eabi-4.7-eglibc-2.18.tar.gz
Linux系统移植软件包:
e2fsprogs-1.47.3.tar.gz
busybox-1.21.1.tar.gz
uboot.tar.bz2(单板厂家提供)
kernel.tar.bz2(单板厂家提供)
SSH移植软件包
openssh-7.6p1.tar.gz
openssl-1.0.1s.tar.gz
zlib-1.3.1.tar.gz
Wifi驱动移植软件包
libnl-1.1.4.tar.gz
wpa_supplicant-2.6.tar.gz
wireless_tools-29.tar.gz
- DPO_MT7601U_Linux5TA_3.0.0.4_20130913.tar.bz2(网卡厂家提供)
🍁 4. WSL 安装与配置
✨ 4.1 WSL 简介
WSL 是 Windows 系统为了适配 Linux 系统而创造的子系统,可以以终端的方式操作 Linux 系统,避免配置虚拟机的相关复杂设定,大大提升了开发效率。
☀️ 4.2 WSL 安装
在 Windows 系统的 Microsoft Store 中搜索 WSL,找到对应的 Ubuntu 版本点击获取按钮下载安装
在安装完成后打开控制面板,点击程序,点击程序和功能,点击启用或关闭 Windows 功能,找到"适用于 Linux 的 Windows 子系统"选框将其勾选(如图所示)

重新启动后打开Microsoft Store找到wsl,点击打开按钮进行wsl子系统的部署,中途要求输入登录Linux系统的用户名和密码
当出现以下信息的时候wsl子系统即部署完毕
Installing, this may take a few minutes...
Please create a default UNIX user account. The ussername does not need to match your Windows username
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: huyl
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
通过这个步骤安装的子系统是基于cmd终端窗口的,无法进行进一步设置
如果想要进一步设置wsl子系统(比如配置快捷键缓冲区大小),需要打开Windows powershell,执行以下命令
wsl --update
当出现提示"已安装 适用于Linux 的 Windows 子系统"时,可以打开开始菜单搜索wsl,找到WSL Settings应用,在这个应用中可以进一步设置wsl子系统
🌈 4.3 WSL 版本切换
一般来说windows 10 系统默认安装的是WSL1,而windows 11 系统默认安装的是 WSL2,可以在 Powershell 或者是 cmd 终端中查看 wsl 版本和当前的 Linux 发行版(如图所示)

我这里是 WSL2,如果你是 WSL1 的话,可以通过以下命令切换到 WSL2( WSL2 切换到 WSL1 同理)
wsl --set-default-version 2
wsl --set-version Ubuntu-22.04 2
⚠️ 注意: wsl --set-version Ubuntu-22.05 2 这条命令执行以后会正式进行转化,转化的过程可能需要半个小时以上,请做好相应的心理准备。
💡 提示:如果不需要内核级调试的话,我强烈推荐使用 WSL1 搭建嵌入式开发平台。因为 WSL1 和 windows 系统共享物理接口,PC 上的网卡和 USB 都能直接链接到 WSL1 ,而 WSL2 需要用各种手段来绑定这些接口(有的还没法绑)。
💥 5. 问题与解决方案
🍄 5.1 虚拟化平台冲突问题
WSL1 不需要开启虚拟化平台即可运行,而 WSL2 需要开启虚拟化平台才可以运行
因此 WSL2 和其他需要使用虚拟化平台的虚拟机或模拟器会产生冲突
比如雷电9模拟器在检测到电脑开启虚拟化平台服务后会将游戏性能下降50%(弹出的警告窗口是这么说的)
其实 WSL1 和 WSL2 各有各的优势,没有说那个版本更好,重要的是根据设备的需求安装合适版本的 WSL。
🎆 6. 后期预告
本篇主要讲了 WSL2 搭建 s5p6818 Linux 嵌入式开发平台思路框架、软硬件选型以及 WSL 安装配置 。在下篇中我将会详细介绍如何在 WSL2 系统中构建一个完整的嵌入式 Linux 系统 ,以及如何**把这个系统装到 s5p6818 单板中,**让他在单板上运行起来。
🌀 传送门:part 2