wsl 下配置aosp环境

光标配置

windows terminal 配置同步在 sophimp/vim win_terminal_settings.json中

安装wsl2

参考文章

  1. 安装wsl2 需要以下条件

    • Windows 10 May 2020 (2004), Windows 10 May 2019 (1903), or Windows 10 November 2019 (1909) or later
    • BIOS打开 Hyper-V Virtualization 支持
  2. 允许 wsl

管理员打开powershell, 执行

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  1. 允许Virtual Machine Platform

    Windows 10 (2004+) 命令

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

Windows 10 (1903+, 1909+) 命令

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
  1. 设计 wsl2 为default

执行命令

wsl --set-default-version 2

到此,可以正常使用wsl了

安装Ubuntu发行版

通过microsoft store 搜索喜欢的linux发行版安装。

或者在cmd通过命令查找在线的发行版

wsl --list --online
wsl --install Ubuntu-20.04

如果是windows10 企业版, 可能没有装microsoft store, 安装可参考 {% post_link windows/microsoft-app-store-install-on-enterprise %}

安装archlinux

有很多渠道可以安装

  1. microsoft app store 搜索 archlinux安装

    这个途径安装的不是最新的,问题比较多
    有时间折腾的, 可以从这个安装,锻炼解决问题的能力, archlinux本身是滚动更新,搞定了环境后,相对也容易升级到最新版本。

  2. 通过yuk7/container-systemd-init-tool 安装

    这个安装的也是别人打包好的,好久没有维护了,但是网上有很多教程是依赖于这个的

  3. 通过DDoSolitary/LxRunOffline 安装

    虽然这个工具也好久没有维护了, 但是这个工具是离线安装工具,可以自行下载最新的 arhclinux。
    参考在Wsl2 中安装 Archlinux
    鉴于链接有可能失效,再加上实践的过程中有些出入,还是将记录总结如下:

方式3的安装步骤 (2023-03-17 11:13 有效)

1. 下载Archlinux https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/

找到 archlinux-bootstrap-2023.03.01-x86_64.tar.gz, 注意时间找当前最新的,后缀是 tar.gz文件

2. 安装archlinux到WSL

LxRunOffline i -n (自定义名称) -f (Arch镜像位置) -d (安装系统的位置) -r root.x86_64
# 比如:
LxRunOffline i -n ArchLinux -f C:\Users\kainhuck\Downloads\archlinux-bootstrap-2020.10.01-x86_64.tar.gz -d C:\Users\kainhuck\Linux -r root.x86_64
wsl --set-version ArchLinux 2

3. 进入系统

# 这里的Archlinux是上一步安装的时候自己定义的名字
wsl -d ArchLinux

在这里我们就进入了archlinux内部,然后以下操作在archlinux中进行
这里可以先ping一下archlinux是不是有网络, 如果没有网络,检测/etc/resolv.conf 的DNS是否配置好, 或者删除,会再次自动生成
执行命令

rm /etc/resolv.conf
重新启动Archlinux
exit

执行上述命令后会退出arch,回到powershell,然后在powershell中执行

wsl --shutdown ArchLinux
然后再次进入Arch
wsl -d ArchLinux
在Arch中执行
cd /etc/
explorer.exe .

注意后面的点,执行这条命令后会用windows的文件管理器打开/etc目录,

这里只是为了方便使用windows下的编辑器来编辑archlinux下的配置文件
为什么不直接在archlinux里修改呢? 是因为上面下载的archlinux只有一个默认编辑器nano, 也安装不了vim, 当然如果习惯使用nano编辑, 也可以直接在archlinux中编辑

接下来就是配置archlinux的国内源,还是因为墙的原因
找到pacman.conf,在这个文件最后加入

[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

然后进入下一级目录pacman.d,编辑里面的mirrolist文件,将China的源注释去掉(选择部分即可)

然后回到Arch,执行

pacman -Syy
pacman-key --init
pacman-key --populate
pacman -S archlinuxcn-keyring
pacman -S base base-devel vim git wget curl
然后别忘了给当前的root设置密码
passwd

然后新建一个普通用户

useradd -m -G wheel -s /bin/bash (用户名)
passwd (用户名)

将创建用户添加到sudoers 中,方便使用sudo

vim /etc/sudoers
# 将文件`/etc/sudoers中的wheel ALL=(ALL)` ALL那一行前面的注释去掉

查看当前用户id, 后面配置打开Archlinux默认使用当前普通用户用得到

id -u (用户名, 上面添加的用户)

4. 设置使用普通用户登录Archlinux

紧接上一步,退出Arch
在powershell中执行

exit
lxrunoffline su -n (你的arch名字) -v (账户id)
# 如:

lxrunoffline su -n ArchLinux -v 1000

至此ArchLinux已经可以使用了

5. 接下来可以配置windows terminal,可提升体验

从microsoft app store 或 github Windows Terminal上下载安装即可
具体的配置,自行查询,也比较简单

将发行版由wsl1 转到 wsl2上来

wsl.exe --set-version Ubuntu 2

wsl 修改安装目录

查看所有分发版本

wsl -l --all  -v

导出分发版为tar文件到d盘

wsl --export Ubuntu-20.04 d:\ubuntu20.04.tar

注销当前分发版

wsl --unregister Ubuntu-20.04

重新导入并安装分发版在d:\ubuntu

wsl --import Ubuntu-20.04 d:\ubuntu d:\ubuntu20.04.tar --version 2

设置默认登陆用户为安装时用户名

ubuntu2004 config --default-user Username

删除tar文件(可选)

del d:\ubuntu20.04.tar

aosp的源码环境同步

同步aosp源码,建议采取科大ustc的源, 清华tuna.tsinghua的源现在限制太多,下载非常慢。 当然,可能随着时间的推移,科大的源可能也会因为人多的原因,下载变慢,到时候再替换成企业的源。

大致步骤参考上面链接,以下简单记录。

1. 下载repo

mkdir ~/bin
PATH=~/bin:$PATH
curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

这里repo 放在~/bin下,后面如果再要同步,还要将其添加到环境变量,因此可以放在.bashrc(默认bash), .zshrc(zsh), .profile(通用)

export PATH=~/BIN:$PATH

2. 修改repo 里面的链接

编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
REPO_URL = ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo’

3. 初始化仓库

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest

上面命令是同步最新的源码,如果需要同步某个特定的版本

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.0.1_r1

4. 修改成科大的源

修改 .repo/manifests.git/config ,将

url = https://android.googlesource.com/platform/manifest

修改成

url = git://mirrors.ustc.edu.cn/aosp/platform/manifest

或者修改.repo/manifests/default.xml
将其中 review=”https://android-review.googlesource.com/” 的链接修改为

url = git://mirrors.ustc.edu.cn/aosp/platform/manifest

5. 同步aosp码

repo sync

6. 遇到的问题

同步aosp 源码,会提示./repo/manifests 有修改,要先提交,通过git diff 查看,没有修改,只有old version 644, new version 766 之类的提示。使用chmod 还修改不了文件权限。
这就是 wsl 的文件系统权限问题,可参考DrvFs 文件系统权限问题 来配置。

主要是修改 /etc/wsl.conf 文件, 如果没有wsl.conf文件,创建一个, 添加以下配置, 然后重启wsl

[automount]
options = "metadata,umask=22,fmask=111"

到这里repo sync 不会再提示 ./repo/manifests/下有修改, 需要先commit的错误了, 进入./repo/manifests 下查看 git status 也没了修改。
但是还会提示

shutil.Error: [(<DirEntry 'heads'>, '/mnt/e/aosp/aosp/.repo/projects/tools/tradefederation/core.git/refs/heads', "[Errno 13] Permission denied: '/mnt/e/aosp/aosp/.repo/projects/tools/tradefederation/core.git/refs/heads'"), (<DirEntry 'tags'>, '/mnt/e/aosp/aosp/.repo/projects/tools/tradefederation/core.git/refs/tags', "[Errno 13] Permission denied: '/mnt/e/aosp/aosp/.repo/projects/tools/tradefederation/core.git/refs/tags'"), ('/mnt/e/aosp/aosp/.repo/project-objects/platform/tools/tradefederation.git/refs', '/mnt/e/aosp/aosp/.repo/projects/tools/tradefederation/core.git/refs', "[Errno 13] Permission denied: '/mnt/e/aosp/aosp/.repo/projects/tools/tradefederation/core.git/refs'")]

这里Permission denied 还是文件权限问题。这里需要以管理员身份来运行wsl, 然后再同步即可。

aosp的源码编译环境

wsl 1.0 版本要编译aosp, 还有很多问题,主要是文件系统与linux elf32格式的运行问题。

建议升级到wsl2编译,可参考此篇文章

没有权限问题和可执行文件的问题,编译aosp已有的机型还是比较容易的。按照官方指令即可。难的是移植机型。

目前我移植过两款机型 努比亚 z18mini (nx611j) 和 红米k30 pro (redmi_k30_pro),经验有限。
其中 nx611j 的Mokee 和 LineageOS可以跑起来。redmi_k30_pro 内核替换成功,但是Mokee和LineageOs一直卡在开机动画。
相关记录可查看{% post_link android/rom/nubia_z18mini_nx611j_port %} 和 {% post_link android/rom/nx627j_redmi_k30_pro_port %}

版权声明:除特殊说明,博客文章均为Sophimp原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。 由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇