UbuntuTouch移植到红米Note4x

UbuntuTouch移植到红米Note4x

2021-10-30·devcxl
devcxl

本文讲述了如何将UbuntuTouch移植到红米Note4x

1.设置容器代理

Docker容器代理

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

  1. LineageOS的GitHub组织中查找设备代号得到: android_device_xiaomi_mido

  2. 创建/halium/halium/devices/manifests/xiaomi_mido.xml文件

    因为在 https://github.com/Halium/projectmanagement/issues/71
    Herrie82 已经帮助我们创建有 xiaomi_mido.xml文件, 所以略过manifests文件的配置

  3. 配置红米Note4(x)编译的代码 /halium/halium/devices/setup mido

3.编译Halium

  1. 使用环境设置工具设置环境 在/halium目录下执行 source build/envsetup.sh

  2. 设置红米Note4(x)的构建环境 breakfast mido

  3. 修改内核配置

    1. 查看内核配置文件名grep "TARGET_KERNEL_CONFIG" /halium/device/xiaomi/mido/BoardConfig.mk
      得到TARGET_KERNEL_CONFIG := mido_defconfig
    2. 查找内核配置文件位置find /halium/ | grep mido_defconfig
      得到/halium/kernel/xiaomi/msm8953/arch/arm64/configs/mido_defconfig

    请注意,config参数CONFIG_IKCONFIGCONFIG_IKCONFIG_PROC需要设置为y
    否则Halium不会启动

  4. 检查内核配置

    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

  1. 修复挂载点
    /halium/device/xiaomi/mido/rootdir/fstab.qcom文件中 将/data /userdata 两个挂载点的磁盘格式改为 ext4

  2. 修改内核配置

    1. 自动修复内核配置 ./halium/halium-boot/check-kernel-config /halium/kernel/xiaomi/msm8953/arch/arm64/configs/mido_defconfig -w

    2. 检查配置,手动修复 ./halium/halium-boot/check-kernel-config /halium/kernel/xiaomi/msm8953/arch/arm64/configs/mido_defconfig 手动修复以上命令报红的内核配置(根据提示修复内核配置)

    3. 修改BoardConfig.mk配置 在/halium/device/xiaomi/mido/BoardConfig.mk文件中 找到BOARD_KERNEL_CMDLINE 行 在此行下面添加BOARD_KERNEL_CMDLINE += console=tty0

    4. 构建Ubuntu Touch的boot.img和system.img
      source build/envsetup.sh

      breakfast mido

      mka halium-boot

      mka systemimage

5.安装Ubuntu Touch

  1. 克隆或下载安装工具

    git clone https://gitlab.com/JBBgameich/halium-install.git

  2. 从ubports服务器上下载rootfs.tar.gz

    网页地址

    下载链接

  3. 数据线连接电脑与手机

    音量下键与电源键同时按下进入fastboot模式(米兔)

  4. 刷入halium-boot.img

    将halium-boot.img烧录进手机 fastboot flash boot path/to/halium-boot.img

  5. 刷入twrp.img

    fastboot flash recovery twrp.img

  6. 刷入system.img

    path/to/halium-install/halium-install -p ut path/to/rootfs.tar.gz path/to/system.img

    根据屏幕提示设置密码

  7. 通过数据线SSH连接

    ssh phablet@10.15.19.82

    密码为上一步设定的密码

  8. 开启图形界面

    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

  9. 重启设备

6.常用配置

  1. 换源

更换中科大源 sed 's/ports.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

  1. 安装code-server

参考资料