序
Windows Subsystem for Linux 在去年去掉了Beta标识,成为了正式版,社区活跃度、官方更新速度都表现得很好。 虽然仍然有部分内核功能没有实现、IO速度一般的问题外,已经和原生体验相差无几。相对虚拟机来说,也有着强得多的性能表现。 本文在这里给出笔者在1709版本上的WSL Ubuntun 16.04上成功配置TinyOS编译环境的流程。
Update: WSL已经有了2.0版本,微软大法好。
Pipeline
-
控制面板> 应用和功能 > 启用或关闭 Windows 功能,找到“适用于 Linux 的 Windows 子系统(beta)”,启动之。 在应用市场上搜索Ubuntu,下载对应的应用。
-
安装好后打开该应用,会进行一段时间的初始化,然后设置root用户名和密码。
-
连接 tinyprod 服务器之前进行必要的认证:
sudo wget -O - http://tinyprod.net/repos/debian/tinyprod.key | sudo apt-key add -
- 添加源:
sudo -s cd /etc/apt/sources.list.d echo "deb http://tinyprod.net/repos/debian wheezy main" >> tinyprod-debian.list echo "deb http://tinyprod.net/repos/debian msp430-46 main" >> tinyprod-debian.list
cd /etc/apt
echo "deb http://hinrg.cs.jhu.edu/tinyos lucid main" >> sources.list
- 更新一次(嫌慢可以在sources.list中添加阿里云的数据源:见附1)
apt-get update
- 在这个百度网盘链接中下载绝大部分依赖包 下载链接 解压后,将文件夹中所有文件复制到路径 C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\var\cache\apt\archives 中
官方文档中其实是不推荐对rootfs下的文件进行手动更改的,以防Linux中文件权限出现错乱。But it works.
- 安装 nesc、tinyos-tools和 msp430-46(期间自动安装配置OpenJDK):
apt-get install nesc tinyos-tools msp430-46
- 安装依赖
sudo apt-get install avr-tinyos avr-tinyos-base avr-gcc-tinyos avr-binutils-tinyos avrdude-tinyos avr-libc-tinyos tinyos-base
- 在用户目录下安装TinyOS-2.1.2
cd /home/你的用户名 wget http://github.com/tinyos/tinyos-release/archive/tinyos-2_1_2.tar.gz tar xf tinyos-2_1_2.tar.gz mv tinyos-release-tinyos-2_1_2 tinyos-main
- 配置环境变量
echo "export TOSROOT="$HOME/tinyos-main"" >> ~/.bashrc
echo "export TOSDIR="$TOSROOT/tos"" >> ~/.bashrc
echo "export CLASSPATH=$CLASSPATH:$TOSROOT/support/sdk/java/tinyos.jar:." >> ~/.bashrc
echo "export MAKERULES="$TOSROOT/support/make/Makerules"" >> ~/.bashrc
echo "export PYTHONPATH=$PYTHONPATH:$TOSROOT/support/sdk/python" >> ~/.bashrc
-
重开一次终端,以加载新的环境变量
-
安装pip2
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
- 卸载pyserial3.0+,安装2.7版本
pip2 install "pyserial>2.0,<2.9"
- 拿访问串口的权限
sudo gpasswd -a 你的用户名 dialout
至此,交叉编译环境已配置完成。但需要注意的是,疑似由于内核功能问题,WSL暂时并不支持motelist
dmesg
命令(见附2)。端口等信息需要手动进行查看,并在烧节点时手动指定端口。
- 编译并安装跑马灯程序尝试(2为该设备的USB端口,可以在Windows的设备管理器中查看你的设备真正的端口号)
sudo -s
cd $TOSROOT/apps/Blink
make telosb install /dev/ttyUSB0 bsl,2
附录
附1:
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
附2: Telosb motelist “No device Found “ Problem
附3: WSL自带的Bash终端可以使用Cmder等完善工具来代替,同时也可以内嵌bash到VS Code中,WSL同样也可以使用Xming等工具来配置图形界面。
参考资料:
纯ubuntu16.04下安装tinyos2.1.2教程-CSDN
《TinyOS实验入门指导》 石柯