萌えハッカーニュースリーダー

2025/07/03 09:53 Building Linux kernel on macOS natively

出典: https://seiya.me/blog/building-linux-on-macos-natively
hakase
博士

やあ、ロボ子。今日はStarina OSのLinux互換レイヤー構築の話をするのじゃ。

roboko
ロボ子

Linux互換レイヤーですか、興味深いですね。macOS上でLinuxカーネルをビルドする試みがあったそうですが。

hakase
博士

そうそう。macOS上でLinuxカーネルをネイティブにビルドするなんて、ちょっとクレイジーじゃろ?

roboko
ロボ子

確かにそうですね。どんな環境で試されたんですか?

hakase
博士

macOS 15.5 (Sequoia)に、Linux kernel 6.12.34、RISC-Vアーキテクチャでのクロスコンパイルじゃ。

roboko
ロボ子

なるほど。色々な課題があったようですが、どのように解決されたんですか?

hakase
博士

まず、macOSの`make`が古かったから、Homebrewで`make`をインストールして`gmake`を使ったのじゃ。それから、リンカの問題でLLVM linkerとclangが必要になったみたいじゃな。

roboko
ロボ子

`ld`がLinuxの要件を満たさないんですね。他にどんな問題がありましたか?

hakase
博士

`elf.h`みたいなヘッダーファイルが足りなかったから、Homebrewで`libelf`をインストールして、インクルードパスを追加したのじゃ。

roboko
ロボ子

なるほど、依存関係の解決ですね。`byteswap.h`はどう対応したんですか?

hakase
博士

Clangの組み込み関数を使ったみたいじゃ。あと、`uuid_t`の不整合にはNick Desaulniersのパッチを適用したらしいぞ。

roboko
ロボ子

細かい修正が必要だったんですね。`sed`の非互換性もあったそうですが。

hakase
博士

そうじゃ。macOSの`sed`の代わりに、Homebrewの`gnu-sed`を使ったのじゃ。

roboko
ロボ子

色々な問題を乗り越えて、最終的にはmacOS上でLinuxカーネルのビルドに成功したんですね!

hakase
博士

そうなんじゃ!しかも、AArch64アーキテクチャでも同様にビルドできたらしいぞ。

roboko
ロボ子

すごいですね!ビルド時間の比較もあるみたいですが。

hakase
博士

クリーンビルドだとmacOSの方が速くて、インクリメンタルビルドだとLinuxの方が速いみたいじゃな。面白い結果じゃ。

roboko
ロボ子

環境によって得意不得意があるんですね。教訓としては、`scripts`ディレクトリの問題が多いとのことですが。

hakase
博士

`scripts`ディレクトリは鬼門じゃな。修正とテストの繰り返しが大事じゃ。

roboko
ロボ子

カーネルの機能を増やすと、新たなビルドエラーが発生する可能性があるんですね。

hakase
博士

そうそう。機能追加は常にリスクと隣り合わせじゃ。

roboko
ロボ子

修正パッチはGitHubで公開されているんですね。

hakase
博士

その通り![GitHub](https://github.com/starina-os/starina/blob/d095696115307e72eba9fe9682c2d837d3484bb0/linux/building-linux-on-macos.patch)で入手できるぞ。

roboko
ロボ子

今回の試みは、Linux互換レイヤーの構築に大きく貢献しそうですね。

hakase
博士

そうじゃな。しかし、macOSでLinuxカーネルをビルドするなんて、まるで猫が犬の真似をするようなものじゃな。

roboko
ロボ子

確かに、ちょっと無理があるかもしれませんね(笑)。

hakase
博士

でも、不可能を可能にするのがエンジニアのロマンじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search