导航:首页 > 操作系统 > androidcmdline

androidcmdline

发布时间:2025-01-01 17:27:05

A. eBPF on android编译内核与打补丁(解决触摸和WIFI失效问题)

本文为看雪论坛优秀文章


看雪论坛作者ID:seeeseee

一、前言

在之前尝试ptach内核时,配置CONFIG_KRETPROBES后遇到了触摸和WIFI失效的问题。后经missking指导,发现修改内核编译选项的操作不正确。正确的步骤如下:



但即便如此,编译出的内核仍然导致触摸和WIFI失效。后续参考多个帖子,解决了触摸问题,但WIFI问题未能解决。


刷自编译内核导致的触摸屏失灵问题、正确的自编译内核操作及解决触摸屏问题的步骤、内核编译问题、单独编译内核的方法、解决触摸屏失灵问题的实践篇、内核编译内文以及相关补丁操作等,均被提及。在一系列操作后,触摸功能得以修复,但WIFI问题仍然悬而未决。


经过进一步探索,发现单独编译内核且包含boot.img的正确方式,这与之前的操作有所区别。对于BUILD_BOOT_IMG的设定和其中的GKI_RAMDISK_PREBUILT_BINARY、VENDOR_RAMDISK_BINARY的理解,以及boot.img解包和生成所需文件的过程,都有了更深入的了解。


通过分析build/build.sh脚本,明确当BOOT_IMAGE_HEADER_VERSION为3时,需指定GKI_RAMDISK_PREBUILT_BINARY和KERNEL_VENDOR_CMDLINE。解包boot.img后,根据文件信息调整BUILD_BOOT_IMG、BASE_ADDRESS、PAGE_SIZE、KERNEL_CMDLINE和KERNEL_BINARY的值,确保正确生成initramfs.cpio和VENDOR_RAMDISK_BINARY。补丁添加bpf_probe_read_user功能,确保内核能正常读取用户空间数据。


进行内核编译配置调整,包括修改内核编译配置选项,确保触摸屏和WIFI功能正常。操作步骤包括进入内核源码目录、生成floral_defconfig、打开内核编译配置界面、保存并退出配置、覆盖floral_defconfig文件、删除.config文件等。最终,通过正确编译命令生成可正常使用的boot.img文件,解决触摸屏和WIFI失效问题。

二、环境

搭建环境时,请根据需要添加代理连接。首先,根据官方指南安装所需库和软件,并创建工作目录。选择与手机内核版本对应的分支(如Pixel 4XL对应的android-msm-coral-4.14-android13),同步内核源代码并使用官方说明操作。注意,如果没有设置编译工具,可手动同步代码或使用官方提供的工具。

三、步骤

操作步骤包括:


四、总结

通过解决触摸屏失灵和WIFI失效问题,了解到单独编译内核并生成boot.img的正确方法。在内核编译过程中,明确相关选项和参数的重要性,确保生成的内核能正常运行触摸和WIFI功能。通过实践操作,内核可实现正常启动、触摸和WIFI功能正常,同时支持eBPF设定。

B. 如何在android user 版本下打开uart log

如果为了调试
1. 打开一个文件:
alps/mediatek/config/common/autoconfig/kconfig/USER
查看是否存在CONFIG_COMLINE=”console=ttyMT3,921600n1 loglevel=0”,如果存在,则把loglevel=0修改为loglevel = 8
然后
./mk n k
./mk bootimage

2. 如不存在CONFIG_COMMLINE,则查看alps/bootable/bootloader/lk/app/mt_boot/mt_boot.c的boot_linux()函数:
if (!has_set_p2u) {
#ifdef USER_BUILD
sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=1");
#else
sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=0");
#endif
}
修改为:
if (!has_set_p2u) {
#ifdef USER_BUILD
sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=0 ignore_loglevel");
#else
sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=0");
#endif
}

C. android设备/proc目录下都有啥

/proc/cpuinifo CPU的信息(型号、家族、缓存大小等)

/proc/meminfo物理内存、交换空间

/proc/mounts      已加载的文件系统的列表

/proc/devices 可用设备的列表,这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。

/proc/filesystems 被支持的文件系统

/proc/moles 已加载的模块

/proc/virsion 内核版本

/proc/cmdline 系统启动时输入的内核命令行参数

/proc/XXX XXX是指以进程PID(数字编号)命名的目录,每一个目录表示一个进程(即线程组)。

/proc/swaps 要获知swap空间的使用情况

/proc/fs/nfsd/exports 列出由NFS共享的文件系统

/proc/kmsg 该文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用

/proc/self -- 到当前进程/proc目录的符号链接,通过这个目录可以获取当前运行进程的信息。

/proc/pci -- 挂接在PCI总线上的设备

/proc/tty/driver/serial --串口配置、统计信息

/proc/version -- 系统版本信息

/proc/sys/kernel/ostype

/proc/sys/kernel/osrelease

/proc/sys/kernel/version

/proc/sys/kernel/hostname -- 主机名

/proc/sys/kernel/domainname -- 域名

/proc/partitions -- 硬盘设备分区信息

/proc/sys/dev/cdrom/info -- CDROM信息

/proc/locks -- 当前系统中所有的文件锁

/proc/loadavg -- 系统负荷信息

/proc/uptime -- 系统启动后的运行时间

D. 如何获取 android 的系统日志 logcat

在windows7操作系统下,开发平台为android studio可以按照如下步骤获取android 的系统日志 logcat。

1、首先打开android studio的页面,如下图:

E. 如何解包/编辑/打包android系统的boot.img文件

Android产品中,内核格式是Linux标准的zImage,根文件系统采用ramdisk格式。这两者在Android下是直接合并在一起取名为boot.img,会放在一个独立分区当中。这个分区格式是Android自行制定的格式。Android开发时,最标准的做法是重新编译于内核和根文件系统,然后调用Android给的命令行文件mkbootimg(out/host/linux-x86/bin/)来打包。 在制作手机ROM时,有时会单独编译内核或抽出根文件进行修改内容,比如我只编译内核,其余的地方不变。这样重新安装巨大的Android开发环境实在不划算。因此很多boot.img解包工具被人开发出来,这一些工具都是把内核和根文件系统从一个现成的boot.img抽取出来,修发后再次打包还原。一.常见的解包工具因为boot.img的格式比较简单,它主要分为三大块(有的可能有四块)因此很多人开发分析工具,有是linuxshell脚本,比如repack-zImage,也有人采用perl,还有C语言编写的unbootimg, 我使用的是在源码位置system/core/mkbootimg/下的mkbootimg。为了简化,蓝点工坊把与mkbootimg中打包工具和解包工具以及所包含的libmincrpty库抽出来,并且重写一个Makefile,作为开源项目。使用者只需要在linux(需安装gcc,make,一般是标配)或windows(需要安装mingw)的命令行执行make,即可产生可执行文件mkbootimg,unpackbootimg。二.解/打包工具使用解包工具:unpackbootimg常见格式 unpackbootimg-i.\tmp\boot.img-o.\out 这一句命令行表示把boot.img解包,所有文件输出到out目录下它会解压出如下文件:boot.img-zImage(内核文件)boot.img-ramdisk.gz(根文件系统打包文件) boot.img-cmdline(mkbootimgcmdline参数) boot.img-pagesize(mkbootimgpagesize参数) boot.img-base(mkbootimgbase参数)打包工具:mkbootimg(Android自带)常见的命令格式: ./mkbootimg --cmdline'no_console_suspend=1console=null' --kernel zImage --ramdisk boot/boot.img-ramdisk.gz -o boot.img--base02e00000 这句含义是把内核文件zImage和boot目录下的根文件压缩包boot.img-ramdisk.gz打包成boot.img. 其中cmdline和base的值均来源于unpackbootimg的结果

阅读全文

与androidcmdline相关的资料

热点内容
怎么做广州旅游手账app 浏览:411
wifi信号如何加密 浏览:469
proteus里单片机晶振连接 浏览:582
实变函数简明教程pdf 浏览:470
java第三章 浏览:932
vscode编译c程序 浏览:349
交叉编译教学 浏览:735
csgo如何挑选服务器 浏览:650
五边形解压折纸 浏览:88
手机抖音app怎么扫描 浏览:117
sde命令 浏览:576
红石pdf 浏览:296
荣耀精选app是什么 浏览:247
电脑文件夹九宫格 浏览:933
在哪个app上可以订车票 浏览:933
命令语法不正确什么意思 浏览:499
命令调同 浏览:914
安卓12最迟要等到什么时候 浏览:78
编译原理大题及答案 浏览:533
androidjava语言开发 浏览:453