Halium 9 尝鲜 -- 在小米平板4上的移植 (三)

修改device

由于不同的机型情况不一样这里只列举一些常见的修改,启动到rootfs应该是没什么问题的。
准备好一个可以用的git平台账号,fork目标机型的lineage os 16适配就可以开始弄了。

去掉脚本删除不掉的JAR包

Halium 从9开始提供了处理jar和apk内容的工具脚本会自动清除掉vendor里BoardConfigVendor.mk和device里proprietary-files.txt的jar和apk,但是device里的device.mk里仍然存在一些没有处理掉的jar包。得注释掉,特征是以PRODUCT_BOOT_JARS开头

#PRODUCT_BOOT_JARS += \
#   telephony-ext

加入ubuntu touch特有的包

为了ubuntu touch的图形界面能够正确利用libhybris,安卓容器必须编译上特定的包。
在device.mk尾部加入以下内容

MINIMEDIA_SENSORSERVER_DISABLE := 1

PRODUCT_PACKAGES += \
    libmedia_omx \
    android.frameworks.displayservice@1.0

PRODUCT_PACKAGES += \
    libion \
    libmedia_compat_layer \
    libsf_compat_layer \
    libui_compat_layer

# SalifishOS droidmedia
PRODUCT_PACKAGES += \
    libdroidmedia \
    minimediaservice \
    minisfservice \
    miniafservice

# Ubuntu
PRODUCT_PACKAGES += \
    libbiometry_fp_api \
    libubuntu_application_api

修改内核cmdline

在device的BoardConfig.mk里Ubuntu Touch的启动依赖于以下两个内核参数.

# CMDLINES for Halium
BOARD_KERNEL_CMDLINE += console=tty0
BOARD_KERNEL_CMDLINE += apparmor=1 security=apparmor

在BOARD_KERNEL_CMDLINE集中的地方加入这个就行

修改内核的defconfig (可选)

如果想和原来的内核defconfig区分开来可以把适用于Halium的内核defconfig单独命名。修改BoardConfig.mk里TARGET_KERNEL_CONFIG的值,使得编译时采用适用于Halium的内核配置

TARGET_KERNEL_CONFIG := clover_halium_defconfig

去掉hostapd的闭源库

高通的闭源hostapd库和ubuntu rootfs里的有冲突,得去掉。注释掉BoardConfig.mk里的这两行

#BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
#BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)

修改fstab

fstab里不能存在分f2fs和context=这两个内容,需要在fstab里去掉,如果使用了f2fs注意在twrp中把它格式化成ext4格式,Halium不支持f2fs。
以下只是一个例子
修改 rootdir/etc/fstab.qcom

/dev/block/bootdevice/by-name/modem      /vendor/firmware_mnt          vfat   ro,shortname=lower,uid=0,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait

/dev/block/bootdevice/by-name/modem      /vendor/firmware_mnt          vfat   ro,shortname=lower,uid=0,gid=1000,dmask=227,fmask=337 wait

收集设备的UDEV规则

这时需要一个能够正常工作的twrp,最好是刷了lineage os 16以后的twrp,还需要电脑有adb。
adb shell以后执行如下指令

cat /s/ueventd*.rc /vendor/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//' > /data/70-机型的codename.rules;

然后取回来

adb pull /data/70-机型的codename.rules 

在device项目里新建ubports文件夹
放入收集回的udev规则和新建scaling.conf
scaling.conf 内容如下

# Empty config file used by the bind mount (logic in the initrd)
GRID_UNIT_PX=24
QTWEBKIT_DPR=2.0
FORM_FACTOR=handset

在device.mk之中加入拷贝这些文件的语句

PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/ubports/70-clover.rules:system/halium/lib/udev/rules.d/70-android.rules \
    $(LOCAL_PATH)/ubports/scaling.conf:system/ubuntu/etc/ubuntu-touch-session.d/android.conf

加入halium.mk

在lineage_机型名.mk中注释掉带full和telephony的.mk文件之后再加入halium.mk

#$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)

# Halium
$(call inherit-product, $(SRC_TARGET_DIR)/product/halium.mk)


# Inherit some common Lineage stuff	
#$(call inherit-product, vendor/lineage/config/common_full_tablet_wifionly.mk)
#$(call inherit-product, vendor/lineage/config/telephony.mk)

编译android-rootfs.img而不是system.img

在BoardConfig.mk中加入以下内容

# To enable system image
BOARD_BUILD_SYSTEM_ROOT_IMAGE := true

device 项目的修改就告一段落了!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值