私が取り組んでいるプロジェクトでは、EXT2 ファイルシステムを変更できる必要があります。私は大規模な調査を行いましたが、これは一般的に必要なタスクではないため、オンラインで入手できる有用な情報はほとんどないようです. 残念ながら、機密保持のため、私が取り組んでいることの詳細についてはお話しできませんが、状況をいくつかの重要な問題に分類することができます。Linux カーネル/OS 開発の経験はほとんどありません。
これは取り組むのが簡単な問題ではないことを認識しています。これはプロジェクトのほんの一部であるため、間違いなく大きな課題になるでしょう。これらの問題 (またはその他の警告/アドバイス) に関する支援は大歓迎です。
これが不可能であることが判明した場合、プロジェクト全体を再考する必要があるため、この時点から開始する必要があります.
問題 1: ソース コードから実装まで
これは実際には最初の問題ではありませんが、正しい軌道に乗っていることを確認するために最初に答える必要があります! 私は初心者なので、ばかげた質問かもしれません。
私が知る限り、すべての EXT2 ソース コードは linux/fs/ext2/ のカーネル ソース コード内に含まれています。このソース コードを変更して必要な変更を行い、カーネルを正常に再構築した場合、この新しく変更されたファイル システムをドライブまたはパーティションで使用するには何が必要でしょうか? 新しいカーネルを使用して、ドライブを EXT2 として再フォーマットすることはできますか? ソース コードが変更されているため、変更されたファイルシステムが適用されますか? それとも私はこれを単純化しすぎていますか?
問題 2: メタデータの拡張
私のプロジェクトの重要な部分では、ドライブ上の各ファイルに含まれるメタデータを拡張する必要があります。この場合、メタデータとは、所有者、作成されたタイムスタンプ、変更されたタイムスタンプなどの詳細を指します。私ができるようにしたいのは、追加のメタデータ フィールドを追加して更新できるようにすることです。iノードを変更するのが最善の方法だと思いますが、ソースコードを長い間調べた後、開始するのが明らかな場所がどこにもありません。
問題 3: 結果?
変更されたファイルシステムでこのフィールドを追加して使用することに成功したとします。その後、EXT2 ファイルシステムが変更されていない別のドライブにファイルが移動された場合、この追加のメタデータ フィールドに含まれるデータは失われますか? 明らかに、ファイルは常に問題なく異なるファイルシステム間で移動されますが、これをどのように処理するかはわかりません。他のシステムでこのメタデータにアクセスできる必要はないことに注意してください。データが失われないことだけが必要です。
ボーナス質問
これまで、プロトタイプには CentOS を使用してきました。これが良いか悪いか、問題ではないかについて何かアドバイスがあれば、よろしくお願いします。
問題を明確にするための編集/更新
前に言ったように、守秘義務により、エンドゲームが何であるかを正確に話すことはできません. これは非常に基本的な問題であり、うまくいけば、私ができるようにする必要がある種類のことをより多く説明するはずです.
従来のファイルシステムは、作成、最終アクセス、最終変更の 3 つの主要なタイムスタンプを追跡します。「変更履歴」と呼ばれる新しいタイプのメタデータを追加したいとしましょう。これには、すべての変更のタイムスタンプのリストが保存されます。これを行うと考えることができる唯一の方法は、データブロックを指す別の属性を追加することです。そのファイル/ i ノードに書き込みが行われるたびにタイムスタンプが追加されます。
繰り返しますが、実際の問題ははるかに複雑ですが、これにより、私ができるようにする必要がある種類のことについて、より良いアイデアが得られることを願っています.