前言
上海科技大学(ShanghaiTech)的校园网采用 Web Portal 认证方式,设备需要先通过浏览器登录才能上网。对于希望使用 OpenWrt 路由器的用户来说,认证流程和 IPv6 配置都有不少坑。本文记录了完整的配置过程,包括:
- 校园网 Web 认证的解决方案(MAC 地址克隆)
- IPv6 配置(ISP 不下发前缀委派的处理)
- OpenClash Fake-IP 模式下的 DNS 问题
本教程详细说明如何在 NVIDIA H20 GPU 上运行 DeepEP replay benchmark。
Luckfox Pico Mini B/M是一款基于瑞芯微RV1103芯片的迷你Linux开发板,售价约$9,集成64MB DDR2内存、单核ARM Cortex-A7处理器和0.5TOPS NPU。由于其仅有128MB SPI Flash,日常开发推荐使用SD卡启动。本文记录从SD卡刷写到USB调试连接的完整过程。
| 项目 | 规格 |
|---|---|
| 处理器 | ARM Cortex-A7 @ 1.2GHz + RISC-V |
| NPU | 0.5TOPS,支持int4/int8/int16 |
| 内存 | 64MB DDR2 |
| 存储 | 128MB SPI Flash(板载)/ SD卡槽 |
| USB | USB 2.0 Host/Device |
| 相机接口 | MIPI CSI 2-lane |
| GPIO | 17路GPIO |
Luckfox官方提供Ubuntu和Buildroot的预编译SD卡镜像:
下载链接: https://drive.google.com/drive/folders/14kFWY93MZ4Zga4ke2PVQgUs1y9xcMG0S
常用镜像包括:
Ubuntu_Luckfox_Pico_Mini_B_MicroSD_250313.zip - Ubuntu 22.04系统| 系统 | 内存占用 | 适用场景 |
|---|---|---|
| Buildroot | 低 | 嵌入式最小化系统 |
| Ubuntu 22.04 | 中等至高 | 全功能开发环境 |
| Foxbuntu | 中等 | 低功耗网络应用(Meshtastic、LoRa) |
| Alpine Linux | 极低 | 安全导向极简系统 |
下载镜像压缩包并解压到工作目录
确认SD卡设备路径,在Linux中运行:
1 | $ lsblk |
插入SD卡后找到对应设备,通常为/dev/sdb或/dev/sdc
获取刷写工具 blkenvflash.py(官方镜像压缩包内已包含)
此工具专用于将多个.img分区文件按正确偏移量写入SD卡:
1 | $ cd Ubuntu_Luckfox_Pico_Mini_B_MicroSD_250313 |
输出示例:
1 | == blkenvflash.py 0.0.1 == |
⚠️ 重要提示:
- 参数必须是SD卡设备路径(如/dev/sdb)而非分区(如/dev/sdb1)
- 大文件刷写耗时较长,请耐心等待,进程卡住是正常的
- 必须从包含所有.img文件的目录运行此脚本
- SDK编译生成的镜像同样适用此工具刷写
| 文件 | 大小 | 描述 |
|---|---|---|
| idblock.img | 184KB | Rockchip Bootloader识别块 |
| download.bin | 263KB | Rockchip专用底层引导程序 |
| uboot.img | 256KB | U-Boot主引导加载程序 |
| env.img | 32KB | U-Boot环境配置 |
| boot.img | 3.4MB | Linux内核+设备树 |
| rootfs.img | 195MB | 根文件系统 |
| oem.img | 43MB | OEM厂商数据分区 |
| userdata.img | 9.6MB | 用户数据分区 |
💡 实测性能:SD卡读取速度约21.87 MB/s,SPI Flash仅4.40 MB/s,强烈建议使用SD卡
Pico通过USB提供RNDIS网络接口实现调试连接:
1 | # 插入USB后查看新接口 |
配置步骤:
172.32.0.100/16(与Pico同一网段)172.32.0.70(Ubuntu镜像)或172.32.0.931 | $ ping 172.32.0.70 |
1 | # SSH登录(Ubuntu镜像默认用户 pico) |
1 | $ adb device |
配置好了权限自动会连接。
参考链接:
AWS 提供了一个免费的公有容器注册表服务(ECR Public Gallery),可以用来托管公开镜像。相比其他私有源,这个方案完全免费且支持全球加速。阿里云同样提供了免费的容器镜像服务(ACR)个人版,国内访问速度更快。两者结合使用,可以覆盖国内和海外用户的需求。
参考官方文档:
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html
1 | sudo aws configure |
输入 Access Key ID、Secret Access Key、默认区域等信息。
myproject/myimage)public.ecr.aws/<owner-id>/<repo-name>1 | # 获取当前用户并切换到 root(如果需要 sudo 权限) |
参考文档:https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html
确保你的项目目录中有 Dockerfile。
1 | # 构建镜像 |
将镜像 tag 为你创建仓库的完整 URL:
1 | # 假设你的仓库是 public.ecr.aws/abcd1234/myrepo |
1 | docker push public.ecr.aws/abcd1234/myrepo:latest |
其他人可以使用以下命令拉取你的公开镜像:
1 | # 先登录(可选,只读访问不需要,登录每月2T FREE,匿名500G) |
1 | # 1. 切换到 root(如果需要) |
除了 AWS ECR Public,阿里云的容器镜像服务(ACR)个人版也是一个免费的镜像托管方案,适合国内用户使用,访问速度更快。
访问凭证页面:https://cr.console.aliyun.com/cn-shanghai/instance/credentials
在「访问凭证」页面设置 Docker 登录密码,然后获取固定密码或临时凭证。
1 | # 登录阿里云 ACR(替换为你的区域和用户名) |
输入密码后即可登录成功。
registry.cn-shanghai.aliyuncs.com/<namespace>/<repo-name>1 | # 构建镜像 |
1 | # 登录(可选,公开仓库不需要) |
1 | # 1. 登录 ACR |
1 | # 登录阿里云 ACR 个人版实例 |
注意:个人版实例的 registry 地址格式为
crpi-<id>.cn-shanghai.personal.cr.aliyuncs.com,与标准版略有不同。
阿里云 ACR 在多个区域提供服务,常用的包括:
| 区域 | Endpoint |
|---|---|
| 上海 | registry.cn-shanghai.aliyuncs.com |
| 杭州 | registry.cn-hangzhou.aliyuncs.com |
| 北京 | registry.cn-beijing.aliyuncs.com |
| 深圳 | registry.cn-shenzhen.aliyuncs.com |
| 香港 | registry.cn-hongkong.aliyuncs.com |
| 特性 | AWS ECR Public | 阿里云 ACR 个人版 |
|---|---|---|
| 免费额度 | 匿名 500G/月,登录 2T/月 | 免费,无明确流量限制 |
| 国内访问 | 较慢(需翻墙或走国际线路) | 快(国内节点) |
| 适用场景 | 面向全球用户 | 面向国内用户 |
| 命名空间 | public.ecr.aws/<owner>/<repo> |
registry.cn-<region>.aliyuncs.com/<ns>/<repo> |
| 登录方式 | AWS CLI 获取 token | 用户名 + 固定密码 |
建议:如果你的用户主要在国内,优先使用阿里云 ACR;如果面向全球,使用 AWS ECR Public。
us-east-1,这是 ECR Public 的统一入口区域本文记录在 Ryzen AI Max PRO 395 平台上安装和使用 TheRock ROCm 7.11.0 的过程,包括 HIP 开发环境和 rocperf 性能测试工具的配置。
Ryzen AI APU 需要 Ubuntu 24.04 的 OEM 内核 6.14:
1 | sudo apt update && sudo apt install linux-image-6.14.0-1018-oem |
安装完成后重启系统。
1 | # 安装基础依赖 |
有两种方式配置 GPU 访问权限:
方式一:添加用户到组(推荐)
1 | sudo usermod -a -G render,video $LOGNAME |
方式二:使用 udev 规则
1 | sudo tee /etc/udev/rules.d/70-amdgpu.rules << EOF |
配置完成后需要重启系统以应用所有设置。
1 | # 下载并安装 GPG 密钥 |
1 | # 安装 TheRock Core Runtime (用于运行应用) |
对于 Python 项目,可以使用 pip 方式安装 ROCm 库:
1 | # 创建并激活 Python 虚拟环境 |
1 | rocminfo | grep "Driver Version" |
期望输出应显示类似 7.11.0。
1 | rocminfo --show-hw |
1 |
|
1 | aup@aup-To-Be-Filled-By-O-E-M:~$ hipcc hip_full_check.cpp -o hip_check |
Python torch test
1 | import torch |
1 | (torch) aup@aup-mi50:~$ python torch_test.py |
Base script for dockerfile
1 | sudo docker run -it --rm --shm-size=2g --device=/dev/kfd --device=/dev/dri --group-add video -p 8000:8000 -v ~/Qwen3-0.6B:/model nalanzeyu/vllm-gfx906 vllm serve /model |
VLLM startup log
1 | INFO 12-31 08:00:32 [__init__.py:239] Automatically detected platform rocm. |
VLLM Result
1 | INFO 12-31 08:30:11 [metrics.py:486] Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 13.0 tokens/s, Running: 1 reqs, Swapped: 0 reqs, Pending: 0 reqs, GPU KV cache usage: 10.5%, CPU KV cache usage: 0.0%. |
最近入手了一台小主机,安装两块X340T2万兆网卡,计划用一块 128G 的固态硬盘搭建 ESXi 8.0 U2 并运行 OpenWrt 作为主路由。虽然硬件配置简单,但 ESXi 8.0 的默认分区策略和直通配置还是有不少坑。本文记录了从安装到网卡直通、以及 OpenClash 配置的全过程。
ESXi 8.0 引入了新的分区机制,默认会预留约 128G 的 OSData 分区。对于只有 128G 硬盘的设备来说,这意味着安装完系统后将没有任何空间创建 Datastore(存储) 来存放虚拟机。
插入 U 盘启动,在出现 ESXi 倒计时加载画面(黑底白字)时,立刻按下 Shift + O。
在命令行末尾输入空格,追加以下参数:
1 | systemMediaSize=min |
注意:
min模式会将系统占用限制在 33GB 左右,从而为虚拟机留出约 90GB 的可用空间。如果不加此参数,128G 硬盘将无法创建存储。
按回车继续安装,后续按照提示设置 Root 密码并完成安装。
进入主板 BIOS,确保开启以下虚拟化选项,否则无法通过硬件直通:
datastore1 是否已自动创建(约 80-90GB)。管理 -> 硬件 -> PCI 设备。切换直通。如果切换直通时报错 Cannot configure PCI-Passthrough on incapable device(常见于消费级网卡或多功能设备),需 SSH 登录 ESXi 修改配置文件:
1 | vi /etc/vmware/passthru.map |
保存后重启 ESXi 即可生效。
.img.gz 解压后的 .img 文件转换为 ESXi 专用的 .vmdk 文件。Linux -> 其他 Linux (64位)。.vmdk 文件。编辑设置 -> 内存 中,勾选 “预留所有客户机内存”。否则直通设备会导致开机失败。https://kvcb.me/2019/04/04/OpenWrt/ ; https://github.com/wangyu-/tinyfecVPN/wiki/%E7%94%A8openwrt%E8%B7%AF%E7%94%B1%E5%99%A8%E6%90%AD%E5%BB%BA%E9%80%8F%E6%98%8E%E4%BB%A3%E7%90%86%EF%BC%8C%E5%8A%A0%E9%80%9F%E5%B1%80%E5%9F%9F%E7%BD%91%E5%86%85%E6%89%80%E6%9C%89%E8%AE%BE%E5%A4%87 ;
https://flandre-scarlet.moe/blog/2016/
此时 OpenWrt 拥有两个网口:
通过 ESXi 的控制台(VNC)进入 OpenWrt 命令行:
1 | vi /etc/config/network |
配置 LAN 口(根据自家局域网规划):
1 | config interface 'lan' |
重启网络服务:
1 | service network restart |
登录 OpenWrt Web 后台:
网络 -> 接口 -> WAN。物理设置 中选择直通的 eth1 接口。PPPoE(拨号)或 DHCP(光猫路由模式)。网络通畅后,安装 OpenClash 实现网络分流。
1 | opkg update |
.ipk 包上传至 /tmp 目录并安装:1 | opkg install /tmp/luci-app-openclash*.ipk |
Dev 和 Tun 内核,上传至 /etc/openclash/core/ 目录并赋予执行权限 chmod +x。Fake-IP 模式以获得最佳性能。通过 systemMediaSize=min 参数,我们成功在 128G 硬盘上“抠”出了足够的空间;通过修改 passthru.map 和内存预留,解决了网卡直通的各种疑难杂症。这套方案非常适合利用闲置小主机搭建高性能的家庭网络中心。
感谢这个report: https://bughunters.google.com/blog/5424842357473280/zen-and-the-art-of-microcode-hacking ,感谢这个lecture https://www.youtube.com/watch?v=sUFDKTaCQEk ,本PPT也上传到了 google drive
对应zentool的链接 https://github.com/google/security-research/tree/master/pocs/cpus/entrysign/zentool ,
对应ucode包的链接 https://github.com/platomav/CPUMicrocodes/blob/0be0bd7b6a3ec1f1b59562729f1ce14b9569b697/AMD/cpu00870F10_ver08701034_2024-02-23_52FB44A3.bin
Code of create template
1 | cd ~/Code/CS253/EntrySign/security-research-zentool/pocs/cpus/entrysign/zentool |
Code of attack on fpatan
1 | ./zentool -o fpatan.bin edit --match 0=@fpatan --seq 0=7 --insn q0i0="add rax, rax, 0x1337" template.bin |

Code of attack on rdrand
1 | ./zentool -o rdrand.bin edit --match 0=@rdrand --seq 0=0x100002 --insn q0i0="mov.qs rax,rax,4" template.bin |

Thanks: https://github.com/nikos230/Run-Pytorch-with-AMD-Radeon-GPU

跟着教程里的脚步走,要注意先把原来所有的hip和rocm软件全部卸载
注意这个实验解除了以后要手动去掉/etc/environment的相关配置
1 | sudo echo ROC_ENABLE_PRE_VEGA=1 >> /etc/environment |
装完以后ubuntu桌面挂了…修了半天没修好不管了。
可以装个amdgpu_top https://github.com/Umio-Yasuno/amdgpu_top 用来好好看负载占用,比较神奇的是588也能用
1 | import torch |
1 | absl-py==2.1.0 |
也许可以给MI50/100 5700XT重新编译一版torch?感觉应该只是改环境变量的问题。
接下来会试试MI50/5700XT/6800XT这些老卡的推理支持
纯toy,因为transformer的版本到4.36.2,https://pypi.org/project/transformers/4.36.2/ 没有新模型可以用,chat的最高就是llama-2,缺乏实用性
Wishes transcended thousands miles…