Repository navigation
EDITED-How to get root on the Android subsystem #4
Description
Activity
我看到你有一个 WSA sukisu 的仓库,想必也是爱折腾的。
你可以先 运行 grub2-fyde.efi ,然后进入 KernelSU 的入口看,那里有图形界面的说明。
我个人建议,你先尝试编译一个 x86_64 架构 的 kernelsu 的 .ko 内核模块,这个还得问问 kernelsu 的开发者。
手动修补的方式:
①解包 dual_boot_ramfs.cpio;
②把 x86_64 架构 的 .ko 扔进指定目录里;
③新建一个脚本,用来 insmod xxxxx.ko,以及其他 debug 的需要……
④修改 init,在 切换根文件系统之前 恰到好处的位置 调用这个 脚本;
⑤打包成指定的文件名,扔到相关的目录里,然后慢慢测试……Reacted by 小乌龟的6还有啊,“about”是介词,后接动名词作宾语,应该用“patching”更加符合语法逻辑吧?
Reacted by 小乌龟的6原谅我漏洞百出的英语。。。说实话这已经超出我的能力范围,但我打算试试
目前我正clone关于openfyde的内核源码,或许这是编译内核模块的方法(有关资料找到的不多)Reacted by 小乌龟的6经过一整天,我认清了我能力不足以编译一个x86_64架构的.ko模块,很遗憾
Reacted by 小乌龟的6你试一下改 m,然后查看日志,看有没有 .ko 文件。
有的话,我就 insmod 试一下。
Reacted by 小乌龟的6@Young-Six-6
去酷安的 KernelSU 的话题 发帖求助,求助编译 x86_64 架构 ko 的方法。
还有 KernelSU 的聊天群……
如果你急的话。Reacted by 小乌龟的6Young-Six-6 commented
on Aug 9, 2025 on Aug 9, 2025 · Hidden as off-topicAuthorshow commentMore actions你 fork 一份 KernelSU,然后添加一个
build-kernel-fydeos.yml,action 试一下。感觉 action 卡了,不知道为什么没有任何日志。
你自己对着其他的看,慢慢改。
name: Build Kernel - FydeOS on: push: branches: ["main"] paths: - ".github/workflows/build-kernel-fydeos.yml" - "kernel/**" pull_request: branches: ["main"] paths: - ".github/workflows/build-kernel-fydeos.yml" - "kernel/**" workflow_call: workflow_dispatch: env: git_tag: chromeos-5.15 jobs: build: if: github.event_name != 'pull_request' || (github.event_name == 'pull_request' && !github.event.pull_request.draft) strategy: matrix: include: - arch: x86_64 kernel_image_name: "bzImage" name: Build FydeOS kernel runs-on: ubuntu-20.04 env: LTO: thin ROOT_DIR: / KERNEL_DIR: ${{ github.workspace }}/kernel steps: - name: Install Build Tools run: | sudo apt-get update sudo apt-get install -y --no-install-recommends bc \ bison build-essential ca-certificates flex git gnupg \ libelf-dev libssl-dev lsb-release software-properties-common wget \ libncurses-dev binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu nuget gzip \ rsync python3 device-tree-compiler sudo ln -s --force python3 /usr/bin/python export LLVM_VERSION=14 wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh $LLVM_VERSION rm ./llvm.sh sudo ln -s --force /usr/bin/clang-$LLVM_VERSION /usr/bin/clang sudo ln -s --force /usr/bin/ld.lld-$LLVM_VERSION /usr/bin/ld.lld sudo ln -s --force /usr/bin/llvm-objdump-$LLVM_VERSION /usr/bin/llvm-objdump sudo ln -s --force /usr/bin/llvm-ar-$LLVM_VERSION /usr/bin/llvm-ar sudo ln -s --force /usr/bin/llvm-nm-$LLVM_VERSION /usr/bin/llvm-nm sudo ln -s --force /usr/bin/llvm-strip-$LLVM_VERSION /usr/bin/llvm-strip sudo ln -s --force /usr/bin/llvm-objcopy-$LLVM_VERSION /usr/bin/llvm-objcopy sudo ln -s --force /usr/bin/llvm-readelf-$LLVM_VERSION /usr/bin/llvm-readelf sudo ln -s --force /usr/bin/clang++-$LLVM_VERSION /usr/bin/clang++ - name: Checkout KernelSU uses: actions/checkout@v4 with: path: KernelSU ref: main fetch-depth: 0 - name: Setup kernel source run: | git clone https://chromium.googlesource.com/chromiumos/third_party/kernel -b ${{ env.git_tag }} - name: Extract version from Makefile working-directory: kernel run: | VERSION=$(grep -E '^VERSION = ' Makefile | awk '{print $3}') PATCHLEVEL=$(grep -E '^PATCHLEVEL = ' Makefile | awk '{print $3}') SUBLEVEL=$(grep -E '^SUBLEVEL = ' Makefile | awk '{print $3}') echo "FydeOS Linux kernel version: $VERSION.$PATCHLEVEL.$SUBLEVEL" echo "version=$VERSION.$PATCHLEVEL.$SUBLEVEL" >> $GITHUB_ENV - name: Setup KernelSU working-directory: kernel run: | echo "[+] KernelSU setup" KERNEL_ROOT=$GITHUB_WORKSPACE/kernel echo "[+] KERNEL_ROOT: $KERNEL_ROOT" echo "[+] Copy KernelSU driver to $KERNEL_ROOT/drivers" ln -sf $GITHUB_WORKSPACE/KernelSU/kernel $KERNEL_ROOT/drivers/kernelsu echo "[+] Add KernelSU driver to Makefile" DRIVER_MAKEFILE=$KERNEL_ROOT/drivers/Makefile DRIVER_KCONFIG=$KERNEL_ROOT/drivers/Kconfig grep -q "kernelsu" "$DRIVER_MAKEFILE" || printf "\nobj-\$(CONFIG_KSU) += kernelsu/\n" >> "$DRIVER_MAKEFILE" grep -q "kernelsu" "$DRIVER_KCONFIG" || sed -i "/endmenu/i\\source \"drivers/kernelsu/Kconfig\"" "$DRIVER_KCONFIG" echo "[+] Patch script/setlocalversion" sed -i 's/-dirty//g' $KERNEL_ROOT/scripts/setlocalversion echo "[+] KernelSU setup done." cd $GITHUB_WORKSPACE/KernelSU VERSION=$(($(git rev-list --count HEAD) + 10200)) echo "VERSION: $VERSION" echo "kernelsu_version=$VERSION" >> $GITHUB_ENV - name: Build Kernel working-directory: kernel run: | export DEFCONFIG=x86_64_defconfig make LLVM=1 LLVM_IAS=1 DEPMOD=depmod DTC=dtc O=${PWD} mrproper make LLVM=1 LLVM_IAS=1 DEPMOD=depmod DTC=dtc O=${PWD} ${DEFCONFIG} < /dev/null scripts/config --file .config -e LTO_CLANG -d LTO_NONE -e LTO_CLANG_THIN -d LTO_CLANG_FULL -e THINLTO make LLVM=1 LLVM_IAS=1 DEPMOD=depmod DTC=dtc O=${PWD} -j$(nproc) bzImage modules prepare-objtool echo "file_path=${PWD}/arch/x86/boot/${{ matrix.kernel_image_name }}" >> $GITHUB_ENV - name: Upload kernel-FydeOS-${{ matrix.arch }}-${{ matrix.version }} uses: actions/upload-artifact@v4 with: name: kernel-FydeOS-${{ matrix.arch }}-${{ matrix.version }} path: "${{ env.file_path }}"Reacted by 小乌龟的6Young-Six-6 commented
on Aug 10, 2025 on Aug 10, 2025 · Hidden as off-topicAuthorshow commentMore actions我觉得我差一点的原因就是因为我是按照ksu的action日志在本地复刻的,但一直有报错。我慢慢研究(最近有点忙),按你说的过段时间试试用action
别本地了, action 方便。
Young-Six-6 commented
on Aug 14, 2025 on Aug 14, 2025 · Hidden as off-topicAuthorshow commentMore actions正在debug
编译成功了吗?
ko模块依然没成功,报了大量符号未导出,特别是selinux部分,但用chromeos6.6直接buildin是可行的,得到了一个内核
Reacted by 小乌龟的6我在sukisu下面的issue被回复:官方没有提供x86的selinux导出,建议使用GKI
是的,显示未安装,但我认为这与难以编译ko不冲突,未安装可能指的是ksu提供了通用内核,可以使用gki,不过替换内核我这里子系统崩溃了,但fydeos主系统能打开。我感觉提供非要使用lkm可能要更改内核
(可能是吧)你替换了什么内核?你自己编译的吗?
fydeOS 的 安卓容器的 system.raw.img 的 squashfs 挂载到了 overlayfs。谷歌官方的内核好像把 squashfs 的驱动替换成了 erofs 的驱动,并且没有使用 overlayfs。与其打补丁然后排错,不如 lkm 模式,确保所有的 bug 都是 .ko的,然后 抓日志找问题……相比前者,后者避免了 文件系统驱动等造成打不开的问题,可以省略大量的排错步骤。
内核版本要与官方保持一致,可以省略升级内核时修改
root-a/lib/*等步骤。不然你还要钻研一遍升级内核的操作。而且有可能某些地方没有适配新内核,用起来本身就有问题。
.ko有一个问题是必须是跟你内核版本一致才可以使用
如果这个.ko不是给linux用的(安卓的kernel修改过 其内核模块不适用于linux)
->您需要手动编译
其次,内核版本与兼容性没有必然关系
因为如果您的内核被修改了(如archlinux有一个特定的6.X.X-archXXX-X的修改过的内核)
符号表就不一样了。所以内核版本倒无所谓(反正最后都是依赖于内核源码树)
不过只要注意内核版本不要>6.8不然有大更新kernelsu没做兼容wwcnm我服了这个GFW我等了半天才上来草
Reacted by 小乌龟的6额,事实上这个帖子
所说的“The android of fydeOS is LXC, using kernel of host system”我发现只在AMD版本和VMware版本成立(存疑,但目前大概是),你可以尝试查看镜像,就发现Intel modern版本依然可以通过替换/opt/google/vms/android下的vmlinux
just like chromeos我只是突然大胆的猜想fydeos为不同的版本使用了不同的容器类型并且验证了,方法不是我的,为了快速验证,甚至内核都不是自己编译的,所以称为“贡献”也不恰当
kernelsu在一个提交里删除了arcvm的构建,但手动完成这一流程是不困难的
如果你要在你的项目完成自动化,可以在用户关闭根验证之后检验系统版本并且自动替换掉相关文件
对于主系统内核的替换尝试依然没成功,无论是openfyde内核还是brunch,在v22版本均无法启动,我不知道为什么
- changed the title
[-]A question about patch the ”initrd“[/-][+]EDITED-How to get root on the Android subsystem[/+]on Jun 18, 2026
I read the ”/experimental/KernelSU/readme.md“file but didn't understand how to patch "dual_boot_ramfs.cpio".
I have found the file,what should I do next?
I think I need help.