fix target jobs
in /mnt/host/source/chromite/
按照 Building CromiumOS 的說明,並沒有提到任何 parallel jobs 的設定方法,目前只知道目前 (2022-05) 偵測 CPU cores 的程式有錯誤,若主機有 N 個 core,build package 階段可能會出現 NxN 個 parallel jobs。
方法一:加上 –jobs 參數
在 build_package 時,加上參數 --jobs=N
,以便讓 build script 僅使用指定的 job mount 來建立編譯環境。例如:
build_packages --jobs=1 --board=${BOARD}
方法二:在 build_package 之前 grep 並做修改
進入 cros_sdk (chroot) 並設定好 BOARD 之後,透過 grep -r jobs ~/chromiumos/src
尋找是否有錯誤的設定。例如可能會看到以下設定:
./platform/tast/src/chromiumos/tast/cmd/tast/internal/build/portage.go:92: add("emerge", "--jobs=16", "--usepkg", "--onlydeps", "--update", "--deep", "1")
或是:
./platform/factory/py/bundle_creator/docker/util.py:154: os.path.join(temp_dir, 'MANIFEST.yaml'), '--jobs', '7'
script 有指定 parallel jobs,但是卻沒有吃到使用者的設定值,所以一跑主機就爆。
建議:
- 處理器建議要有 16 cores
- 記憶體建議 32 GB 以上
- 注意一下 golang 相關的參數,
go build
把主機記憶體吃光,導致編譯到一半 kernal panic