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

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

简单点说,内核设置`CONFIG_ARM64_VA_BITS=39`,重新编译并启用新内核即可解决

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

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

  1. 卸载旧内核

    1
    2
    
    dpkg -l | grep linux-image
    dpkg -l | grep linux-headers
    

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

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

    1
    2
    3
    4
    5
    6
    
    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. 重启系统

    1
    
    reboot
    

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

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

    1
    2
    3
    4
    5
    
    mkdir -p /tmp/azur-lane-fix
    cd /tmp/azur-lane-fix
    wget -O ubuntu-rochship-5.10.0-1010-kernel.zip http://106.54.58.100:18888/ubuntu-rochship-5.10.0-1010-kernel.zip
    unzip ubuntu-rochship-5.10.0-1010-kernel.zip
    dpkg -i *.deb
    
  2. 重启

    1
    
    reboot
    
  3. 冻结内核更新

    1
    
    apt-mark hold linux-rockchip linux-image-rockchip linux-headers-rockchip linux-tools-rockchip
    

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

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

config menu Kernel Features 39 bits save&exit

特别地

  • 如果你使用的是ubuntu-rockchip的24.04版本,同作者项目下的linux-rockchip即为内核源码。然后你只需设置CONFIG_ARM64_VA_BITS=39,执行build-kernel.sh脚本:
 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
# 安装所需依赖
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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
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的源码
1
git clone https://github.com/LmeSzinc/AzurLaneAutoScript.git
  1. 应用docker版配置文件
1
2
cp AzurLaneAutoScript/config/deploy.template-docker-cn.yaml AzurLaneAutoScript/config/deploy.yaml
vim AzurLaneAutoScript/config/deploy.yaml # 根据实际情况修改
  1. 启动
1
docker-compose up -d
  1. 打开浏览器,访问http://<你的设备IP>:22267,然后进行配置
  2. 在你一切设置完毕后,可以修改docker-compose.yaml文件,覆写command字段,以便在容器启动时alas自动运行
1
command: ["python", "gui.py" , "--run", "alas"]

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
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上找到他的镜像。


使用 Hugo 构建
主题 StackJimmy 设计