i.MX6ULL开发板WiFi驱动移植与SSH环境搭建指南

张开发
2026/4/18 19:44:01 15 分钟阅读

分享文章

i.MX6ULL开发板WiFi驱动移植与SSH环境搭建指南
1. 开发板远程登录环境搭建概述作为一名嵌入式开发工程师远程登录开发板是日常工作中不可或缺的技能。虽然公司环境通常由系统工程师搭建好现成的网络和远程登录环境但在个人项目或业余开发中我们往往需要从零开始配置整个环境。这个过程涉及驱动移植、内核编译、网络配置和远程登录工具部署等多个环节每个步骤都可能遇到各种坑。我最近在为i.MX6ULL开发板搭建完整的远程开发环境时就经历了从WiFi驱动移植到SSH服务配置的全过程。本文将详细记录这个过程中的关键步骤、遇到的问题及解决方案希望能为有类似需求的开发者提供参考。2. WiFi驱动移植与配置2.1 RTL8723BU驱动移植RTL8723BU是一款常见的USB WiFi模块在嵌入式Linux系统中使用需要先完成驱动移植。以下是具体步骤驱动源码准备从Realtek官网或GitHub获取RTL8723BU驱动源码将驱动文件夹放置在内核源码树的drivers/net/wireless/目录下内核配置修改编辑Kconfig文件添加驱动配置选项source drivers/net/wireless/rtl8723BU/Kconfig修改Makefile文件添加编译选项obj-$(CONFIG_RTL8723BU) rtl8723BU/内核菜单配置执行make menuconfig命令进入配置界面依次选择Device Drivers → Network device support → Wireless LAN启用RTL8723BU驱动确保USB支持、IEEE 802.11协议栈等依赖项已启用提示建议将驱动编译为模块(.ko文件)而非直接编译进内核这样在驱动出现问题时可以方便地卸载和重新加载而不必重新编译整个内核。2.2 WiFi网络配置工具移植驱动移植完成后需要使用wpa_supplicant工具配置无线网络连接。wpa_supplicant依赖于openssl和libnl库需要先交叉编译这些依赖库。2.2.1 openssl交叉编译./config no-asm shared --prefix/path/to/openssl_build_arm \ os/compiler:/path/to/arm-linux-gnueabihf-gcc make make install编译完成后务必检查生成的库文件是否为ARM架构file libssl.so.1.0.02.2.2 libnl交叉编译./configure --prefix/path/to/libnl_build_arm --hostarm-linux-gnueabihf make make install2.2.3 wpa_supplicant交叉编译配置编译环境cp defconfig .config vim .config添加以下内容CCarm-linux-gnueabihf-gcc CFLAGS -I/path/to/openssl/include -I/path/to/libnl/include/libnl3 LIBS -L/path/to/openssl/lib -L/path/to/libnl/lib设置pkg-config路径export PKG_CONFIG_PATH/path/to/libnl/lib/pkgconfig:$PKG_CONFIG_PATH编译并解决常见问题如果编译报DBus相关错误在.config中注释掉#CONFIG_CTRL_IFACE_DBUS_NEWy #CONFIG_CTRL_IFACE_DBUS_INTROy3. WiFi网络连接配置3.1 开发板端配置创建配置文件/etc/wpa_supplicant.confctrl_interface/var/run/wpa_supplicant update_config1 ctrl_interface_grouproot ap_scan1 network{ ssidYour_WiFi_SSID pskYour_WiFi_Password key_mgmtWPA-PSK }创建运行时目录mkdir -p /var/run/wpa_supplicant连接WiFiwpa_supplicant -Dwext -c /etc/wpa_supplicant.conf -i wlan1 udhcpc -i wlan13.2 常见问题排查驱动加载失败检查dmesg输出确认USB设备识别正常确保内核配置中启用了USB和无线网络支持连接不稳定尝试调整wpa_supplicant的-D参数选择不同驱动后端检查信号强度必要时调整天线位置IP地址获取失败确认路由器DHCP服务正常工作手动指定IP测试网络连通性ifconfig wlan1 192.168.1.100 netmask 255.255.255.0 route add default gw 192.168.1.14. SSH服务移植与配置4.1 依赖库编译SSH服务需要openssl和zlib库支持。openssl已在前面编译过这里只需编译zlib./configure --prefix/path/to/zlib_build_arm # 修改Makefile中的CC为交叉编译器 CCarm-linux-gnueabihf-gcc make make install4.2 OpenSSH交叉编译./configure --hostarm-linux-gnueabihf \ --with-zlib/path/to/zlib \ --with-ssl-dir/path/to/openssl \ --disable-etc-default-login \ CC/path/to/arm-linux-gnueabihf-gcc \ AR/path/to/arm-linux-gnueabihf-ar make4.3 开发板部署创建必要目录mkdir -p /usr/libexec /usr/local/etc /usr/local/bin拷贝生成的文件可执行文件到/usr/local/bin配置文件到/usr/local/etc辅助工具到/usr/libexec生成主机密钥ssh-keygen -t rsa -f ssh_host_rsa_key -N ssh-keygen -t dsa -f ssh_host_dsa_key -N ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N 添加sshd用户echo sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin /etc/passwd4.4 SSH服务启动与测试启动sshd服务/usr/local/bin/sshd从主机连接测试ssh root开发板IP常见问题解决缺少库文件从工具链中拷贝缺失的.so文件到开发板/lib目录连接被拒绝检查sshd是否正常运行防火墙是否阻止了22端口认证失败确保开发板root密码已设置或配置了密钥认证5. 系统优化与使用技巧5.1 开机自启动服务创建/etc/init.d/S50sshd启动脚本#!/bin/sh start() { echo Starting sshd... /usr/local/bin/sshd } stop() { echo Stopping sshd... killall sshd } case $1 in start) start ;; stop) stop ;; restart) stop start ;; *) echo Usage: $0 {start|stop|restart} exit 1 esac exit 05.2 安全加固建议禁用root远程登录echo PermitRootLogin no /usr/local/etc/sshd_config更改默认SSH端口echo Port 2222 /usr/local/etc/sshd_config启用密钥认证echo PasswordAuthentication no /usr/local/etc/sshd_config echo PubkeyAuthentication yes /usr/local/etc/sshd_config5.3 文件传输实践除了SSH终端还可以使用SCP/SFTP进行文件传输从主机上传文件到开发板scp local_file root开发板IP:/目标路径从开发板下载文件到主机scp root开发板IP:/文件路径 local_path使用SFTP交互式传输sftp root开发板IP整个环境搭建过程确实会遇到各种问题特别是在交叉编译依赖库时版本兼容性是需要特别注意的。建议在开始前先规划好各组件版本避免混用不同版本的库文件。在实际操作中保持耐心并善用搜索引擎大多数问题都能找到解决方案。

更多文章