853 字
4 分钟

解决RK3588用Redroid运行碧蓝航线出现闪退的问题

首先,要感谢@CNflysky大佬,具体见该issue

对于 armbian 系统(内核5.10.160),可直接使用上述issue@CNflysky编译好的内核deb包#

  1. 卸载旧内核

    Terminal window
    dpkg -l | grep linux-image
    dpkg -l | grep linux-headers

    根据输出找到旧版本号,执行:

    Terminal window
    apt-get remove --purge linux-image-xxx
    apt-get remove --purge linux-headers-xxx
  2. 下载并安装新内核

    Terminal window
    mkdir -p /tmp/azur-lane-fix
    cd /tmp/azur-lane-fix
    wget https://github.com/user-attachments/files/16227927/linux-image-5.10.160-rockchip-rk3588_5.10.160-rockchip-rk3588-1_arm64.zip
    wget https://github.com/user-attachments/files/16227929/linux-headers-5.10.160-rockchip-rk3588_5.10.160-rockchip-rk3588-1_arm64.zip
    unzip *.zip
    dpkg -i *.deb
  3. 重启系统

    Terminal window
    reboot

如果使用的是 ubuntu-rockchip22.04版本,可以使用我编译好的内核包#

注意,如果你现有的内核版本比我这里的高,按评论区所说,降级内核后无法开机,对于内核版本更高的系统,请考虑使用这个链接: https://share.nyanners.moe/ubuntu-rockchip-5.10.0-1012-kernel.zip

  • 卸载旧内核的步骤不再赘述
  1. 下载并安装新内核

    Terminal window
    mkdir -p /tmp/azur-lane-fix
    cd /tmp/azur-lane-fix
    wget -O ubuntu-rochship-5.10.0-1010-kernel.zip https://share.nyanners.moe/ubuntu-rochship-5.10.0-1010-kernel.zip
    unzip ubuntu-rochship-5.10.0-1010-kernel.zip
    dpkg -i *.deb
  2. 重启

    Terminal window
    reboot
  3. 冻结内核更新

    Terminal window
    apt-mark hold linux-rockchip linux-image-rockchip linux-headers-rockchip linux-tools-rockchip

如果你使用的是其他系统,那么只好自己编译内核了^_^#

  1. 获取内核源码
  2. 进入源码目录
  3. 安装依赖
  4. 配置内核
    Terminal window
    make menuconfig # 当然,你也可以直接修改.config文件
    Kernel Features > Virtual address space bits中设置为39 bits,然后保存退出。
  5. 编译安装
  6. 重启

config menu Kernel Features 39 bits save&exit

特别地(已过时,建议直接修改https://github.com/Joshua-Riek/linux-rockchip/blob/noble/debian.rockchip/config/config.common.ubuntu 该文件对应的值而不是使用make menuconfig):

  • 如果你使用的是ubuntu-rockchip的24.04版本,同作者项目下的linux-rockchip即为内核源码。然后你只需设置CONFIG_ARM64_VA_BITS=39,执行build-kernel.sh脚本:
Terminal window
# 安装所需依赖
sudo apt-get install -y build-essential gcc-aarch64-linux-gnu bison \
qemu-user-static qemu-system-arm qemu-efi u-boot-tools binfmt-support \
debootstrap flex libssl-dev bc rsync kmod cpio xz-utils fakeroot parted \
udev dosfstools uuid-runtime git-lfs device-tree-compiler python2 python3 \
python-is-python3 fdisk bc debhelper python3-pyelftools python3-setuptools \
python3-distutils python3-pkg-resources swig libfdt-dev libpython3-dev
# 设置CONFIG_ARM64_VA_BITS=39
cd /path/to/ubuntu-rockchip/build
git clone https://github.com/Joshua-Riek/linux-rockchip -b noble --depth 2
cd linux-rockchip
make menuconfig # 然后 `Kernel Features` -> `Virtual address space bits` -> `39`
# 然后保存
# 编译内核
cd /path/to/ubuntu-rockchip
export SUITE=noble
./scripts/build-kernel.sh
# 等待一段可能很长的时间^_^
# 卸载旧内核,略
# 安装内核
dpkg -i ./build/*.deb
# 重启
reboot

务必根据最新文档和仓库更新进行操作,因为本文内容可能已过时。更多详细信息,请参考ubuntu-rockchip Wiki。最后,请确保在操作前备份重要数据,并根据实际情况调整步骤。

写在最后#

我猜你一定还想要顺便运行Alas对吧? 这里最简单的方式是使用别人build好的Alas镜像:

  1. 创建docker-compose.yaml
Terminal window
mkdir -p /opt/alas
cd /opt/alas
cat << EOT > docker-compose.yaml
version: '3.7'
services:
ALAS:
ports:
- 22267:22267
- 22268:22268
volumes:
- './AzurLaneAutoScript:/app/AzurLaneAutoScript:rw'
- './MAA:/app/MAA:rw'
- '/etc/localtime:/etc/localtime:ro'
container_name: alas
restart: always
image: crestfallmax/azurlaneautoscript:v0.1
EOT
  1. 拉取alas的源码
Terminal window
git clone https://github.com/LmeSzinc/AzurLaneAutoScript.git
  1. 应用docker版配置文件
Terminal window
cp AzurLaneAutoScript/config/deploy.template-docker-cn.yaml AzurLaneAutoScript/config/deploy.yaml
vim AzurLaneAutoScript/config/deploy.yaml # 根据实际情况修改
  1. 启动
Terminal window
docker-compose up -d
  1. 打开浏览器,访问http://<你的设备IP>:22267,然后进行配置
  2. 在你一切设置完毕后,可以修改docker-compose.yaml文件,覆写command字段,以便在容器启动时alas自动运行
Terminal window
command: ["python", "gui.py" , "--run", "alas"]

完整的docker-compose.yaml文件如下:

Terminal window
cat << EOT > docker-compose.yaml
version: '3.7'
services:
ALAS:
ports:
- 22267:22267
volumes:
- './AzurLaneAutoScript:/app/AzurLaneAutoScript:rw'
- '/etc/localtime:/etc/localtime:ro'
container_name: alas
restart: always
image: crestfallmax/azurlaneautoscript:v0.1
command: ["python", "gui.py" , "--run", "alas"]
EOT

在修改完成后,执行docker-compose up -d即可。

备注#

该镜像的作者似乎修改了自己的github用户名(或者和他的dockerhub用户名不是同一个),所以我无法提供他的github主页链接,但是你可以在dockerhub上找到他的镜像。

解决RK3588用Redroid运行碧蓝航线出现闪退的问题
https://nyanners.moe/fix-rk3588-redroid-azur-lane-crash
作者
Zero
发布于
2024-07-16
许可协议
CC BY-NC-SA 4.0