1. 在“所有设置”中搜索并打开“启用或关闭Windows功能”, 勾选“适用于Linux的Windows子系统”项,重启系统
2. 通过Microsoft Store获取并安装Ubuntu。首次启动Ubuntu,会有一个安装过程,需要设置UNIX用户名和密码,按提示输入用户名z和密码z
说明:Ubuntu子系统文件实际放置的路径在
C:\Users\{username}\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
查询当前安装的Ubuntu系统的版本,可以输入如下命令:
lsb_release -a
本文当前版本为18.04
3. 运行Ubuntu子系统方法:在win10主菜单里运行
4. 设置中文语言环境,主要目的是可以显示中文的文件夹和文件名
安装中文语言包:
sudo apt install -y language-pack-zh-hans language-pack-zh-hans-base
设置本地化环境变量:
echo "LANG=zh_CN.UTF-8" >> ~/.profile
重新打开 Ubuntu,完成设置
5. 设置图形界面
一种方法是在Ubuntu里面直接加载GUI实现,一种是采样远程桌面方式。由于Linux系统对于Zynq研发作用不多,因此采取后者以减少安装工具体积(大约需要2G)。前一种方法可以参考这里
首先更新下子系统:
sudo apt-get update
sudo apt-get upgrade
安装 xorg
sudo apt-get install xorg
安装xfce4
sudo apt-get install xfce4
安装xrdp
sudo apt-get install xrdp
配置xrdp端口,端口号是3390
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini
向xsession中写入xfce4-session
sudo echo xfce4-session >~/.xsession
重启xrdp服务
sudo service xrdp restart
如果有防火墙,允许就好了。
注意:每次电脑开机后在远程连接之前都要在终端中先启动xrdp,启动后终端窗口可以关闭。或者设置开机自动启动
6. 设置模拟器以支持32bit的程序
由于后面用到的Arm Xilinx Linux编译器是32bit的,Zynq跑的应用程序也是32bit的,而Ubuntu子系统是64bit版本,需要安装qemu-user-i386模拟器让64位的Ubuntu支持32bit的程序
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 zlib1g-dev:i386
# for wsl
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
sudo service binfmt-support start
7. 运行远程桌面
在远程桌面连接窗口,输入本机IP和端口号(之前设置的3390),以及子系统用户名(z),然后连接,进入Ubuntu图形界面
在文件系统(Filesystem)窗口里的mnt就是宿主机的“我的电脑”,c、d、e等子目录就是各个磁盘盘符
在某个磁盘下设置linux的工作目录zynq_work
要修改桌面大小,可以在远程连接窗口“显示”项中选择。
到此完成Ubuntu的系统建设。
注:也可以用虚拟机实现Zynq研发的Linux编译环境(已经验证,见下图),本笔记尝试用Linux子系统实现功能需求。
补充说明:
在后续linux编译中发现,原本虚拟机方式只需要几分钟就可以完成的编译工作,在linux子系统中却超过1小时还未能编译结束。可能的原因是, WSL(Windows Linux子系统)必须在64bit的Win10使用,加载的Linux系统(比如Ubuntu)也是64bit版本。而研发的Linux是32bit系统,虽然可以用i386模拟器工作,但效率太差了。结论,放弃Linux子系统方式,还是用虚拟机安装32bit的Ubuntu14.04工作。
当然,对于可以使用Linux 64bit版本工作的场合,还是WSL比较方便。