法楽日記

デジタル散策記&マインド探訪記

MINIX 3 を macOS 11 Big Sur でビルドしてみた

マイクロカーネル OS として有名な MINIX 3 を、インテルmacOS 11 Big Sur でビルドしてみました。若干修正するだけでビルドに成功しました。

作業手順は、下記ドキュメントに従いました。

ただし、git clone するときは、git.minix3.org よりも、下記の GitHub の方が高速でした。

https://github.com/Stichting-MINIX-Research-Foundation/minix

MINIX 3 のソースコードに対しては、下記の修正が必要でした。

ひとつめは、src/tools/compat/compat_defs.h です。OS による差異を吸収するためのヘッダです。ヘッダ末尾付近に下記を追加すると、コンパイル・エラーが出なくなります。

#if defined(__APPLE__)
#include <TargetConditionals.h>
#if defined(TARGET_OS_OSX)
extern void  mi_vector_hash(const void * __restrict, size_t, uint32_t,
                uint32_t[3]);
#include <err.h>
#endif
#endif

ふたつめは、src/gnu/dist/texinfo/lib/system.h です。MINIX 3 のビルドの過程で texinfo 4.8 がダウンロードされます。その中に含まれる、OS による差異を吸収するためのヘッダです。ヘッダ末尾付近に下記を追加すると、コンパイル・エラーが出なくなります。

#if defined(__APPLE__)
#include <TargetConditionals.h>
#if defined(TARGET_OS_OSX)
#include <stdlib.h>
#endif
#endif

どちらも、本来であれば autotools の流儀に従って修正すべきところだと思います。しかし、私は autotools の門外漢ですので、今日のところは上記を追記する形を取りました。どちらも宿題です。