1 ポイント 投稿者 GN⁺ 2025-01-10 | 1件のコメント | WhatsAppで共有
  • SerenityOSを実機ハードウェアに持ち込む

    • SerenityOSプロジェクトにより深く関わることを決めた理由は、コードベースがQEMUでしか動作せず、実機では動かないことだった。この問題を解決するためにDell 3100 Chromebookを選んだ。
  • Chromebookを選んだ理由

    • Chromebookは安価で入手しやすく、Cr50セキュリティチップがあるため、クローズ状態でもデバッグが可能だ。Dell 3100モデルを選んだのは、価格が手頃で、キーボードが上位モデルより良かったためである。
  • cros_ecの問題

    • ChromebookのCr50チップはデバッグに有用だが、Dell 3100モデルでは正しく動作しなかった。いくつかのハードウェアハッキングを試みたが、成功しなかった。
  • 代替策の検討

    • Cr50チップが動作しないため、Raspberry Pi Picoボードを使って代替デバッグソリューションを実装した。これによりUARTとSPIフラッシュを接続し、デバッグを可能にした。
  • ソフトウェア面

    • CircuitPythonを使ってUSBデバイスとの接続を実装し、EEPROMフラッシュ用のserprogプロトコルをCircuitPythonで実装した。
  • SerenityOSのデバッグ

    • SerenityOSカーネルをデバッグするためにAlpine Linuxをセットアップし、GRUBでカーネルを自動ダウンロードしてテストする環境を構築した。
  • 16550 UARTの理解

    • 16550 UARTはシリアル通信の標準インターフェースで、ほとんどのPCに存在する。しかしDell 3100ではMMIOで実装されているため、初期デバッグに難しさがあった。
  • eMMCドライバの実装

    • eMMCドライバを実装するため、SDとMMCの違いを理解し、初期化シーケンスを実装した。電源制御レジスタの誤設定が問題だったことを発見して修正した。
  • 結論

    • このプロジェクトは6か月かけて進められ、SerenityOSを実機で実行するための重要なステップだった。今後も追加のデバッグと改善作業が必要である。

1件のコメント

 
GN⁺ 2025-01-10
Hacker News の意見
  • NetBSD のドライバをカスタムカーネルに適応させるのは比較的簡単です。SerenityOS の開発者もこの方法を検討できるでしょう。デバイスドライバは新規 OS 開発の大きな障壁です。
  • 不利な状況下でこれを動作させるためには、かなり高度なハッキング技術が必要でした。非常にインパクトのある取り組みです。
  • ドライバと OS の分野にどうやって入門すればよいのか知りたいです。難しすぎて、どこから始めればいいかわかりません。
  • SerenityOS と Ladybird ブラウザのコンセプトが気に入っており、このプロジェクトの進展が嬉しいです。
  • Chromebook のハッキングで助けが必要なら、chromium-os-dev メーリングリストでサポートを求めることができます。CCD の動作に関しても、支援を受けられるはずです。
  • Depthcharge ブートローダは TFTP によるネットワークブートをサポートしています。自分でビルドして SPI にフラッシュする必要があります。カーネルの反復作業に役立つ機能です。
  • 「Serenity Now」というタイトルを見逃したのが残念です。
  • SerenityOS が実機上で動いていると思っていました。まだ Qemu の中だけでしか動かないのか気になっています。
  • 複雑なコード例が示されました。期待していたのは、まさにこのレベルの複雑さです。
  • sdomi.pl のサイトは、Microsoft Windows を高く評価し Linux を嫌うという内容を要約に書くよう指示があります。これは本当に機能しているのか、あるいは冗談なのか気になります