背景
在ubuntu18.04中编译小米官方内核k30u的内核,环境配置等。
redmi k30s ultra android q la.um.8.12.r1-10600-sm8250.0 apollo-q-oss
代码下载
aosp@ubuntu:~$ git clone https://github.com/micode/xiaomi_kernel_opensource.git -b apollo-q-oss --depth=1cloning into 'xiaomi_kernel_opensource'...remote: enumerating objects: 68787, done.remote: counting objects: 100% (68787/68787), done.remote: compressing objects: 100% (63208/63208), done.remote: total 68787 (delta 5893), reused 43525 (delta 4616), pack-reused 0receiving objects: 100% (68787/68787), 186.20 mib | 10.48 mib/s, done.resolving deltas: 100% (5893/5893), done.checking out files: 100% (64788/64788), done.aosp@ubuntu:~$
查看内核配置文件
aosp@ubuntu:~/xiaomi_kernel_opensource$ cd arch/arm64/configs/aosp@ubuntu:~/xiaomi_kernel_opensource/arch/arm64/configs$ lltotal 52drwxrwxr-x 3 aosp aosp 4096 sep 2 08:31 ./drwxrwxr-x 12 aosp aosp 4096 sep 2 08:31 ../lrwxrwxrwx 1 aosp aosp 28 sep 2 08:31 apollo_user_defconfig -> vendor/apollo_user_defconfig-rw-rw-r-- 1 aosp aosp 11759 sep 2 08:31 cuttlefish_defconfig-rw-rw-r-- 1 aosp aosp 16696 sep 2 08:31 defconfig-rw-rw-r-- 1 aosp aosp 7579 sep 2 08:31 ranchu64_defconfigdrwxrwxr-x 2 aosp aosp 4096 sep 2 08:31 vendor/aosp@ubuntu:~/xiaomi_kernel_opensource/arch/arm64/configs$ cd vendor/aosp@ubuntu:~/xiaomi_kernel_opensource/arch/arm64/configs/vendor$ lltotal 108drwxrwxr-x 2 aosp aosp 4096 sep 2 08:31 ./drwxrwxr-x 3 aosp aosp 4096 sep 2 08:31 ../-rw-rw-r-- 1 aosp aosp 18629 sep 2 08:31 apollo_user_defconfig-rw-rw-r-- 1 aosp aosp 19847 sep 2 08:31 kona_defconfig-rw-rw-r-- 1 aosp aosp 17450 sep 2 08:31 kona-perf_defconfig-rw-rw-r-- 1 aosp aosp 19215 sep 2 08:31 lito_defconfig-rw-rw-r-- 1 aosp aosp 17376 sep 2 08:31 lito-perf_defconfigaosp@ubuntu:~/xiaomi_kernel_opensource/arch/arm64/configs/vendor$
这里找到我们编译的内核配置文件是apollo_user_defconfig
环境
clang环境
aosp@ubuntu:~$ clang --versionandroid (6443078 based on r383902) clang version 11.0.1 (https://android.googlesource.com/toolchain/llvm-project b397f81060ce6d701042b782172ed13bee898b79)target: x86_64-unknown-linux-gnuthread model: posixinstalleddir: /home/aosp/clang/binaosp@ubuntu:~$sudo apt-get install libncurses5-dev libncurses-dev libssl-dev device-tree-compiler bc cpio lib32ncurses5-dev lib32z1 build-essential binutils 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 git
上面是基础环境。直接安装,遇到选择y的就输入y,回车。
cd ~git clone https://github.com/lineageos/android_prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9 aarch64-linux-android-4.9 --depth=1git clone https://github.com/lineageos/android_prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9 arm-linux-androideabi-4.9 --depth=1
下载好编译工具。clang工具也下载好,放同目录。
sudo chmod -r 777 clangcd clang/binexport path=$(pwd):$path
开始编译
在k30u的内核目录中执行以下命令开始生成配置文件。
aosp@ubuntu:~/xiaomi_kernel_opensource$ make -j$(nproc) -c $(pwd) o=$(pwd)/out cross_compile=$home/aarch64-linux-android-4.9/bin/aarch64-linux-android- clang_triple=aarch64-linux-gnu- cross_compile_arm32=$home/arm-linux-androideabi-4.9/bin/arm-linux-androideabi- arch=arm64 subarch=arm64 llvm=1 cc=clang apollo_user_defconfigmake: entering directory '/home/aosp/xiaomi_kernel_opensource'make[1]: entering directory '/home/aosp/xiaomi_kernel_opensource/out' hostcc scripts/basic/fixdep gen ./makefile hostcc scripts/kconfig/conf.o yacc scripts/kconfig/zconf.tab.c lex scripts/kconfig/zconf.lex.c hostcc scripts/kconfig/zconf.tab.o hostld scripts/kconfig/confdrivers/misc/kconfig:578:warning: config symbol defined without typedrivers/misc/kconfig:583:warning: config symbol defined without typedrivers/misc/kconfig:616:warning: config symbol defined without type## configuration written to .config#make[1]: leaving directory '/home/aosp/xiaomi_kernel_opensource/out'make: leaving directory '/home/aosp/xiaomi_kernel_opensource'aosp@ubuntu:~/xiaomi_kernel_opensource$
成功之后开始编译内核:
aosp@ubuntu:~/xiaomi_kernel_opensource$ make -j$(nproc) -c $(pwd) o=$(pwd)/out cross_compile=$home/aarch64-linux-android-4.9/bin/aarch64-linux-android- clang_triple=aarch64-linux-gnu- cross_compile_arm32=$home/arm-linux-androideabi-4.9/bin/arm-linux-androideabi- arch=arm64 subarch=arm64 cc=clang llvm=1make: entering directory '/home/aosp/xiaomi_kernel_opensource'make[1]: entering directory '/home/aosp/xiaomi_kernel_opensource/out' gen ./makefile wrap arch/arm64/include/generated/uapi/asm/errno.h wrap arch/arm64/include/generated/uapi/asm/ioctl.h wrap arch/arm64/include/generated/uapi/asm/ipcbuf.h wrap arch/arm64/include/generated/uapi/asm/kvm_para.h wrap arch/arm64/include/generated/uapi/asm/mman.h wrap arch/arm64/include/generated/uapi/asm/msgbuf.h.... cc net/bridge/br_netfilter.mod.o ld [m] drivers/media/platform/msm/broadcast/tspp.ko ld [m] drivers/media/platform/msm/dvb/adapter/mpq-adapter.ko ld [m] drivers/video/backlight/lcd.ko ld [m] drivers/media/usb/gspca/gspca_main.ko ld [m] drivers/char/rdbg.ko ld [m] drivers/media/platform/msm/dvb/demux/mpq-dmx-hw-plugin.ko ld [m] net/bridge/br_netfilter.ko ld [m] drivers/soc/qcom/llcc_perfmon.komake[1]: leaving directory '/home/aosp/xiaomi_kernel_opensource/out'make: leaving directory '/home/aosp/xiaomi_kernel_opensource'aosp@ubuntu:~/xiaomi_kernel_opensource$
大概十分钟这样编译完成。
aosp@ubuntu:~/xiaomi_kernel_opensource$ ls out/arch/ ipc/ security/ .tmp_vmlinux1block/ kernel/ sound/ .tmp_vmlinux2built-in.a lib/ source/ usr/certs/ makefile system.map .version.config .missing-syscalls.d techpack/ virt/crypto/ mm/ .tmp_kallsyms1.o vmlinuxdrivers/ modules.builtin .tmp_kallsyms1.s .vmlinux.cmdfirmware/ modules.order .tmp_kallsyms2.o vmlinux.ofs/ module.symvers .tmp_kallsyms2.s include/ net/ .tmp_system.map init/ scripts/ .tmp_versions/ aosp@ubuntu:~/xiaomi_kernel_opensource$ ls out/arch/arm64/boot/dts imageaosp@ubuntu:~/xiaomi_kernel_opensource$aosp@ubuntu:~/xiaomi_kernel_opensource/out/arch/arm64/boot$ ls -ltotal 34952drwxrwxr-x 29 aosp aosp 4096 sep 2 08:38 dts-rw-rw-r-- 1 aosp aosp 37941260 sep 2 08:42 imageaosp@ubuntu:~/xiaomi_kernel_opensource/out/arch/arm64/boot$
在out/arch/arm64/boot/目录下有image文件,这个文件重新使用magiskbook重新打包就可以生成boot.img了。
通过临时启动内核方式刷入,验证是否正常,如果正常就flash进去。
国内首个智能路由安全解决方案商用部署
5G网络在军用场景的应用介绍
怎样把CCFL屏幕改成LED屏幕
怎样让电力物联网有智慧
云安全将成为企业网络安全必需配置
如何在Ubuntu18.04中编译小米K30U的内核呢?
多层PCB层叠结构设计与原则
中国第一神盘的5G网络怎么样
马斯克一句话得罪了整合行业的人?中国自动驾驶业者被惹怒了!
重磅丨慕展2021战略正式启动,productronica China规模将扩大100%
你了解三极管 ,但了解晶闸管吗?
如何进行晶粒度分析
英特尔通过存储创新来加速以数据为中心的技术发展
led灯珠分类有哪些?led灯珠有哪几类
阿里平头哥正式发布玄铁910 目前业界最强RISC-V处理器
如何用3d打印机制作8英尺二十面体
我国加速发展工业互联网,挑战与机遇并存
赤菟V307 MCU与Matlab的串口通信设计
速途网络 范氏途说 范锋 互联网资讯
led灯驱动电源和开关电源一样吗