首页
版块
资源库
社区
工具箱
WiKi
搜索
仅搜索标题
用户:
仅搜索标题
用户:
登录
搜索
仅搜索标题
用户:
仅搜索标题
用户:
菜单
安装应用
安装
回复主题
首页
版块
系统软件
Linux交流
AYANEO Pocket S上的Linux移植
禁用JavaScript。为了获得更好的体验,请在运行之前启用浏览器中的JavaScript。
您正在使用一款已经过时的浏览器!部分功能不能正常使用。
请使用Chrome或其他浏览器。
信息
[QUOTE="KancyJoe, post: 90838, member: 107579"] [ATTACH type="full"]4511[/ATTACH] 系统信息 [B]本人不对因使用本资源产生的任何硬件、软件问题负责,任何问题 应由使用者个人承担。使用本文章中的方法或资源即代表你同意本条款。[/B] [HEADING=2]下载和安装[/HEADING] [HEADING=2]准备[/HEADING] [LIST] [*]电脑 [*]Platform Tools [/LIST] [HEADING=2]相关资源[/HEADING] [LIST=1] [*]系统和boot [/LIST] [LIST] [*]在[URL='https://github.com/sunflower2333/alarm-aps/releases']alarm-aps[/URL]仓库的release页面下载. [/LIST] [LIST=1] [*]内核和模块 [/LIST] [LIST] [*]在[URL='https://github.com/sunflower2333/linux/releases']linux[/URL]仓库的release页面下载. [/LIST] 内核、模块已经打包到镜像中,所以无需下载。 [HEADING=2]安装[/HEADING] [LIST=1] [*]下载Release页面中的ArchLinuxARM-APS1.img.7z和dualboot.img.gz. [*]重启aps到fastbootd [TABLE] [TR] [TD]1[/TD] [TD]adb reboot fastboot BASH[/TD] [/TR] [/TABLE] [*]解压系统文件和boot文件 [*]刷入系统 [TABLE] [TR] [TD]1[/TD] [TD]fastboot flash rawdump ArchLinuxARM-APS1.img BASH[/TD] [/TR] [/TABLE] 请务必备份boot分区,因为ayaneo的系统更新机制意味着如果分区修改则 安卓无法更新。你可以去QFIL备份分区,记得把_a和_b后缀的都备份了。 详细的备份教程自己百度。 [*]刷入boot 如果Ayaneo没更新系统的话,那这个boot应该就是可以用的。 [TABLE] [TR] [TD]1[/TD] [TD]fastboot flash boot dualboot.img BASH[/TD] [/TR] [/TABLE] [*]重启,开机的时候把右边的性能开关向上拨 [TABLE] [TR] [TD]1[/TD] [TD]fastboot reboot BASH[/TD] [/TR] [/TABLE] [*]不出意外的话应该就进arch系统了 [B]用户信息[/B] [LIST] [*]默认用户: alarm [*]密码: alarm [*]root默认密码: root [/LIST] [/LIST] [HEADING=2]功能[/HEADING] [TABLE] [TR] [TH]功能[/TH] [TH]可用性[/TH] [TH]备注[/TH] [/TR] [TR] [TD]GPU[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]DP[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]扬声器[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]麦克风[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]游戏控制器[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]亮度调节[/TD] [TD]✅[/TD] [TD]睡眠有问题,概率开机没背光[/TD] [/TR] [TR] [TD]风扇[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]SD卡[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]触摸[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]WiFi[/TD] [TD]✅[/TD] [TD][/TD] [/TR] [TR] [TD]蓝牙[/TD] [TD]❌[/TD] [TD][/TD] [/TR] [TR] [TD]传感器[/TD] [TD]❌[/TD] [TD][/TD] [/TR] [TR] [TD]指纹[/TD] [TD]❌[/TD] [TD][/TD] [/TR] [/TABLE] GPU最高频率我设置成794mhz了,如果有需求的话可以尝试自己调最大频,不过我过热就给的比较保守。 参考设备树sm8550-ayaneo-ps.dts如下部分: [TABLE] [TR] [TD]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45[/TD] [TD]&gpu_opp_table { /* Additional speedbin for Adreno A32 719000000 RPMH_REGULATOR_LEVEL_SVS_L2 746000000 RPMH_REGULATOR_LEVEL_NOM 794000000 RPMH_REGULATOR_LEVEL_NOM_L1 827000000 RPMH_REGULATOR_LEVEL_TURBO 860000000 RPMH_REGULATOR_LEVEL_TURBO_L1 1000000000 RPMH_REGULATOR_LEVEL_TURBO_L2 */ opp-719000000 { opp-hz = /bits/ 64 <719000000>; opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>; opp-peak-kBps = <10687500>; // Level 7 }; opp-746000000 { opp-hz = /bits/ 64 <746000000>; opp-level = <RPMH_REGULATOR_LEVEL_NOM>; opp-peak-kBps = <10687500>; // Level 7 }; opp-794000000 { opp-hz = /bits/ 64 <794000000>; opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>; opp-peak-kBps = <14398438>; // Level 8 }; // opp-827000000 { // opp-hz = /bits/ 64 <827000000>; // opp-level = <RPMH_REGULATOR_LEVEL_TURBO>; // opp-peak-kBps = <16500000>; // Level 9 // }; // opp-860000000 { // opp-hz = /bits/ 64 <860000000>; // opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>; // opp-peak-kBps = <16500000>; // Level 9 // }; // opp-1000000000 { // opp-hz = /bits/ 64 <1000000000>; // opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L2>; // opp-peak-kBps = <16500000>; // Level 9 // }; }; C[/TD] [/TR] [/TABLE] 取消注释即可实现最大频率调节,最高为1Ghz。 [HEADING=2]Notes[/HEADING] 之后应该没有维护了,就先弄到这里了。 [HEADING=2]技术相关[/HEADING] 如果只是想安装,忽略下面的信息即可。 请不要直接复制粘贴里面的任何命令,在你不清楚他们是做什么的之前。 本人不对使用这里提供的样板命令导致的机器损坏负责。 [HEADING=2]内核编译[/HEADING] [LIST=1] [*]克隆内核源码 [TABLE] [TR] [TD]1 2[/TD] [TD]git clone --depth=1 [URL]https://github.com/sunflower2333/linux[/URL] linux-aps cd linux-aps BASH[/TD] [/TR] [/TABLE] [*]安装工具链 Ubuntu: [TABLE] [TR] [TD]1[/TD] [TD]sudo apt install base-devel xmlto kmod bc libelf git cpio tar xz BASH[/TD] [/TR] [/TABLE] Arch: [TABLE] [TR] [TD]1[/TD] [TD]sudo pacman -S base-devel xmlto kmod bc libelf git cpio tar xz BASH[/TD] [/TR] [/TABLE] [*]修改config O=指定编译产出路径,CROSS_COMPILE指定交叉编译器,-j指定线程数量,通常取CPU线程数量*1.2~1.5。 [/LIST] [LIST] [*]采用GCC+GNU binutils编译: [TABLE] [TR] [TD]1[/TD] [TD]make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=$PWD/../OUT -j$(nproc) menuconfig BASH[/TD] [/TR] [/TABLE] [*]采用LLVM+CLANG编译 [TABLE] [TR] [TD]1[/TD] [TD]make ARCH=arm64 LLVM=1 LLVM_IAS=1 O=$PWD/../OUT -j$(nproc) menuconfig BASH[/TD] [/TR] [/TABLE] 参考这里两者的区别,后面不在区分,统一以GCC为例。 [/LIST] [LIST=1] [*]编译 修改完config或者源码之后,可以尝试编译内核了,只需要把menuconfig去掉。 [TABLE] [TR] [TD]1 2 3 4[/TD] [TD]# 编译内核 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=$PWD/../OUT -j$(nproc) # 打包deb,没在arch上面测试过 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=$PWD/OUT -j$(nproc) q_defconfig bindeb-pkg BASH[/TD] [/TR] [/TABLE] 然后你就可以拆掉deb获取你需要的那些东西了,模块,头文件,内核,设备树,etc。 [*]保存defconfig 如果想保存修改过的defconfig,使用一下命令。 [TABLE] [TR] [TD]1[/TD] [TD]make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=$PWD/../OUT -j$(nproc) savedefconfig BASH[/TD] [/TR] [/TABLE] 他会在OUT目录下生成一个defconfig文件,复制到arch/$arch/configs/your_defconfig以实现持久化保存。 [/LIST] [HEADING=2]打包Dualboot[/HEADING] [HEADING=3]准备[/HEADING] 介绍两个我们Project Aloha的项目,分别是[URL='https://github.com/project-aloha/mu_aloha_platforms']mu_aloha_platforms[/URL]和 [URL='https://github.com/Project-Aloha/DualBootKernelPatcher']DualBootKernelPatcher[/URL],前者是移植高通的UEFI固件,后者是 基于内核头Patch的多启动实现。 参考上面两个项目的Readme来配置环境和编译,这里就不细说了,下面主要写如何把Linux和设备树塞到UEFI里面,还有Dualboot的生成。 [HEADING=3]构建UEFI FD[/HEADING] [LIST=1] [*]把设备树文件复制到mu_aloha_platforms/Platforms/Device/ayaneo-aps/DeviceTreeBlob/Linux/ [TABLE] [TR] [TD]1[/TD] [TD]cp ~/kernel/OUT/arch/arm64/boot/dts/qcom/sm8550-ayaneo-ps.dtb ~/mu_aloha_platforms/Platforms/Device/ayaneo-aps/DeviceTreeBlob/Linux/ BASH[/TD] [/TR] [/TABLE] [*]用内核文件替换默认的UFP Menu. [TABLE] [TR] [TD]1[/TD] [TD]cp ~/kernel/OUT/arch/arm64/boot/Image ~/mu_aloha_platforms/Platforms/AndromedaPkg/UFP/ufpdevicefw.efi BASH[/TD] [/TR] [/TABLE] [*]扩容FV 参考下面的Diff,修改Platforms/KailuaPkg/Kailua.fdf文件,具体大小依照你的内核大小来算。 [TABLE] [TR] [TD]1 2 3 4 5 6 7 8[/TD] [TD]-Size = 0x00400000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device +Size = 0x03400000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device ... -NumBlocks = 0x400 +NumBlocks = 0x3400 ... -0x00000000|0x00400000 +0x00000000|0x3400000 DIFF[/TD] [/TR] [/TABLE] 还有build_cfg/sm8550.json [TABLE] [TR] [TD]1 2 3 4 5 6 7 8 9[/TD] [TD]--- a/build_cfg/sm8550.json +++ b/build_cfg/sm8550.json @@ -3,6 +3,6 @@ "package": "KailuaPkg", "bootshim": { "UEFI_BASE": "0xC7CC0000", - "UEFI_SIZE": "0x00400000" + "UEFI_SIZE": "0x03400000" } DIFF[/TD] [/TR] [/TABLE] [*]修改APS驱动相关参数 [/LIST] [LIST] [*]Platforms/KailuaPkg/Device/ayaneo-aps/PcdsFixedAtBuild.dsc.inc [TABLE] [TR] [TD]1 2[/TD] [TD]-gAndromedaPkgTokenSpaceGuid.PcdDisplayCallerExitDisableDisplay|FALSE +gAndromedaPkgTokenSpaceGuid.PcdDisplayCallerExitDisableDisplay|TRUE DIFF[/TD] [/TR] [/TABLE] [*]APRIORI.inc [TABLE] [TR] [TD]1 2 3 4 5 6 7 8 9[/TD] [TD] INF $(PACKAGE_NAME)/Device/$(TARGET_DEVICE)/Binaries/QcomPkg/Drivers/DDRInfoDxe/DDRInfoDxe.inf + INF $(PACKAGE_NAME)/Device/$(TARGET_DEVICE)/PatchedBinaries/DisplayDxe.inf + INF AndromedaPkg/Driver/DisplayCallerDxe/DisplayCallerDxe.inf # INF $(PACKAGE_NAME)/Device/$(TARGET_DEVICE)/Binaries/QcomPkg/Drivers/TzDxe/FeatureEnablerDxe.inf ... - INF AndromedaPkg/Driver/SimpleFbDxe/SimpleFbDxe.inf + #INF AndromedaPkg/Driver/SimpleFbDxe/SimpleFbDxe.inf DIFF[/TD] [/TR] [/TABLE] [*]DXE.inc [TABLE] [TR] [TD]1 2 3 4 5 6 7 8[/TD] [TD]-INF AndromedaPkg/Driver/SimpleFbDxe/SimpleFbDxe.inf +#INF AndromedaPkg/Driver/SimpleFbDxe/SimpleFbDxe.inf INF AndromedaPkg/Driver/RamPartitionDxe/RamPartitionDxe.inf ... INF $(PACKAGE_NAME)/Device/$(TARGET_DEVICE)/PatchedBinaries/PmicDxeLa.inf #INF $(PACKAGE_NAME)/Device/$(TARGET_DEVICE)/PatchedBinaries/QcomChargerDxeLA.inf +INF $(PACKAGE_NAME)/Device/$(TARGET_DEVICE)/PatchedBinaries/DisplayDxe.inf +INF AndromedaPkg/Driver/DisplayCallerDxe/DisplayCallerDxe.inf DIFF[/TD] [/TR] [/TABLE] [/LIST] [LIST=1] [*]修改日志打印宏 如果希望把日志打到屏幕,修改Platforms/KailuaPkg/KailuaNoSb.dsc,如果是secureboot启用的话, 修改Platforms/KailuaPkg/KailuaNoSb.dsc。 [TABLE] [TR] [TD]1 2[/TD] [TD]- USE_SCREEN_FOR_SERIAL_OUTPUT = 0 + USE_SCREEN_FOR_SERIAL_OUTPUT = 1 DIFF[/TD] [/TR] [/TABLE] [*]编译 只需要按照正常的流程编译就行了 ./build_uefi.py -d ayaneo-aps -t DEBUG [*]测试 那我问你,我的bootloader虽然本来就是解锁的,但是他什么命令都没有怎么办?比如没有 fastboot flash和fastboot boot?没错,这台机器就是这样的,abl是userbuild,默认 关闭了几乎所有命令。如果此时你没有从神奇海螺里掏出来一个公版的ABL, 那你就[B]老老实实备份你的boot[/B],然后去fastbootd刷进boot分区测试, [B]如果你没备份,那你可以考虑看一下下面的[URL='https://kancy.life/2025/06/06/APSLinux/#%E6%95%91%E7%A0%96']救砖[/URL]部分了[/B]。 [TABLE] [TR] [TD]1 2[/TD] [TD]# 临时启动 fastboot boot Build/KailuaPkg/ayaneo-aps.img BASH[/TD] [/TR] [/TABLE] [TABLE] [TR] [TD]1 2 3 4[/TD] [TD]# 刷入测试 adb reboot fastboot fastboot flash boot Build/KailuaPkg/ayaneo-aps.img fastboot reboot BASH[/TD] [/TR] [/TABLE] [/LIST] [HEADING=3]构建dualboot[/HEADING] 这里需要用到magiskboot或者其他解包工具,推荐使用Github上现成的[URL='https://github.com/TeamWin/external_magisk-prebuilt/tree/android-11/prebuilt']magiskboot prebuilt[/URL]. [LIST=1] [*]解包内核 [B]去QFIL备份你的boot[/B],ab槽都备份,我的机器这里当前处于b槽,下面以b槽为例, 至于如果分辨当前处于ab哪个槽的话,去fastbootd执行: [TABLE] [TR] [TD]1[/TD] [TD]fastboot getvar current-slot BASH[/TD] [/TR] [/TABLE] 解包boot [TABLE] [TR] [TD]1 2 3[/TD] [TD]mkdir ayaboot && cd ayaboot /path/to/your/magiskboot unpack boot_b cp kernel okernel # 备份原内核 BASH[/TD] [/TR] [/TABLE] 解包过程通常伴随以下日志,并且在当前目录生成kernel文件。 [TABLE] [TR] [TD]1 2 3 4 5 6 7 8 9 10 11[/TD] [TD]❯ ~/magiskboot_x86 unpack boot_b Parsing boot image: [boot_b] HEADER_VER [4] KERNEL_SZ [46955008] RAMDISK_SZ [0] OS_VERSION [13.0.0] OS_PATCH_LEVEL [2023-06] PAGESIZE [4096] CMDLINE [] KERNEL_FMT [raw] VBMETA LOG[/TD] [/TR] [/TABLE] [*]patch内核 这里假定你已经按照项目的Readme编译完成dbkp. 按照如下的diff修改DualBoot.Sm8550.cfg [TABLE] [TR] [TD]1 2 3[/TD] [TD]StackBase=0xC7CC0000 -StackSize=0x00400000 +StackSize=0x03400000 DIFF[/TD] [/TR] [/TABLE] 之后生成patch过的的kernel文件,参数分别为: [TABLE] [TR] [TD]1[/TD] [TD]Usage: <Kernel Image to Patch> <UEFI FD Image> <Patched Kernel Image Destination> <Config File> <Shell Code File> XML[/TD] [/TR] [/TABLE] [/LIST] [TABLE] [TR] [TD]1 2[/TD] [TD]cd DualBootKernelPatcher/out/ ./DualBootKernelPatcher ~/ayaboot/okernel ~/mu_aloha_platforms/Build/KailuaPkg/DEBUG_CLANGPDB/FV/SM8550_EFI.fd ~/ayaboot/kernel ../Config/DualBoot.Sm8550.cfg ShellCode/ShellCode.AYAPS.bin BASH[/TD] [/TR] [/TABLE] [LIST=1] [*]重新打包内核 [TABLE] [TR] [TD]1 2[/TD] [TD]cd ~/ayaboot /path/to/your/magiskboot repack boot_b newboot SHELL[/TD] [/TR] [/TABLE] [*]测试 没办法用fastboot boot测试的话,就去fastbootd里flash到boot分区进行测试。 如果一切顺利,当启动的时候抬起性能开关,系统会进入Linux。 [/LIST] [HEADING=3]卸载 Alarm[/HEADING] 卸载很简单,刷回你之前备份的boot,清空Rawdump就行。 [TABLE] [TR] [TD]1 2 3[/TD] [TD]adb reboot fastboot fastboot flash boot boot_b fastboot erase rawdump SHELL[/TD] [/TR] [/TABLE] [HEADING=3]救砖[/HEADING] 如果你不小心把你的aps弄砖了,如果你时时刻刻清楚你执行每条命令的后果的话,这怎么可能会发生呢~ 如果你的ABL没有损坏,参考下面: 救砖包链接:[URL]https://ayaneo.com.cn/support/download[/URL] [LIST] [*]长按电源键,强制重启APS,大约十五秒左右,同时按住音量+-进入9008刷机模式。 [*]去QFIL刷那个包就行了,里面应该有附带教程。 [/LIST] 如果你的ABL被你搞炸了,我指的是开机按音量-进不去fastboot,那你只能网购一条 [I]高通工程线二代[/I]来进9008了。 [B]完结撒花~ Congratulations!!! 🎉🎉🎉[/B] 原文链接 [URL]https://kancy.life/2025/06/06/APSLinux/[/URL] [/QUOTE]
发送
+