BCM95880X (PS410、PS225、PS250、PS1100)阴间使用
简介
https://datasheet.octopart.com/PS225---DUAL-PORT-25GBE-PCIE-ETHERNET-SMARTNIC-Avago-datasheet-116220963.pdf
这个卡有几个版本。总的来说,就是8核A72@3.0,可选的4-8-16G内存。这卡是用DPDK或者ovs降低host网络负载压力的玩意儿,在我手里,我只能说浪费。但是我尽我所能去折腾他。
电源和连接
电源使用pcie供电,也就是插到host上就可以。或者是用pcie单独供电。
使用USB UART 转3.5mm。官方推荐使用RS232串口芯片,其他芯片试了不行。使用115200波特率。
固件
使用非标准的EFI引导。目前只探索到了,使用内核+dtb就可以efi启动,但是据大佬说,可以不用dtb,暂时不知道怎么实现。
系统
编译好内核后,基本不限制系统,包括openwrt
启动
网卡启动之后,会自动执行efi shell的startup指令,进行系统引导。非正常的UEFI引导。
磁盘分区
按照博通的说法,64G的磁盘,一般是5个分区
- mmcblk0p1 512M--存放内核和dtb的分区。startup.nsh选择启动内核就是读取的这个分区,PARTLABEL="ESP"。最好别动!
- mmcblk0p2 768M--这个是恢复系统的分区。可以使用startup选择进入恢复模式,比如删除系统原来的密码,或者重新创建系统都可以。PARTLABEL="LinuxRoot" 最好别动!
- mmcblk0p3 16G--Linux root分区1。PARTLABEL="LinuxRoot.1"
- mmcblk0p4 16G--Linux root分区2。PARTLABEL="LinuxRoot.2"
- mmcblk0p5 --自定义分区
综上,他预装了3个分区,一个是恢复分区,建议别动!
另外两个是root分区,可以装不同的系统。比如一个centos,一个debian。自定义分区也可以装系统。
你可以保持前2个分区不动,其他分区自定义。注意在格式分区的时候,为了保证正确引导,需要PARTLABLE。否则startup不认你这个分区。
内核和dtb
他们都位于第一个分区。Image是内核,dt-blob就是dtb。如果你要引导其他内核,你就吧内核的vmlinuz复制到这个分区,改名为Image后面加上序号,如Image.3,dtb建议别动。
dtb和Image做多1-3。4号不识别。但是,这个是startup.nsh控制的,所以?你可以自己修改startup.nsh。
启动流程
这个efi无法将某个分区作为引导,只能使用efishell的startup自动启动,所以关键流程就在这个startup上了。如果要切换系统,切换内核就用startup.nsh去设置。当然也可以在系统里配置efi变量。这个参考下文
这里参考一下bmc的pdf教程
手动引导就是,select 要启动的分区,启动的内核,dtb。最后使用startup boot启动。
其他启动选项
在efishell输入 set extraarg ""
系统
进入机器自带的系统。如果需要密码,就进recovery,chroot之后更改密码
使用fdisk创建一个ext4的分区,并且格式化。使用gdisk进行修改partlabel
用blkid在验证,已经有LinuxRoot.2了
将分区挂载,放置rootfs。
这里以debian为例
下载bookworm的lxc镜像来试试
wget https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/debian/bookworm/arm64/default/20230309_05%3A24/rootfs.tar.xz
mount /dev/mmcblk0p5 /media/
tar -xvf rootfs.tar.xz -C /media
#复制模块
mkdir /media/lib/modules
cp -r /lib/modules/`uname -r` /media/lib/modules
umount /media
此时重启机器。
按任意键中断自动启动,进入efishell
选择新的rootfs
等会就会重启,不过我这个是lxc的,严格来说应该用debootstrap来制作rootfs。
内核
从上面的系统部分,我们可以看到,系统主要有2方面完成,1.内核 2.rootfs。只要有内核以及其模块,就可以启动不同的linux。
那么此节就是将如何编译这个内核。因为笔者对这个也了解不深,编译的内核或多或少有些问题。请不要介意。
最好使用博通的内核https://github.com/Broadcom/arm64-linux
官方内核重启似乎会卡住。
平台选择Broadcom iProc SoC Family
Device Drivers > Mailbox Hardware Support里面取消Broadcom FlexRM Mailbox 。发现这个东西,会导致开机卡死。
网卡为Broadcom NetXtreme-C/E support
笔者编译了5.11内核。下载地址为:https://github.com/jiangcuo/pve-arm64-kernel/releases/tag/v5.11-bcm95880
Tftp和NFS boot
安装软件
在linux上安装Tftp和nfs server
apt install tftpd-hpa nfs-kernel-server -y
下载套件
下载我整理好的套件
root@ubuntu-jammy:/data# mkdir /data
root@ubuntu-jammy:/data# wget https://mirrors.apqa.cn/d/foxi/Broadcom/broadcom_ps225.tar.gz
解压套件
root@ubuntu-jammy:/data# tar -xf broadcom_ps225.tar.gz
root@ubuntu-jammy:/data# ls
broadcom_ps225.tar.gz kernel nfs op tftp
修改tftpd配置文件
指定/data/tftp为根目录
nano /etc/default/tftpd-hpa
将/srv/tftp 替换成/data/tftp
重启服务systemctl restart tftpd-hpa.service
修改nfs配置
cat >> /etc/exports << EOF
/data/nfs/bullseye *(rw,async,no_root_squash,no_subtree_check)
/data/nfs/jammy *(rw,async,no_root_squash,no_subtree_check)
/data/nfs/centos *(rw,async,no_root_squash,no_subtree_check)
EOF
重新加载nfs
exportfs -rav
使用showmount 验证是否生效,有列表就代表生效。