---
# System prepended metadata

title: Yocto on FreeBSD
tags: [Book]

---

# Yocto on FreeBSD

此處放置 Yocto 在 FreeBSD 上的測試與實驗記錄

實驗記錄
---

## Quick build 嘗試

照著官方的 [Quick Build](https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html) 並選用 `core-image-full-cmdline` 的 target 在 ubuntu 的虛擬機上跑了一遍，確定可以正常用 qemu 執行。

> [10 Images](https://docs.yoctoproject.org/ref-manual/images.html)

在看文章並嘗試的時候有發現目前 Yocto 完全只有 Linux 相關的 layer，並不支援其他的作業系統，看起來之後恐怕連最底下的 openembeded layer 都不能 reuse，原本 Yocto 提供的 POKY 也是完全派不上用場，值得慶幸的是至少可以拿來當成寫法的參考。

安裝紀錄
---

FreeBSD 上因為部分 CLI 工具的 interface 和 GNU 系列不一樣，在腳本執行上結果會有所不同

```shell=
$ pkg install python3 py39-sqlite3
$ sh
$ . oe-init-build-env
```

照官網直接執行會吐 `BUILDDIR` 的環境變數錯誤，需要註解掉 `scripts/oe-buildenv-internal` 中有用到 readlink 的變數設定

嘗試執行

```shell=
$ bitbake core-image-minimal
```

無法連線到 bitbake server，貌似執行時 bitbake 會起一個後端伺服器來執行 task，現在要馬是 server 執行不正常沒辦法接收連線不然就是 socket 位置錯了，不排除其他可能

> 貌似 socket 連線有點問題，`bitbake/lib/bb/server/process.py` 的 `recv_fds` 裡面收到的資料可能是錯的，導致連線失敗

## BitBake 移植

```shell
$ sudo pkg install wget
```

原因： socket.recv_fds 功能不正常，可寫一個 reproduce repo

Python socket.recvmsg 功能不正常，可先測試 FreeBSD 上的 libc recvmsg 是否正常

###### tags: `FreeBSD` `Yocto` `Book`
