macOS上でネイティブにLinuxカーネルをビルドする:コンパイル地獄への旅

2025-07-03
macOS上でネイティブにLinuxカーネルをビルドする:コンパイル地獄への旅

この記事では、macOS上でネイティブにLinuxカーネル(RISC-Vアーキテクチャ)をビルドした際の著者の経験について詳しく説明しています。この旅は多くの課題に満ちていました。古いmakeのバージョン、macOSのldがLinuxの期待と互換性がないこと、elf.hとbyteswap.hヘッダーファイルの欠如、uuid_tとsedのバージョン競合などです。著者はHomebrewを使用して最新のツールチェーン(make、llvm、lld、libelf、gnu-sed)をインストールし、ヘッダーファイルの不一致と型定義の競合に対処するためにパッチを作成することで、これらの問題を克服しました。カーネルは正常にビルドされ、クリーンビルドではmacOSの方がDockerよりも高速でしたが、インクリメンタルビルドでは遅くなりました。著者は、ビルドの問題の解決は継続的な統合と同様の、継続的で反復的なプロセスであると結論付けています。

続きを読む
開発

Starina:ハイパーバイザーをライブラリとして扱うマイクロカーネルOS

2025-05-20
Starina:ハイパーバイザーをライブラリとして扱うマイクロカーネルOS

この記事では、StarinaオペレーティングシステムにおけるLinux互換性のための革新的なアプローチを紹介します。それは、ハイパーバイザー(VMM)をアプリケーション内にライブラリとして統合することです。従来のスタンドアロン型のVMMとは異なり、Starinaの`starina_linux::Command` APIを使用すると、開発者は`std::process::Command`と同様にLinuxプログラムを実行し、仮想ファイルシステム(virtio_fs)を介して仮想マシンとやり取りできます。この設計により開発が簡素化され、ネイティブLinux環境よりも高速な起動時間を実現する可能性があります。現在、基本的なファイルI/Oがサポートされており、将来の作業には、ネットワーク、永続ストレージ、および強化されたコンテナ化の追加が含まれます。

続きを読む

Starina OSにおけるRISC-Vハイパーバイザーの構築:Hello WorldからLinuxカーネル起動まで

2025-05-17
Starina OSにおけるRISC-Vハイパーバイザーの構築:Hello WorldからLinuxカーネル起動まで

この記事では、Starinaオペレーティングシステム内で軽量なRISC-V H拡張ベースのハイパーバイザーを構築した著者の経験について説明しています。QEMUによるRISC-V H拡張のエミュレーションを活用し、ゲストモードへの移行、システムコールの処理、簡単なHello Worldプログラムの実行、そして最終的にLinuxカーネルの起動を段階的に実装しました。ページテーブル管理、デバイスツリーの設定、タイマーサポート、MMIOなどの課題を克服し、詳細な手順と解決策を示しています。そして、Starinaハイパーバイザー上でLinuxが正常に起動したことを結論づけています。

続きを読む
開発