UbuntuTouch移植到红米Note4x
本文讲述了如何将UbuntuTouch移植到红米Note4x
1.设置容器代理
2.构建Halium编译环境
1.编写Dockerfile
FROM ubuntu:18.04
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
dpkg --add-architecture i386 && \
apt update && \
apt install -y git gnupg flex bison gperf build-essential \
zip bzr curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw-w64-i686-dev tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool \
liblz4-tool bc lzop imagemagick libncurses5 rsync python3
RUN curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo && \
chmod a+x /usr/bin/repo
RUN mkdir halium && export PATH="$PATH:/usr/bin/" && \
git config --global user.email "YOU_GIT_EMIAL" && \
git config --global user.name "YOU_GIT_NAME"
YOU_GIT_EMIAL
: 替换为你的email地址YOU_GIT_NAME
: 替换为你的git帐号
2.构建Docker镜像
docker build -t build_halium <Dockerfile path>
<Dockerfile path>
: Dockerfile的目录路径
3.运行Docker镜像
docker run -it -c 4096 \
-v /data/docker/halium/:/halium/ \
--name "build_halium_env" \
--net=host build_halium bash
-c 4096
: Docker使用CPU的权重(默认1024)/data/docker/halium/
: 构建系统需要的源码路径(可以调整为自己设置的路径)
2.获取Halium的源码
1.获取halium-7.1的源码
cd halium && \
repo init -u https://github.com/Halium/android -b halium-7.1 --depth=1 && \
repo sync -c -j 16
halium
: 为构建目录
2.添加红米Note4(x)的源码
红米Note4(x)设备代号:mido
-
在LineageOS的GitHub组织中查找设备代号得到:
android_device_xiaomi_mido
-
创建
/halium/halium/devices/manifests/xiaomi_mido.xml
文件因为在 https://github.com/Halium/projectmanagement/issues/71 中
Herrie82 已经帮助我们创建有xiaomi_mido.xml
文件, 所以略过manifests
文件的配置 -
配置红米Note4(x)编译的代码
/halium/halium/devices/setup mido
3.编译Halium
-
使用环境设置工具设置环境 在
/halium
目录下执行source build/envsetup.sh
-
设置红米Note4(x)的构建环境
breakfast mido
-
修改内核配置
- 查看内核配置文件名
grep "TARGET_KERNEL_CONFIG" /halium/device/xiaomi/mido/BoardConfig.mk
得到TARGET_KERNEL_CONFIG := mido_defconfig
- 查找内核配置文件位置
find /halium/ | grep mido_defconfig
得到/halium/kernel/xiaomi/msm8953/arch/arm64/configs/mido_defconfig
请注意,config参数
CONFIG_IKCONFIG
和CONFIG_IKCONFIG_PROC
需要设置为y
否则Halium不会启动 - 查看内核配置文件名
-
检查内核配置
git clone https://github.com/mer-hybris/mer-kernel-check cd mer-kernel-check ./mer_verify_kernel_config /halium/kernel/xiaomi/msm8953/arch/arm64/configs/mido_defconfig
4.编译Ubuntu Touch
-
修复挂载点
在/halium/device/xiaomi/mido/rootdir/fstab.qcom
文件中 将/data
/userdata
两个挂载点的磁盘格式改为ext4
-
修改内核配置
-
自动修复内核配置
./halium/halium-boot/check-kernel-config /halium/kernel/xiaomi/msm8953/arch/arm64/configs/mido_defconfig -w
-
检查配置,手动修复
./halium/halium-boot/check-kernel-config /halium/kernel/xiaomi/msm8953/arch/arm64/configs/mido_defconfig
手动修复以上命令报红的内核配置(根据提示修复内核配置) -
修改BoardConfig.mk配置 在
/halium/device/xiaomi/mido/BoardConfig.mk
文件中 找到BOARD_KERNEL_CMDLINE
行 在此行下面添加BOARD_KERNEL_CMDLINE += console=tty0
-
构建Ubuntu Touch的boot.img和system.img
source build/envsetup.sh
breakfast mido
mka halium-boot
mka systemimage
-
5.安装Ubuntu Touch
-
克隆或下载安装工具
git clone https://gitlab.com/JBBgameich/halium-install.git
-
从ubports服务器上下载rootfs.tar.gz
-
数据线连接电脑与手机
音量下键与电源键同时按下进入fastboot模式(米兔)
-
刷入halium-boot.img
将halium-boot.img烧录进手机
fastboot flash boot path/to/halium-boot.img
-
刷入twrp.img
fastboot flash recovery twrp.img
-
刷入system.img
path/to/halium-install/halium-install -p ut path/to/rootfs.tar.gz path/to/system.img
根据屏幕提示设置密码
-
通过数据线SSH连接
ssh phablet@10.15.19.82
密码为上一步设定的密码
-
开启图形界面
sudo mount -o remount,rw /
sudo -i
cat /var/lib/lxc/android/rootfs/ueventd*.rc|grep ^/dev|sed -e 's/^\/dev\///'|awk '{printf "ACTION==\"add\", KERNEL==\"%s\", OWNER=\"%s\", GROUP=\"%s\", MODE=\"%s\"\n",$1,$3,$4,$2}' | sed -e 's/\r//' >/usr/lib/lxc-android-config/70-[codename].rules
-
重启设备
6.常用配置
- 换源
更换中科大源 sed 's/ports.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
- 安装code-server
参考资料
- Building the images — UBports documentation
- 源代码控制工具 | Android 开源项目 | Android Open Source Project
- 欢迎来到 UBports 文档! — UBports 文档
- TWRP for Xiaomi Redmi Note 4(x)
- Halium — Halium documentation
- Halium移植_HandsomeHacker的博客-CSDN博客
- MiCode/Xiaomi_Kernel_OpenSource at mido-m-oss
- MiCode/Xiaomi_Kernel_OpenSource at mido-n-oss
- LineageOS/android_device_xiaomi_mido
- LineageOS/android_kernel_xiaomi_mido
- Halium/android
- [device-port] [mido] Xiaomi Redmi Note 4 (Snapdragon) · Issue #71 · Halium/projectmanagement
- ubports-mido · GitHub