一、Window 10 安装WSL2

安装教程来自微软官网:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10

步骤 1 - 启用适用于 Linux 的 Windows 子系统

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。

以管理员身份打开 PowerShell 并运行:

PowerShell复制

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

建议现在转到步骤 #2,更新到 WSL 2,但如果只想安装 WSL 1,现在可以重新启动计算机,然后继续执行步骤 6 - 安装所选的 Linux 发行版。 若要更新到 WSL 2,请等待重新启动计算机,然后继续执行下一步。

步骤 2 - 检查运行 WSL 2 的要求

若要更新到 WSL 2,需要运行 Windows 10。

  • 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。

若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 更新到“设置”菜单中的最新 Windows 版本。

备注

如果运行的是 Windows 10 版本1903 或 1909,请在 Windows 菜单中打开“设置”,导航到“更新和安全性”,然后选择“检查更新”。 内部版本号必须是 18362.1049+ 或 18363.1049+,次要内部版本号需要高于 .1049。 阅读详细信息:WSL 2 即将支持 Windows 10 版本 1903 和 1909。 请参阅疑难解答说明。

步骤 3 - 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。

以管理员身份打开 PowerShell 并运行:

PowerShell复制

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

步骤 4 - 下载 Linux 内核更新包

  1. 下载最新包:

    • 适用于 x64 计算机的 WSL2 Linux 内核更新包

    备注

    如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:systeminfo | find "System Type"。 警告: 在非英语 Windows 版本中,你可能需要修改搜索文本,例如在德语中为 systeminfo | find "Systemtyp"

  2. 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)

备注

有关详细信息,请参阅 Windows 命令行博客上的文章对更新 WSL2 Linux 内核的更改。

步骤 5 - 将 WSL 2 设置为默认版本

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

PowerShell复制

wsl --set-default-version 2

步骤 6 - 安装所选的 Linux 分发

  1. 打开 Microsoft Store,并选择你偏好的 Linux 分发版。

    单击以下链接会打开每个分发版的 Microsoft Store 页面:

    • Ubuntu 18.04 LTS
    • Ubuntu 20.04 LTS
    • openSUSE Leap 15.1
    • SUSE Linux Enterprise Server 12 SP5
    • SUSE Linux Enterprise Server 15 SP1
    • Kali Linux
    • Debian GNU/Linux
    • Fedora Remix for WSL
    • Pengwin
    • Pengwin Enterprise
    • Alpine WSL
  2. 在分发版的页面中,选择“获取”。

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码。

wsl2注意事项:

因为wsl2 启用了windows自己的虚拟机功能,如果你有vmware pro 12等虚拟机开启了将可能会无法启动,wsl 1则不影响。

vmware pro 12提示错误:该主机cpu类型不支持虚拟化性能计数器,开启模块VPMC的操作失败,未能启动虚拟机。

解决方案:

解决方案:

二、迁移WSL2到一个可用空间至少200G的磁盘

wsl2 默认安装在C盘,因为Android 10 系统源码比较庞大,下载加编译需要100多G空间,而且文件系统必须要用linux的,必须在wsl2 unbutu系统内部的文件夹下载编译AOSP,不要下载到window 的文件系统里,比如下载到挂载点 /mnt/d  也就是对应window文件系统的D盘,下载是成功的,但是编译过程会因为跨了window和linux文件系统交叉,会编译出错。系统源码要下载到wsl 虚拟机内部空间里头,所以需要做一个操作:把WSL2迁移到一个空间至少有200G剩余的磁盘里

以下迁移操作均在 powershell 中实现。

1. 查看内核版本
wsl -l --all -v
1
PS  C:\Users\suyxin> wsl -l --all -v
  NAME                   STATE           VERSION
  Ubuntu-20.04           Stopped         2
2. 导出wsl 内核到非系统分区
此处选择 D 盘进行举例。

wsl --export Ubuntu-20.04 d:\wsl-ubuntu20.04.tar
3. 注销当前内核
wsl --unregister Ubuntu-20.04
4. 重新安装 WSL
wsl --import Ubuntu-20.04 d:\wsl-ubuntu20.04 d:\wsl-ubuntu20.04.tar --version 2
5. 设置默认登陆用户
USERNAME 替换成系统中已有的用户名。

ubuntu2004 config --default-user USERNAME
6. 删除中间缓存文件
del d:\wsl-ubuntu20.04.tar

三  下载编译 Android 10

1、unbutu 20 软件源配置

默认镜像源是国外的,没法用,安装软件会失败或者非常慢,需要替换镜像源:

教程参考  https://blog.csdn.net/yfxhao123/article/details/110491251

2、android 10  系统代码下载

源代码下载

打开一个cmd 窗口:wsl 命令进入虚拟机环境 ,执行如下命令:

# 切换到主目录下

cd  ~/

sudo apt-get update

#安装git

sudo apt-get install  git

# 下载代码,由于安装好的Ubuntu系统python版本是3.x,repo依赖2.x,所以需要先安装2.x版本的

sudo apt install python

# 初始化repo环境

mkdir ~/bin

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo

chmod +x repo

cp repo ~/bin

vim   ~/.bashrc

#添加下面两行环境变量配置 !wq 保存退出

PATH=~/bin:$PATH

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

#环境变量生效

source ~/.bashrc

#下载到这个目录aosp下面

mkdir  aosp

cd aosp

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r36

repo sync -c

#可选操作: 下载成功后,删除.repo,repo隐藏文件会占据比较大的磁盘空间,如果不需要后续同步代码的话,磁盘比较紧张的老铁最好删了repo隐藏文件,省出点空间给编译用

rm -rf  .repo

3、编译Android 10 系统

更新软件源

sudo apt-get update

安装JAVA

sudo apt-get install openjdk-8-jdk

sudo update-alternative --config java

# 安装依赖工具链

sudo apt-get install  libncurses5   libgl1-mesa-dev g++-multilib flex bison gperf build-essential  tofrodos python-markdown libxml2-utils xsltproc  dpkg-dev libsdl1.2-dev git-core gnupg flex bison gperf  zip curl zlib1g-dev gcc-multilib   libc6-dev-i386  x11proto-core-dev libx11-dev  libgl1-mesa-dev libxml2-utils xsltproc unzip m4 ccache

# 进入源代码根目录,编译

source build/envsetup.sh

#选择合适版本的模拟器,我电脑是x86-64  CPU,需要编译一个流畅运行的x86-64架构模拟器系统,这里最好编译 选择24. aosp_x86_64-eng ,编译arm架构的模拟器在WINDOW上运行会非常慢,不建议。

lunch  24

make  -j10

#等待编译,性能不错的机器大概3个小时左右,性能一般的机器可能要5到6个小时,去干其他事情吧,注意电脑去掉x分钟后自动休眠,去电源管理改#成永不休眠,不然白编译了。

编译报错处理:在终端的编译输出日记中搜索error,fail 字眼,把error,fail 的一行关键字贴到百度或者google搜索,查看报错原因,大部分都是缺少依赖,安装sudo apt-get install  xxxx  依赖即可,重新 make -j8,make默认是增量式编译,已经编译好的不会再编。

本人只遇到一个编译错误  libncurses  加载失败,sudo apt-get install  libncurses5 解决

wsl 2 编译结果,大功告成!!!

4、启动模拟器,验证编译成果

wsl2由于是没有界面的unbutu 环境集成,不支持linux下的虚拟机kvm,并不能直接启动带界面的模拟器,我们需要用我们自己windows android  sdk环境下的emulater.exe去加载编译产物img来进行调试。

参考教程:https://blog.csdn.net/dangelzjj/article/details/109267411

1、在android studio中启动avd manager,创建一个和你编译指定版本一致的模拟器,这里是android 10, x86_64的镜像,起个名字如 wsl-android-10,下面要用到这个名字

2、加载wsl2编译好的img到window模拟器中

一般调试只需要system.img和userdata.img

#擦除已有的avd数据

your_android_sdk_path\emulator\emulator.exe -avd your_avd_name  -wipe-data
  #模拟器重新加载android image
  your_android_sdk_path\emulator\emulator.exe -avd your_avd_name  -system  "your_android_path\out\target\product\generic_x86_64\system.img" -data  "your_android_path\out\target\product\generic_x86_64\userdata.img"

说明:

your_android_sdk_path替换成window 下的android sdk路径

your_android_path  在powershell中操作:cd  \\wsl$\Ubuntu\  可以看到wsl内的unbutu文件系统。

我的编译产物img目录是   \\wsl$\Ubuntu\root\aosp\out\target\product\generic_x86_64

-system指定system.img

-data指定userdata.img

-ramdisk指定ramdisk.img

-kernel指定内核映像

我的例子:

D:\android-sdk\emulator\emulator.exe  -avd wsl-android-10   -wipe-dataD:\android-sdk\emulator\emulator.exe  -avd wsl-android-10     -system "\\wsl$\Ubuntu\root\aosp\out\target\product\generic_x86_64\system.img" -data "\\wsl$\Ubuntu\root\aosp\out\target\product\generic_x86_64\userdata.img"

四、用sourceInsight  4  新建项目,导入查看

wsl 安装的unbutu系统前缀是  \\wsl$  在filename一栏输入   \\wsl$\  回车就可以看到AOSP系统源码根目录了,导入就可以看代码了,又能用命令编译,又能用sourceInsight 看代码,确实好多了。不过调试很麻烦,需要sdk的模拟器加载img进行调试。不如ubutu虚拟机里方便,做个实验尝试一把。微软是越来越开放了,wsl2就是一个例子,完全模拟了系统调用,可以完整编译通过!

Window 10 使用WSL2下载编译Android 10 系统源码,并用sourceInsight 4 看系统源码相关推荐

  1. Windows 10 使用WSL2下载和编译安卓10源码

    一.背景介绍   对于想要在Windows OS上学习和使用Android源码的同学来说,视乎这不太友好,因为Android基于Linux内核,需要在Linux环境下编译. 对于只需要查阅源码同学来说 ...

  2. Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

    Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...

  3. Ubuntu 10.04环境下载编译Android-2.2.1 (froyo) 源代码 1/2

    应一个在电信做android开发的哥们要求,帮忙把Goole未在sdk中打包的API(即:mms彩信功能),打包到自己编译的sdk里面.偶 用了差不多5天+5夜的时间,虽然没有成功.但对于Ubuntu ...

  4. Window 和 Ubuntu ENET下载编译

    Window 和 Ubuntu ENET下载编译 大家都知道UDP这个东西太不可靠了,存在着乱序,丢包,包重复等缺点,但它的速度快,包有界等优点,但在实际编程中要自己处理乱序啊之类的问题会发疯 的.也 ...

  5. win10最新下载编译Android源码的简易方法分享(已亲测)

    win10最新下载编译Android源码的简易方法分享(已亲测) 准备至少150G的硬盘空间 win+R 输入control 打开程序与功能-启用或关闭Windows功能 勾选"适用于Lin ...

  6. Mokee android 10.0代码下载编译总结

    Mokee代码下载 mokee下载 mokee编译 过程问题 做android framework开发也有很多年了,一直都是在公司里面下载编译,最近因为自己有个小需求想要实现,因此想着自己下载一个ao ...

  7. android 10系统下载地址,Android 10正式版

    Android 10正式版全新上线啦.就在8月23号,谷歌刚刚宣布Android系统的重大改变,是什么改变了呢,根据最新的消息报道,此次的更新不仅换了全新的logo,所谓的命名方式也是变了.之前的An ...

  8. ubuntu系统下载编译android源码

    在ubuntu系统下编译android需要注意的事项: 1. 参考http://source.android.com/中的安装说明. 2. 安装JDK6中碰到的问题可以参考http://hi.baid ...

  9. 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码

    下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...

最新文章

  1. PAT 1069 1070 1071 1072
  2. 图像sobel梯度详细计算过程_数字图像处理(第十章)
  3. 中线提取算法_综述|线结构光中心提取算法研究发展
  4. 01-第一章 Java开发中通用的方法和准则
  5. oracle多少条commit比较好,oracle什么时候须要commit
  6. VBA:单元格的引用
  7. 团队项目--“我爱淘”校园二手书店 NABC分析
  8. 多多参谋:拼多多推广怎么出价?该怎么做好推广?
  9. RabbitMQ从入门到实战(图文并茂)
  10. 3dmax2022兼容疯狂模渲大师最新版|疯狂模渲大师3.6.0.4下载安装步骤教程怎么激活素材库和装机3dmax超一流辅助客户端的?
  11. mac 修改 DNS
  12. 数据结构——查找最全总结(期末复习必备)
  13. Excel -- 排序与排名
  14. 解决打开xml文件没有代码
  15. Arduino应用开发——LCD显示GIF动图
  16. python 爬取知网url
  17. 1.产品/数据产品设计
  18. sql注入之联合注入
  19. xp支持python最高版本是多少_PYQT5-开发向下兼容到xp系统的windows软件
  20. Centos7 mysql5.7.28 Unit mysqld.service entered failed state.

热门文章

  1. 现代数字信号处理课后作业【完结篇】
  2. 批量的声明凯立德的点坐标
  3. 【结果GPU运行代码时报“Could not load dynamic library ‘cudnn64_8.dll‘; dlerror: cudnn64_8.dll not found”等错误】
  4. 创建和管理角色(Roles)
  5. 计算机相关英文文档重点单词(二)
  6. 微信小程序-并排放置
  7. 年轻人找工作莫让“山寨证书”绊住脚
  8. php留言板可以上传图片代码,php实现留言板功能(代码详解)
  9. 批量导出JIRA单时选择“HTML”,这样才能导出经办人员姓名
  10. 如何计算 R 中的 Phi 系数