Closed supechicken closed 1 year ago
For those who are looking for a workaround:
# remove -Werror from all Makefiles
makefiles="$(find . -type f -name Makefile | tr "\n" ' ') $(find . -type f -name Kbuild | tr "\n" ' ')"
for i in $makefiles; do
sed -i 's/-Werror=/-Wno-error=/g' "$i"
sed -i 's/-Werror/-w/g' "$i"
sed -i 's/-Wall/-w/g' "$i"
done
https://github.com/tiann/KernelSU/blob/main/kernel/ksud.c#L111
static int count(struct user_arg_ptr argv, int max) __attribute__ ((unused))
I add __attribute__ ((unused))
and it compiled successfully, but I have not installed ChromeOS,could you please help me test if it works properly?
bzImage.zip
It doesn't work for me, but it is probably related to the configuration stuff (just tried with replacing all defconfig
under common/arch/x86/configs/
with x86_64_arcvm_defconfig
and it works :) )
it works :) )
成功了吗? 模块可以工作吗?
果然是的,这个也可以挂载。 原大小 9.8 MB,修补后 20.2MB,体积加倍啊。
等了好久,打不开,就像手机无法开机那样。 是不是跟宿主系统的内核有关啊???我宿主系统换了内核。
宿主系统的内核,调不到 5.10.168
😭😭😭😭😭😭 就像手机卡开机Logo一样,进不去。 变成 虚拟砖 了,刚刚 救砖,救 虚拟砖 成功。 @supechicken 你的机子能进去吗?
Compile with x86_64_arcvm_defconfig
Compile with x86_64_arcvm_defconfig\n\nbzImage.zip
啊…… 真快!!! 我吃完午餐就去试啵!
太棒了,成功啦。 @natsumerinchan 但是啊,chromeOS 没有【拨号】,启动器也没有【LSPosed】的图标,怎么打开 【LSPosed】呢??? termux 能输入命令打开【LSPosed】吗?
按一下notification就行了
😭😭😭😭😭😭 就像手机卡开机Logo一样,进不去。 变成 虚拟砖 了,刚刚 救砖,救 虚拟砖 成功。 @supechicken 你的机子能进去吗?
(這是我自己編譯的)
通知栏 可以进去,但是没有创建快捷方式的按钮。
如果你们感兴趣的话,非常欢迎加一个 ChromeOS 的 CI!
如果你们感兴趣的话,非常欢迎加一个 ChromeOS 的 CI!
好的,等我先研究一下github action再開pr
Dex 优化器 不支持,挂载失败,这个是不是要去 LSPosed 那边 issue 一下啊?
先看看ARCVM的kernel log,或許裡面有失敗原因
Dex 优化器 不支持,挂载失败,这个是不是要去 LSPosed 那边 issue 一下啊?
用CI版本的LSPosed https://t.me/LSPosedArchives
支持 Dex了,但不支持快捷方式
支持 Dex了,但不支持快捷方式
可能是ChromeOS本身不支持创建快捷方式?
太棒了,成功啦。 @natsumerinchan 但是啊,chromeOS 没有【拨号】,启动器也没有【LSPosed】的图标,怎么打开 【LSPosed】呢??? termux 能输入命令打开【LSPosed】吗?
am start -a android.intent.action.MAIN -c org.lsposed.manager.LAUNCH_MANAGER com.android.shell/.BugreportWarningActivity
来自https://github.com/ya0211/MRepo/issues/19#issuecomment-1537081000
chromeOS 支持 把 安卓的图标都映射到 启动器上。
现在好了,chromeOS 有
感觉,可玩性可以跟 Android x86 媲美了,稳定性也比 Android x86 强。 分享你们个 grub2,比 Win2Grub要强多了,专门用来 双启动 或 多启动 chromeOS 的。 用起来超级方便的。 https://github.com/M-L-P/grub2-brunch
再分享你们个 基于 rEFInd 的 多启动管理器, 用来管理这些启动项。 制作了现代化主题的。 用起来也很方便的说。 https://github.com/M-L-P/rEFInd-theme-Yours
现在好了,chromeOS 有
- 安卓的超级用户权限;
- 支持安装模块;
- 官方支持的稳定的桌面端的 chrome 浏览器;
- 未来版本自带 AI;
感觉,可玩性可以跟 Android x86 媲美了,稳定性也比 Android x86 强。 分享你们个 grub2,比 Win2Grub要强多了,专门用来 双启动 或 多启动 chromeOS 的。 用起来超级方便的。 https://github.com/M-L-P/brunch-grub2
特别是ChromeOS的SELinux能强制执行
虽然安卓版本不是特别高,但毕竟是谷歌的亲儿子,未来肯定会升级安卓版本的。 感觉性能比 WSA 强多了。
虽然安卓版本不是特别高,但毕竟是谷歌的亲儿子,未来肯定会升级安卓版本的。 感觉性能比 WSA 强多了。
话说ChromeOS上allowlist能不能正常保存,会不会像WSA那样重启就丢权限
我试过了,重启没丢权限。 还尝试更换宿主系统的内核,成功了,可以换到 6.1 内核。
总结下步骤。
下载并解压 zip,把 bzImage
重命名为 vmlinux
,
然后,进入 crosh,输入以下命令。
shell
cd /opt/google/vms/android
ls -l
sudo mv vmlinux vmlinux_real
ls -l
cd ~/Downloads
ls -l
sudo cp vmlinux /opt/google/vms/android
cd /opt/google/vms/android
ls -l
然后重启。
感觉可以整理成一个【一键KernelSU.sh】的脚本。
curl -s http://...../...../...../一键KernelSU.sh | sudo bash
总结下步骤。 下载并解压 zip,把
bzImage
重命名为vmlinux
, 然后,进入 crosh,输入以下命令。shell
cd /opt/google/vms/android
ls -l
sudo mv vmlinux vmlinux_real
ls -l
cd ~/Downloads
ls -l
sudo cp vmlinux /opt/google/vms/android
cd /opt/google/vms/android
ls -l
然后重启。感觉可以整理成一个【一键KernelSU.sh】的脚本。
curl -s http://...../...../...../一键KernelSU.sh | sudo bash
把这个脚本整进压缩包里
./ksu_arcvm.sh install
: 安装KernelSU并备份原kernel
./ksu_arcvm.sh uninstall
: 卸载并还原
./ksu_arcvm.sh -h/--help
: 显示帮助
#!/bin/sh
set -eu
ANDROID_ROOT=/opt/google/vms/android
ksu_help() {
printf "Usage: $0 [options]\n"
printf "\nOptions:\n"
printf " install Install KernelSU and backup original\n"
printf " kernel for ChromeOS ARCVM\n"
printf " uninstall Remove KernelSU and restore original\n"
printf " kernel for ChromeOS ARCVM\n"
printf " -h, --help Display this help message and exit\n"
}
ksu_install() {
if [ -d $ANDROID_ROOT ]; then
ls -l $ANDROID_ROOT
if [ ! -e $ANDROID_ROOT/vmlinux_bak ]; then
sudo mv $ANDROID_ROOT/vmlinux $ANDROID_ROOT/vmlinux_bak
else
sudo rm $ANDROID_ROOT/vmlinux
fi
if [ -e ./bzImage ]; then
sudo cp ./bzImage $ANDROID_ROOT/vmlinux
sudo ls -l $ANDROID_ROOT
else
echo "[ERROR] bzImage is not exist."
exit 127
fi
else
echo "[ERROR] $ANDROID_ROOT is not exist."
exit 127
fi
}
ksu_uninstall() {
if [ -d $ANDROID_ROOT ]; then
if [ ! -d $ANDROID_ROOT/vmlinux_bak ]; then
echo "$ANDROID_ROOT/vmlinux_bak is not found."
echo "Maybe you have uninstall or you have not install KernelSU."
exit 0
fi
sudo rm $ANDROID_ROOT/vmlinux
sudo mv $ANDROID_ROOT/vmlinux_bak $ANDROID_ROOT/vmlinux
else
echo "[ERROR] $ANDROID_ROOT is not exist."
exit 127
fi
}
if [ -z "${1-}" ] || [ "${1-}" == "-h" ] || [ "${1-}" == "--help" ]; then
ksu_help
elif [ "${1-}" == "install" ]; then
ksu_install
vmc stop arcvm
elif [ "${1-}" == "uninstall" ]; then
ksu_uninstall
vmc stop arcvm
else
echo "[ERROR] No such option."
exit 1
fi
总结下步骤...
補充:真正的 Chromebook 要先關閉rootFS verification,然後再 remount as r/w 才能對系統動手腳:
sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification
sudo reboot
sudo mount -o remount,rw /
@natsumerinchan
后面加个
sudo reboot
重启以后,才有超级用户权限。
看来, 要四处打听一下,crosh shell 软重启 ARCVM 的命令。
争取做到,不重启宿主系统,就 KernelSU。
curl -s https://raw.githubusercontent.com/nathanchance/chromeos-adb-fastboot/master/install.sh | sudo bash
adb start-server
adb reboot
目前我只想到这个借助 adb 重启 ARCVM 的方式。
哦,对,想起来了。 KernelSU 的 App,有重启的按钮。
按下热重启,就好了。
單單Android重啟是沒用的,一定要整個crosvm
進程重啟才行(這樣它才會去重新讀取kernel文件)
KernelSU App,按【重启到 BootLoader】 应该是可以的。 可以试试。 crosvm 重启到 BootLoader,应该会重新加载一遍 vmlinux。
就算是行的通的話那個 KernelSU 管理應用也需要先提權才能用啊(沒有kernel的配合那應用根本做不了什麼),這不就成死循環了😀
难道非要走 adb 吗?
还是简单粗暴直接重启ChromeOS好了,我加了个选择是否重启的选项
adb reboot bootloader
可能也不管用,依我看來Android中的所有電源操作都是模擬出來的(就像虛擬機一樣,客體重啟那是你客體的事,關我宿主虛擬機啥事)
As far as I know 唯一能對虛擬機進行控制的就是crosh
裡面的vmc
,不過它好像只能要求停止:
crosh> vmc stop arcvm
crosh> vmc start arcvm # 這個不管用
vmc stop arcvm
然后,鼠标点击安卓App,应该能够唤醒 ARCVM。
有喔,剛試了一下能行
exit
退出 crosh shell。
然后
vmc stop arcvm
把sudo reboot
改成 exit
。
看来,一键脚本后面,还要输入一个vmc stop arcvm
总结下步骤。 下载并解压 zip,把
bzImage
重命名为vmlinux
, 然后,进入 crosh,输入以下命令。shell
cd /opt/google/vms/android
ls -l
sudo mv vmlinux vmlinux_real
ls -l
cd ~/Downloads
ls -l
sudo cp vmlinux /opt/google/vms/android
cd /opt/google/vms/android
ls -l
然后重启。总结下步骤。 下载并解压 zip,把bzImage
重命名为vmlinux
, 然后,进入 crosh,输入以下命令。shell
3 4
sudo mv vmlinux vmlinux_real
ls -l
cd ~/Downloads
8 9 10
ls -l
然后重启. 感觉可以整理成一个【一键KernelSU.sh】的脚本。curl -s http://...../...../...../一键KernelSU.sh | sudo bash
把这个脚本整进压缩包里
./ksu_arcvm.sh install
: 安装KernelSU并备份原kernel./ksu_arcvm.sh uninstall
: 卸载并还原./ksu_arcvm.sh -h/--help
: 显示帮助#!/bin/sh set -eu ANDROID_ROOT=/opt/google/vms/android ksu_help() { printf "Usage: $0 [options]\n" printf "\nOptions:\n" printf " install Install KernelSU and backup original\n" printf " kernel for ChromeOS ARCVM\n" printf " uninstall Remove KernelSU and restore original\n" printf " kernel for ChromeOS ARCVM\n" printf " -h, --help Display this help message and exit\n" } ksu_install() { if [ -d $ANDROID_ROOT ]; then ls -l $ANDROID_ROOT if [ ! -e $ANDROID_ROOT/vmlinux_bak ]; then sudo mv $ANDROID_ROOT/vmlinux $ANDROID_ROOT/vmlinux_bak else sudo rm $ANDROID_ROOT/vmlinux fi if [ -e ./bzImage ]; then sudo cp ./bzImage $ANDROID_ROOT/vmlinux sudo ls -l $ANDROID_ROOT else echo "[ERROR] bzImage is not exist." exit 127 fi else echo "[ERROR] $ANDROID_ROOT is not exist." exit 127 fi } ksu_uninstall() { if [ -d $ANDROID_ROOT ]; then if [ ! -d $ANDROID_ROOT/vmlinux_bak ]; then echo "$ANDROID_ROOT/vmlinux_bak is not found." echo "Maybe you have uninstall or you have not install KernelSU." exit 0 fi sudo rm $ANDROID_ROOT/vmlinux sudo mv $ANDROID_ROOT/vmlinux_bak $ANDROID_ROOT/vmlinux else echo "[ERROR] $ANDROID_ROOT is not exist." exit 127 fi } if [ -z "${1-}" ] || [ "${1-}" == "-h" ] || [ "${1-}" == "--help" ]; then ksu_help elif [ "${1-}" == "install" ]; then ksu_install vmc stop arcvm elif [ "${1-}" == "uninstall" ]; then ksu_uninstall vmc stop arcvm else echo "[ERROR] No such option." exit 1 fi
改了
不用,剛看了一下 bash shell 下面也有 vmc
, 所以可以直接在腳本裡面做
太好了,那就真的可以做到一键脚本咯。
chromeOS 有 两个 ROOT-A 分区。 每次系统升级,就换个系统分区。 所以,每次系统升级,又要升级后开机执行脚本。
很可能,没办法去设计, 【安装到未使用的槽位】的脚本。
和普通Chromebook不同,Brunch 只用 ROOT-A(3號分區,更新的時候將本應只寫往ROOT-B
的映像也寫往ROOT-A
,然後強制從ROOT-A
啟動,迷之操作)
這造成了另一個問題,就是原本的kernel備份也會因為更新而被刪除,這我們還要想想要怎麼解決
不是吧? 我记得,两个 ROOT-A,已经没有 ROOT-B 了。 我忘了,明天挂载 .img,去看看。
Describe the bug The
kernelsu/ksud.c:111:12: error: unused function 'count'
error appeared when runningbuild/build.sh
, triedexport CFLAGS='-Wno-error -Wno-unused-function'
but with no luck*Kernel compiled successfully without KernelSU patch
To Reproduce Steps to reproduce the behavior:
Smartphone (please complete the following information):
android12-5.10
EDIT: This error shows after commenting out
static int count
: