導航:首頁 > 操作系統 > 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相關的資料

熱點內容
proteus里單片機晶振連接 瀏覽:580
實變函數簡明教程pdf 瀏覽:468
java第三章 瀏覽:930
vscode編譯c程序 瀏覽:347
交叉編譯教學 瀏覽:731
csgo如何挑選伺服器 瀏覽:648
五邊形解壓折紙 瀏覽:86
手機抖音app怎麼掃描 瀏覽:115
sde命令 瀏覽:576
紅石pdf 瀏覽:294
榮耀精選app是什麼 瀏覽:245
電腦文件夾九宮格 瀏覽:931
在哪個app上可以訂車票 瀏覽:931
命令語法不正確什麼意思 瀏覽:497
命令調同 瀏覽:912
安卓12最遲要等到什麼時候 瀏覽:76
編譯原理大題及答案 瀏覽:529
androidjava語言開發 瀏覽:453
數獨演算法java 瀏覽:475
手機怎麼復制解壓後的文件 瀏覽:661