在Hifive unmatched上安装FreeBSD

最近手痒想试试FreeBSD,正好FreeBSD ports 也在找一台builder,吴老板给我凑了2台Unmatched 跑Linux的Go builder,所以我这台就空出来了~

其实按着官方的教程就好,官方教程:https://wiki.freebsd.org/riscv/HiFiveUnmatched

不过要注意2点!!(花了我两个晚上),一切的错误都从我没仔细看教程开始……第一个错误是直接把FreeBSD的镜像直接烧进了SD卡里!然后以为这就行了~结果发现,其实Unmatched的固件决定了必须从SD上特定的分区才能启动!所以直接烧进SD卡里,应该是根据教程写进一个U盘里。

也就是一共需要三个东西:

  1. 装有原生镜像的sd卡
  2. dd有FreeBSD memstick image的U盘
  3. 一个空的nvme (三星970最好)

诡异的是,重新给SD卡烧录了Ubuntu的镜像,系统nvme就因为找不到root直接进(initramfs)了。

我脑子抽了就直接用SD卡里的Ubuntu shell 直接 dd if=/dev/zero of=/dev/nvme0n1 …… 想通过干掉分区表(GPT)来阻止从nvme启动。结果噩梦就开始了,SD卡里的Ubuntu怎么都找不到nvme和U盘了。折腾了一晚没啥收获,第二天不停的重启和对比才发现。UBoot启动的过程中需要启动pci!要不然你怎么执行命令启动USB都是不行的,usb start 就会报错 no working controllers found

所以正确的做法是,在U-boot自动启动过程中先启动pci 子系统

pci enum
setenv boot_targets usb0
boot

最后就是标准的FreeBSD安装流程了~ yes~

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据