WSL2安装Ubuntu20

wsl2安装

安装Ubuntu20

wsl.exe --list --online 列出当前支持的所有系统,不过这个命令是从https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json来获取,所以有很大概率会失败。失败就不看了,编译使用的系统一般都是ubuntu

wsl --install Ubuntu-20.04 安装ubuntu20,接着等待提示,输入用户名和两次密码

更改sudo不需要密码

sudo chmod +w /etc/sudoers 给该文件增加可写属性

sudo vim /etc/sudoers 编辑文件,在最后一行增加kanade ALL=(ALL) NOPASSWD: ALL

其中kanade是我的用户名,你需要换成你刚才装系统指定的,如果不在最后一行增加的话,可能会被后面的覆盖掉不生效

sudo chmod -w /etc/sudoers 恢复该文件不可写

换源和更新软件包

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list 编辑该文件

清华Ubuntu软件源 ubuntu版本选择20.04,如何将下面的内容复制进来

sudo apt update && sudo apt upgrade -y 更新软件包

安装gui

注意:Window10的WSL2是不支持systemd的,所以无法使用这个方法连接gui。Windows10的话只能用xrdp来连接

我们编译系统肯定是先编译x86_64位的,在电脑上跑成功了,在编译手机的。所以是需要图形化界面运行emulator avd的

  1. 禁用WSLg : 编辑Windows的c:\users\用户名\.wslconfig文件(不存在创建它),增加下面的内容,如何关闭wsl,重启电脑
[wsl2]
guiApplications=false
  1. sudo apt install tasksel 这个包就是列举出所有的桌面环境让你选择安装的
  2. sudo tasksel
    空格是选中,上下键切换,tab切到OK键。这里我就勾选Ubuntu desktop,其他的也不知道是啥
  3. sudo apt install tigervnc-standalone-server 安装vncserver
  4. vncpasswd sudo -H vncpasswd sudo -H -u gdm vncpasswd 设置vnc的密码,文章说要设置三次(当前用户、root和gdm)。输入两次密码后会提示要不要设置只能看不能操作的密码,选n跳过就行
  5. sudo mv /usr/bin/Xorg /usr/bin/Xorg_old sudo vim /usr/bin/Xorg_new 备份旧配置文件和编辑新配置文件
#!/bin/bash
for arg doshiftcase $arg in# Xvnc doesn't support vtxx argument. So we convert to ttyxx insteadvt*)set -- "$@" "${arg//vt/tty}";;# -keeptty is not supported at all by Xvnc-keeptty);;# -novtswitch is not supported at all by Xvnc-novtswitch);;# other arguments are kept intact*)set -- "$@" "$arg";;esac
done# Here you can change or add options to fit your needs
command=("/usr/bin/Xvnc" "-geometry" "1920x1080" "-PasswordFile" "${HOME:-/root}/.vnc/passwd" "$@")systemd-cat -t /usr/bin/Xorg echo "Starting Xvnc:" "${command[@]}"exec "${command[@]}"

sudo chmod 0755 /usr/bin/Xorg_new
sudo ln -sf Xorg_new /usr/bin/Xorg
7. sudo vim /etc/wsl.conf 编辑配置,开启systemd

[boot]
systemd=true
  1. sudo vim /etc/gdm3/custom.conf 取消注释,并修改为你的用户名
AutomaticLoginEnable=true
AutomaticLogin=[your username without the brackets]
  1. wsl --shutdown 关机如何重启
注意事项

开启systemd之后,wsl就需要执行正常的关机(shutdown now|poweroff)或者在gui里面点关机。如何再执行wsl --shutdown, 如果直接执行wsl --shutdown可能会造成系统损坏。不过我也没试,反正我每次关机都执行shutdown now

vnc客户端

我用的是realvnc,也就是VNC viewer。其他几个应该也差不多

地址填:127.0.0.1:5900
密码填vncpasswd设置的密码

安装7z

sudo apt install p7zip-full p7zip-rar

主要是方便, 压缩7z a ,解压7z x ,大部分格式都支持,不用记tar的参数

安装Android studio

安装它的目的只是为了确认avd可以正常开启,排除到时候自己编译的镜像起不来是环境的问题。安装就不赘述了,下载文件解压放到一个目录就能用了

随便创建一个avd,运行看正不正常

wsl和电脑互传文件

https://blog.csdn.net/henryhu712/article/details/115060211

禁止锁屏

https://www.jb51.net/os/Ubuntu/747669.html

安装kvm相关包

https://linux.how2shout.com/how-to-install-qemu-kvm-on-ubuntu-22-04-20-04-lts/

编译准备工作

安装依赖

https://source.android.google.cn/setup/build/initializing?hl=zh-cn
sudo apt-get install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

https://wiki.lineageos.org/build_guides.html
sudo apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

https://lineage.youd.dev/283946/2/emulator.html
sudo apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc yasm zip zlib1g-dev

sudo apt install openjdk-8-jdk 文档说Lineage17依赖jdk1.9,而且源码自带。这个可能不需要安装了

sudo apt install python2 安装完做个链接 sudo ln -s /usr/bin/python2 /usr/bin/python

安装完环境可以做个备份

wsl --export Ubuntu-20.04 Ubuntu-20.04.tar

导入,D:\WSL是指定导入的路径。也就是可以通过导出文件再导入的方式将wsl安装在C盘外。位置任意指定
wsl --import Ubuntu-20.04 D:\WSL Ubuntu-20.04.tar

创建一个vhd磁盘

因为源码文件较大,所以我这里创建一个虚拟磁盘文件来装源码。

我使用的是Hyper-v管理器新建一个磁盘,选固定大小,最好不用动态扩展的。源码大概90G,所以弄个250G的就差不多。

实际我是创建了一个100G的磁盘,因为我可能需要对源码进行修改,有时候哪里改错了就重新复制一份。不过这样的话,编译前需要用Hyper-v管理器对磁盘扩容到250G,然后在wsl里用GParted将增加的150G扩容

直接用git管理更方便,修改一次,编译成功就commit,失败就restore

说一下为什么不用动态扩展,要选固定大小。性能问题是一个原因,不过差距很小,最大的问题是动态扩展如果文件频繁变动会导致磁盘文件大小无限增加。可以通过压缩回收空间,但很麻烦。举个例子,本来虚拟机磁盘里的文件总共只占了150G,但是外面的磁盘文件.vhdx的大小已经到两百多G了

挂载到wsl

wsl --mount --vhd .\Aosp-git.vhdx --bare

–vhd 后面跟的就是虚拟磁盘的路径,可以在wsl开机前挂载,也可以在开机后挂载。挂载多个磁盘运行多次就可以

卸载磁盘 wsl --unmount .\Aosp-git.vhdx

分区的话,我喜欢用GParted sudo apt-get install gparted,在gui里搜索一下就能看到

创建完分区后创建个文件夹,用mount命令挂载到这个文件夹

repo和git配置

同步源码

https://mirrors.tuna.tsinghua.edu.cn/help/lineageOS/

mkdir LineageOs17
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-17.1

等待完成后需要修改.repo/manifests/default.xml文件内容,需要修改的内容请看上面的网站

修改完之后开始同步源码:repo sync -c -c表示只拉取当前分支

我感觉同步完成后.repo文件夹也没什么用了,因为我也不需要使用repo仓库的啥功能。这样能减少一半的磁盘空间

编译

编译命令

source build/envsetup.sh

lunch lineage_<arch>-eng 最开始肯定先编译x86_64版本的测试是否正常lunch lineage_x86_64-eng

export SKIP_ABI_CHECKS=true 见下面的错误1

mka

错误1


https://forum.xda-developers.com/t/help-building-rom-error.3947500/

错误原因不知道,搜遍解决方法只有跳过检查。终端执行export SKIP_ABI_CHECKS=true 再执行mka就能编译成功

运行模拟器

emulator 注意必须在当前终端才能运行,如果更换终端需在执行一遍source build/envsetup.shlunch lineage_<arch>-eng

不出意外的话,模拟器就能正常打开了

mka sdk_addon 编译avd能使用的包,是一个zip包。和在Android studio下载的System image包结构是一样的。使用的话,先下载一个不包含谷歌框架的x86_64的Android10, 如何将zip包里的内容替换~/Android/Sdk/system-images/android-29/default/x86_64。新建一个模拟器测试看能不能正常启动

编译一加三版本

下载内核文件

source build/envsetup.sh
breakfast oneplus3

同步驱动和内核

给git配置代理
git config --global http.proxy http://127.0.0.1:8080
git config --global https.proxy http://127.0.0.1:8080
这个是写道全局配置里,配置一次一直有效,如果想去除
git config --global --unset https.proxy
git config --global --unset http.proxy

错误1

device/oppo/common/common.mk:25: error: _nic.PRODUCTS.[[device/oneplus/oneplus3/lineage_oneplus3.mk]]: “vendor/oneplus/oneplus3/oneplus3-vendor.mk” does not exist.

一开始我以为是同步的时候有什么漏掉了,所以我运行了 repo sync -c想重新同步一次,但同步的时候又出现了错误2。

其实这个错误并不是同步不完整,而是缺少必要的驱动。需要根据官方文档从刷机包或者手机里提取,参考之前的那篇文章: kali为一加三(oneplus3)编译lineage15.1(安卓8.1)

注意刷机包必须是官网下载的带nightly-oneplus3-signed,不能是非官方编译的。不然会显示缺少一些文件,编译通不过。给一个我找到的刷机包下载地址:

错误2

Last synced: LineageOS/ansibleerror.GitError: Cannot fetch LineageOS/android_kernel_oneplus_sm8150 pack-refs: fatal: not a git repository: ‘.repo/projects/kernel/oneplus/sm8150.git’

这个问题原因未知,找到的解决方法

repo forall -vc "git init" && repo sync 遍历所有的仓库并执行init和sync,因为如果仓库如果已经存在 ,git init会失败

接着执行repo sync -c就没问题了

刷机

内核和驱动都准备好之后就可以刷机了
brunch oneplus3
等待两个小时后就可以看到结果了(没想到我的i712700H)

编译一加7Pro版

其实和一加三版本步骤差不多,oneplus3改成guacamole就是一加7Pro了

另外,提取驱动的步骤会不太一样。因为一加7的刷机包是A/B分区。system.img在payload.bin里面

官方文档也都写了:从payload.bin里提取

提取的镜像里没有product.img和sysytem_ext.img,就不需要挂载了。其他的和文档是一样的

里面使用的python是python3,另外安装的依赖包pip install protobuf==3.20.0

其他基本没什么坑

参考文章:

  • WSL2 with GUI using Xvnc
  • disable WSLg

wsl2-ubuntu20编译Lineage17(Android10)相关推荐

  1. WSL2+Ubuntu20.04+warp-ctc安装排雷(THC.h)

    这里写自定义目录标题 写在前面 安装过程:第一步 第一个问题:cmake 第二个问题 compute_30 & compute_35 安装过程:第二步 第三个问题 THC.h 测试一下 写在前 ...

  2. make编译过程-Android10.0编译系统(三)

    摘要:本节主要来进行Android10.0 编译系统的make过程 阅读本文大约需要花费29分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计, ...

  3. Window 10 使用WSL2下载编译Android 10 系统源码,并用sourceInsight 4 看系统源码

    一.Window 10 安装WSL2 安装教程来自微软官网:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 步骤 1 - 启用适用 ...

  4. ubuntu20 编译dpdk错误 -Werror=address-of-packed-member

    0x0 在ubuntu20上编译dpdk 18.11报错,gcc 版本为9.3.0,报错如下: error: converting a packed 'const struct ether_addr' ...

  5. WSL2 Ubuntu20.04安装xfce4桌面和中文输入法

    目录 WSL2 安装xfce4 配置~/.zshrc 安装VcXsrv 启动桌面 安装中文输入法 WSL2 首先需要开启wsl并且版本升级为wsl2,然后microsoft store中搜索ubunt ...

  6. Windows10安装Linux子系统(WSl2+Ubuntu20.04+图形界面)

    注意!!!安装Linux子系统需要系统版本在19041以上,如果低于此版本,可以在以去微软官网下载工具升级 . WIN + R 输入 winver 查看系统版本,我的系统版本是: 第一步:安装WSL2 ...

  7. win10离线安装WSL2 Ubuntu20.04系统

    虽然微软官方提供了方便的APP Store安装方式,和自动的命令安装方式,单由于国内限制因素,导致官方网速巨慢,而且很不稳定. 这不得不迫使我们探索一种不依赖官方网站的安装方式.步骤如下. 准备 设置 ...

  8. ubuntu20 编译 TiFlash

    下载源码 git clone --recursive https://github.com/pingcap/tiflash.git 安装 rustup curl https://sh.rustup.r ...

  9. ubuntu20编译Gmssl时,“version OPENSSL_1_1_0d not defined”问题的较好解决办法

    编译安装gmssl后,运行遇到问题: error:while loading shared libraries: libssl.so.1.1: cannot open shared object fi ...

  10. ubuntu20编译android o jack server问题记录

    报错如下: FAILED: setup-jack-server  /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server p ...

最新文章

  1. GD32的flash读、擦除、写操作
  2. leetcode算法题--Minimum Depth of Binary Tree
  3. Scala基础教程(八):模式匹配、正则表达式
  4. php繁体拼音字母,php获取中文字符串的首字符拼音字母
  5. 设计模式解析笔记之Adapter模式
  6. 【snmp】测试流程
  7. Excel VBA简单使用——数据缺失处理
  8. md5只是用来签名,签名的作用是保证数据完整不会被破坏而已。签名和加密是两回事...
  9. qt制作一个简易的传输文件小工具
  10. 怎么把ppt弄成链接的形式_如何在PPT中插入视频是嵌入而不是将视频文件设为链接...
  11. php 获取新浪股票行情数据,获取新浪实时股票行情数据
  12. 人工智能与大数据就业前景_大数据与人工智能方面专业未来前途
  13. 微信公众平台网页授权两次重定向跳转问题
  14. python判断为空行_Python pandas.DataFrame 找出有空值的行
  15. 梦想还是要有的,万一实现了呢?
  16. 绝对收敛级数重排定理的证明
  17. 怎样在word中画横线
  18. css如何在下拉框添加倒三角,CSS给选中元素增加倒三角形(示例代码)
  19. 18天精读掌握《费曼物理学讲义卷一》 第13天 2019/6/29
  20. Oracle的表简单介绍

热门文章

  1. 【伪清奇思路】寻找数组中的逆序对个数
  2. 市场规模5年翻一番,日本巨头掘金物联网
  3. 关于用AI搞金融这件事,瞎BB吹上天没用,听听实战的人怎么说
  4. 服务器硬件精通,服务器硬件工程师从入门到精通-RAID篇(1)
  5. Gartner:2019年七大安全和风险趋势
  6. 教你用Python爬网站数据,并用BI可视化分析!
  7. 计算机应用基础李雪第三版答案,计算机应用基础--李雪 第3章计算机的基础知识...
  8. FFmpeg常见命令行(四):FFmpeg流媒体
  9. Jetson Nano 配置tensorRT_Pro环境
  10. android自带中文字体,NME使用Android设备自带中文字体