Skip to content

EDITED-How to get root on the Android subsystem #4

Description

@Young-Six-6

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.

Activity

  1. 1457384613gh commented on Jul 30, 2025

    @1457384613gh
    Contributor

    我看到你有一个 WSA sukisu 的仓库,想必也是爱折腾的。

    你可以先 运行 grub2-fyde.efi ,然后进入 KernelSU 的入口看,那里有图形界面的说明。

    我个人建议,你先尝试编译一个 x86_64 架构 的 kernelsu 的 .ko 内核模块,这个还得问问 kernelsu 的开发者。

    手动修补的方式:
    ①解包 dual_boot_ramfs.cpio;
    ②把 x86_64 架构 的 .ko 扔进指定目录里;
    ③新建一个脚本,用来 insmod xxxxx.ko,以及其他 debug 的需要……
    ④修改 init,在 切换根文件系统之前 恰到好处的位置 调用这个 脚本;
    ⑤打包成指定的文件名,扔到相关的目录里,然后慢慢测试……

  2. 1457384613gh commented on Jul 30, 2025

    @1457384613gh
    Contributor

    还有啊,“about”是介词,后接动名词作宾语,应该用“patching”更加符合语法逻辑吧?

  3. Young-Six-6 commented on Jul 31, 2025

    @Young-Six-6
    Author

    原谅我漏洞百出的英语。。。说实话这已经超出我的能力范围,但我打算试试
    目前我正clone关于openfyde的内核源码,或许这是编译内核模块的方法(有关资料找到的不多)

  4. 1457384613gh commented on Jul 31, 2025

    @1457384613gh
    Contributor

    或许这是编译内核模块的方法

    LKM 模式,不用重新编译内核。

    就是让现有内核加载 KernelSU 的 ko 模块。

    Screenshot_2025-07-31-12-23-42-201_com.android.browser-edit.jpg

  5. Young-Six-6 commented on Aug 2, 2025

    @Young-Six-6
    Author

    经过一整天,我认清了我能力不足以编译一个x86_64架构的.ko模块,很遗憾

  6. 1457384613gh commented on Aug 5, 2025

    @1457384613gh
    Contributor

    你试一下改 m,然后查看日志,看有没有 .ko 文件。

    有的话,我就 insmod 试一下。

  7. 1457384613gh commented on Aug 8, 2025

    @1457384613gh
    Contributor

    没有啊

    Image Image
  8. 1457384613gh commented on Aug 8, 2025

    @1457384613gh
    Contributor

    @Young-Six-6
    去酷安的 KernelSU 的话题 发帖求助,求助编译 x86_64 架构 ko 的方法。
    还有 KernelSU 的聊天群……
    如果你急的话。

  9. Young-Six-6 commented on Aug 9, 2025

    @Young-Six-6
    Author
  10. 1457384613gh commented on Aug 10, 2025

    @1457384613gh
    Contributor

    你 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 }}"
    
         
    
    
  11. Young-Six-6 commented on Aug 10, 2025

    @Young-Six-6
    Author
  12. 1457384613gh commented on Aug 10, 2025

    @1457384613gh
    Contributor

    我觉得我差一点的原因就是因为我是按照ksu的action日志在本地复刻的,但一直有报错。我慢慢研究(最近有点忙),按你说的过段时间试试用action

    别本地了, action 方便。

  13. Young-Six-6 commented on Aug 14, 2025

    @Young-Six-6
    Author
  14. 1457384613gh commented on Aug 14, 2025

    @1457384613gh
    Contributor

    正在debug

    编译成功了吗?

  15. Young-Six-6 commented on Aug 16, 2025

    @Young-Six-6
    Author

    ko模块依然没成功,报了大量符号未导出,特别是selinux部分,但用chromeos6.6直接buildin是可行的,得到了一个内核

  16. Young-Six-6 commented on Sep 5, 2025

    @Young-Six-6
    Author

    我在sukisu下面的issue被回复:官方没有提供x86的selinux导出,建议使用GKI

  17. 1457384613gh commented on Sep 5, 2025

    @1457384613gh
    Contributor

    天呐。
    居然显示【未安装】,并非【不支持】。

    Image
  18. Young-Six-6 commented on Sep 6, 2025

    @Young-Six-6
    Author

    是的,显示未安装,但我认为这与难以编译ko不冲突,未安装可能指的是ksu提供了通用内核,可以使用gki,不过替换内核我这里子系统崩溃了,但fydeos主系统能打开。我感觉提供非要使用lkm可能要更改内核
    (可能是吧)

  19. 1457384613gh commented on Sep 6, 2025

    @1457384613gh
    Contributor

    你替换了什么内核?你自己编译的吗?
    fydeOS 的 安卓容器的 system.raw.img 的 squashfs 挂载到了 overlayfs。谷歌官方的内核好像把 squashfs 的驱动替换成了 erofs 的驱动,并且没有使用 overlayfs。

    与其打补丁然后排错,不如 lkm 模式,确保所有的 bug 都是 .ko的,然后 抓日志找问题……相比前者,后者避免了 文件系统驱动等造成打不开的问题,可以省略大量的排错步骤。

  20. 1457384613gh commented on Sep 12, 2025

    @1457384613gh
    Contributor

    内核版本要与官方保持一致,可以省略升级内核时修改 root-a/lib/* 等步骤。

    不然你还要钻研一遍升级内核的操作。而且有可能某些地方没有适配新内核,用起来本身就有问题。

  21. TMXQWQ commented on Oct 4, 2025

    @TMXQWQ

    .ko有一个问题是必须是跟你内核版本一致才可以使用
    如果这个.ko不是给linux用的(安卓的kernel修改过 其内核模块不适用于linux)
    ->您需要手动编译
    其次,内核版本与兼容性没有必然关系
    因为如果您的内核被修改了(如archlinux有一个特定的6.X.X-archXXX-X的修改过的内核)
    符号表就不一样了。所以内核版本倒无所谓(反正最后都是依赖于内核源码树)
    不过只要注意内核版本不要>6.8不然有大更新kernelsu没做兼容ww

  22. TMXQWQ commented on Oct 4, 2025

    @TMXQWQ

    cnm我服了这个GFW我等了半天才上来草

  23. Young-Six-6 commented on Jun 16, 2026

    @Young-Six-6
    Author

    IMG20260616225021.jpg

    我回来了,lkm应该是很困难的,但是可以考虑buildin,我放弃了内核模块

  24. Young-Six-6 commented on Jun 18, 2026

    @Young-Six-6
    Author

    额,事实上这个帖子

    fydeos社区

    所说的“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版本均无法启动,我不知道为什么

  25. changed the title [-]A question about patch the ”initrd“[/-] [+]EDITED-How to get root on the Android subsystem[/+] on Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions