⚡ WSL2 搭建 s5p6818 Linux 嵌入式开发平台(part 1):环境准备与架构设计
逐步移植 Bootloader → 内核 → 根文件系统,分阶段调试、便于定位问题。使用交叉编译器和构建脚本在 WSL2 环境中完成开发与交叉编译。通过 PowerShell 的 SSH 客户端和 Wifi 网络与单板建立通信,进行文件传输和远程调试。通过 PowerShell 的usbipd将 USB/OTG 映射到 WSL2,之后再用fastboot进行烧写,用kermit进行串口调试。
👓 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.gzbusybox-1.21.1.tar.gzuboot.tar.bz2(单板厂家提供)kernel.tar.bz2(单板厂家提供)
SSH移植软件包
openssh-7.6p1.tar.gzopenssl-1.0.1s.tar.gzzlib-1.3.1.tar.gz
Wifi驱动移植软件包
libnl-1.1.4.tar.gzwpa_supplicant-2.6.tar.gzwireless_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,而高版本的 windows10 系统和 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
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)