刷机红米K20P

Viewed 5

巨款购买手机K20P

路由器,机顶盒,都玩腻了,现在轮到手机了。

首先要庆祝一下,我也是个米粉了现在,巨款259.00元包邮入手 红米K20 Pro 配置是: 晓龙855 12+512G




项目地址

https://github.com/GengWei1997/linux-xiaomi-raphael-uboot/tree/master

刷机前(解锁bootloader)

  • 注册一个小米账号
  • 官网下载 miflash_unlock_7.6.727.43.zip (里面有驱动,手动安装)
  • 解锁 bootloader (重点,手机要插小米账号那个sim卡,关闭wifi,然后在手机解锁界面绑定),否则出下图
  • 绑定后,就可以成功解锁了,不用等几天。

刷机中

按官网 https://github.com/GengWei1997/linux-xiaomi-raphael-uboot/tree/master 步骤,
其中adb fastboot 在 https://dl.google.com/android/repository/platform-tools-latest-windows.zip 下载

# 1. 进入 Fastboot 模式
adb reboot bootloader ## 用 `下按键+pwr按键` 也一样的。

# 2. 擦除分区
fastboot erase dtbo
fastboot erase boot
fastboot erase cache
fastboot erase userdata

# 3. 刷入 boot 镜像
fastboot flash cache xiaomi-k20pro-boot.img
fastboot flash boot u-boot.img

# 4. 刷入系统镜像(需要先解压 rootfs.7z)
fastboot flash userdata rootfs.img  ##这里文件太大

# 5. 重启设备
fastboot reboot

遇到问题

fastboot flash userdata rootfs.img libc++abi: terminating due to uncaught exception of type std::bad_alloc: std::bad_alloc

方案:转换为稀疏镜像(老师给我的版本)

# 安装工具
sudo apt install android-tools-fsutils

# 转换
img2simg rootfs.img rootfs_sparse.img

# 回到 Windows 用 fastboot 刷入
fastboot.exe flash userdata rootfs_sparse.img

ssh 修复

  • osc 导致 SecureCTR 无法正常使用
# 删除软链接,创建同名空文件
rm /etc/profile.d/80-systemd-osc-context.sh
touch /etc/profile.d/80-systemd-osc-context.sh
chmod -x /etc/profile.d/80-systemd-osc-context.sh

安装docker

# 安装依赖
apt update
apt install -y ca-certificates curl gnupg

# 添加 Docker GPG 密钥
install -m 0755 -d /usr/share/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker.gpg
chmod a+r /usr/share/keyrings/docker.gpg

# 添加 Docker 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable" | tee /etc/apt/sources.list.d/docker.list

# 安装
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  • 检查版本和是否可以运行
docker --version
docker run hello-world

  • 设置自启动
systemctl enable docker
systemctl start docker
##普通用户可以访问
usermod -aG docker user

IO测试

dd if=/dev/zero of=./testfile bs=1G count=10 oflag=direct  && dd if=./testfile of=/dev/null bs=1G count=10 && rm ./testfile

CPU测试 Coremark

Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 87142.805272 / GCC13.2.1 20240309 -O2 -DMULTITHREAD=8 -DUSE_FORK -DPERFORMANCE_RUN=1  -lrt / Heap / 8:Fork
芯片soc 内核数 多核跑分 备注
mt7981 2 8914 RAX3000M
s905l3b 4 16000 移动盒子 功耗1.2瓦
ipq8071 2 18000
ipq6000 4 20658 亚瑟
intel 1037U 2 23170
IPQ6010 4 24160 太乙.雅典娜
s905l3a 4 24286 移动盒子 功耗1.2瓦
mt7986 4 27226
RK3566 4 27692 JPTV
intel J1900 4 34060 蜗牛星际
RK3399 6 32548 /37428(openwrt)
骁龙855 8 87142 (ubuntu26)

网速测试

docker run --rm \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e PASSWORD=123456 \
  -p 3000:80 \
  lscr.io/linuxserver/librespeed:latest

通过局域网 http://ip:30000

系统相关信息

sys_info

#!/bin/bash

# 通过 CPU part 识别型号
get_cpu_model() {
  PART=$(grep 'CPU part' /proc/cpuinfo | head -1 | awk '{print $NF}')
  case $PART in
    0x804|0x805) echo "Qualcomm Snapdragon 865 (Kryo 585)" ;;
    0x802|0x803) echo "Qualcomm Snapdragon 845 (Kryo 385)" ;;
    0xd44)       echo "ARM Cortex-A76" ;;
    0xd03)       echo "ARM Cortex-A53" ;;
    *)           echo "Unknown (CPU part: $PART)" ;;
  esac
}

# 最大主频
get_max_freq() {
  MAX=0
  for f in /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq; do
    VAL=$(cat $f 2>/dev/null)
    [ "$VAL" -gt "$MAX" ] && MAX=$VAL
  done
  awk -v f=$MAX 'BEGIN{printf "%.0fMHz", f/1000}'
}
echo ""
echo "系统:     $(. /etc/os-release && echo "$PRETTY_NAME") ($(uname -m))"
echo "CPU型号:  $(get_cpu_model)"
echo "CPU核心:  $(nproc) 核  (小核x4 Kryo585 Silver + 大核x4 Kryo585 Gold)"
echo "CPU主频:  $(get_max_freq)"
echo "内存:     $(free | awk 'NR==2{printf "%.1fGB / %.1fGB", $3/1024/1024, $2/1024/1024}')"
echo "存储:     $(df -h / | awk 'NR==2{printf "%s / %s", $3, $2}')"

echo ""
BAT=/sys/class/power_supply/qcom-battery
CAPACITY=$(cat $BAT/capacity)
FULL=$(cat $BAT/charge_full_design)

echo "===== 电池 ====="
echo "电量:     ${CAPACITY}%"
echo "状态:     $(cat $BAT/status)"
echo "电压:     $(awk '{printf "%.3fV", $1/1000000}' $BAT/voltage_now)"
echo "电流:     $(awk '{printf "%.1fmA", $1/1000}' $BAT/current_now)"
echo "温度:     $(awk '{printf "%.1f°C", $1/10}' $BAT/temp)"
echo "设计容量: $(awk -v f=$FULL 'BEGIN{printf "%dmAh", f/1000}')"
echo "剩余容量: $(awk -v cap=$CAPACITY -v full=$FULL 'BEGIN{printf "%.0fmAh / %dmAh (%d%%)", cap*full/1000/100, full/1000, cap}')"

echo ""
echo "===== CPU温度 ====="
echo "小核簇:   $(awk '{printf "%.1f°C", $1/1000}' /sys/class/thermal/thermal_zone5/temp)"
echo "大核簇:   $(awk '{printf "%.1f°C", $1/1000}' /sys/class/thermal/thermal_zone6/temp)"
for zone in 1 2 3 4 7 8 9 10 11 12 13 14; do
  TYPE=$(cat /sys/class/thermal/thermal_zone${zone}/type)
  TEMP=$(cat /sys/class/thermal/thermal_zone${zone}/temp)
  awk -v t=$TEMP -v name=$TYPE 'BEGIN{printf "%-26s %.1f°C\n", name, t/1000}'
done

echo ""
echo "===== GPU温度 ====="
echo "gpu:      $(awk '{printf "%.1f°C", $1/1000}' /sys/class/thermal/thermal_zone15/temp)"

echo ""

查看防火墙状态

# 查看 ufw 状态和已开放端口
ufw status verbose

开放 3000-5000 端口

# TCP
ufw allow 3000:5000/tcp

# UDP
ufw allow 3000:5000/udp

# 重载生效
ufw reload

验证

ufw status verbose | grep 3000

如果 ufw 未启用

# 查看状态
ufw status

# 启用(注意:启用前确保 SSH 端口已放行,否则会断连)
ufw allow 22/tcp
ufw enable
0 Answers