問題タブ [ext2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
56 参照

linux - データブロックなしで ext2/3 FS を作成する方法

ニーズ: データブロックのない ext2/3 ファイル システムを作成し、残りの部分だけを保持し、ファイルまたはディレクトリの属性を保存し、それらのデータを破棄します。書き込むときは返すだけ、読むときはすべてゼロを返すだけです。http://e2fsprogs.sourceforge.net/から e2fsprogs-1.42.11.tar.gz をダウンロードしましたが、問題が発生しました。

カーネル 3.13.0-32-generic を使用する Ubuntu 14.04

  1. e2fsprogs-1.42.11 で ./configure を実行した後、misc フォルダで make を実行しましたが、「make: *** No rule to make target ../lib/ext2fs/ext2_err.h', needed bymke2fs.o'. Stop」で中断されました。助けて!!!</p>

  2. まず、データブロックを破棄するように変更できるパーティションをフォーマットするコードを見つけたいと思います。ファイル "mk2fs.c" は私を混乱させました。

どんな助けでも大歓迎です、そしてあなたたちよりも前もって!

0 投票する
0 に答える
23 参照

filesystems - ext ファイルシステムが、ファイルが使用するすべてのブロックを個別に追跡するのはなぜですか?

http://www.nongnu.org/ext2-doc/ext2.html#I-BLOCKから、ファイルがブロック11、12、13、14、15を使用している場合、値は11、12、13、14であることを理解しています、および 15 は、inode の最初の 5 (12 個の) 「直接ブロック」エントリに格納されます。

ファイルのブロック番号に必要なストレージが大幅に縮小されるため、代わりに一連の「範囲」を使用しないのはなぜですか。

上記のばかげた例では、5 要素から 2 要素に縮小されます。

1000 ブロックのファイルを 2 回実行すると、1000 要素から 4 要素に縮小されます。つまり、間接ブロックの使用を完全に避けることができます。

この単純な最適化が行われなかった理由は何ですか?

0 投票する
0 に答える
46 参照

c - 画像ファイルからディレクトリの内容を一覧表示します: skip 。および..およびマークディレクトリ

コマンド ライン引数として指定されたディスク イメージを読み取り、イメージ内のすべてのファイルとディレクトリのパスを出力する C プログラム。エントリがディレクトリの場合は、パスの末尾にスラッシュを出力します....This is myプログラムで質問し、以下のようにコードを実行しました....

出力を取得していますが、出力では.... これらのドットを削除し、/ファイルではなくディレクトリに追加する必要があります。

0 投票する
1 に答える
3543 参照

c - ext2 ディレクトリ エントリ リスト: 終わりはどこですか?

ext2 ディレクトリ エントリは、リンクされたリストとして永続化されます。1からの引用:

ディレクトリ ファイルは、ディレクトリ エントリ構造のリンク リストです。各構造体には、エントリの名前、このエントリのデータに関連付けられた inode、および次のエントリまでのディレクトリ ファイル内の距離が含まれます。

しかし、iノードにターミネータがあるとは言いません。また、ディレクトリ i ノードにエントリがいくつあるかを示すフィールドはありません。

問題は、i ノードのデータ構造を読み取ったときに、リストの最後に到達したことをどのようにして知ることができるかということです。

例: 空のルート ディレクトリ "/" を想定します。したがって、コマンドは次のlsように出力する必要があります。

を実装する場合ls、ディスクからルート inode 構造体を読み込んでから、手順に従ってi_blocksすべてのディレクトリ エントリを取得しようとします。ディスクでは、エントリ リストは実際には次のように保存されます。

3 番目の「lost+found」エントリのすぐ隣に別のエントリがあります。

明らかに、プログラムは「lost+found」エントリで停止する必要があります。次のエントリ、つまり「.」だからです。別のディレクトリに属しています。しかし、どうすればプログラムにそれを知らせることができるでしょうか? ディレクトリ エントリ リストの最後だといつわかるのでしょうか。

ありがとう!

編集:

inode リストには少し矛盾があります。特に、rec_lenlost+found エントリの が 980 ではなく 1000 になっています。修正しました。

0 投票する
0 に答える
2155 参照

c - Ext2 ファイル システムに独自の Read、Write、Open、Close 関数を実装する

それでは基本的に、Ext2 ファイル システム イメージを操作する my_open、my_read、my_write、my_close という名前の関数を作成する必要があります。これはすべて C (私が知っている唯一の言語) で行う必要があります。ファイル システム内のルート ディレクトリに由来するすべてのディレクトリとファイルを出力するコードをいくつか書きましたが、このコードを使用してファイル システムを操作できるようにしたいと考えています。これが私のコードです:


構造を含むヘッダーファイルは次のとおりです。

どんな助けでも大歓迎です!前もって感謝します!

0 投票する
0 に答える
315 参照

filesystems - EXT2 ファイルシステムの変更

私が取り組んでいるプロジェクトでは、EXT2 ファイルシステムを変更できる必要があります。私は大規模な調査を行いましたが、これは一般的に必要なタスクではないため、オンラインで入手できる有用な情報はほとんどないようです. 残念ながら、機密保持のため、私が取り組んでいることの詳細についてはお話しできませんが、状況をいくつかの重要な問題に分類することができます。Linux カーネル/OS 開発の経験はほとんどありません。

これは取り組むのが簡単な問題ではないことを認識しています。これはプロジェクトのほんの一部であるため、間違いなく大きな課題になるでしょう。これらの問題 (またはその他の警告/アドバイス) に関する支援は大歓迎です。

これが不可能であることが判明した場合、プロジェクト全体を再考する必要があるため、この時点から開始する必要があります.

問題 1: ソース コードから実装まで

これは実際には最初の問題ではありませんが、正しい軌道に乗っていることを確認するために最初に答える必要があります! 私は初心者なので、ばかげた質問かもしれません。

私が知る限り、すべての EXT2 ソース コードは linux/fs/ext2/ のカーネル ソース コード内に含まれています。このソース コードを変更して必要な変更を行い、カーネルを正常に再構築した場合、この新しく変更されたファイル システムをドライブまたはパーティションで使用するには何が必要でしょうか? 新しいカーネルを使用して、ドライブを EXT2 として再フォーマットすることはできますか? ソース コードが変更されているため、変更されたファイルシステムが適用されますか? それとも私はこれを単純化しすぎていますか?

問題 2: メタデータの拡張

私のプロジェクトの重要な部分では、ドライブ上の各ファイルに含まれるメタデータを拡張する必要があります。この場合、メタデータとは、所有者、作成されたタイムスタンプ、変更されたタイムスタンプなどの詳細を指します。私ができるようにしたいのは、追加のメタデータ フィールドを追加して更新できるようにすることです。iノードを変更するのが最善の方法だと思いますが、ソースコードを長い間調べた後、開始するのが明らかな場所がどこにもありません。

問題 3: 結果?

変更されたファイルシステムでこのフィールドを追加して使用することに成功したとします。その後、EXT2 ファイルシステムが変更されていない別のドライブにファイルが移動された場合、この追加のメタデータ フィールドに含まれるデータは失われますか? 明らかに、ファイルは常に問題なく異なるファイルシステム間で移動されますが、これをどのように処理するかはわかりません。他のシステムでこのメタデータにアクセスできる必要はないことに注意してください。データが失われないことだけが必要です。

ボーナス質問

これまで、プロトタイプには CentOS を使用してきました。これが良いか悪いか、問題ではないかについて何かアドバイスがあれば、よろしくお願いします。

問題を明確にするための編集/更新

前に言ったように、守秘義務により、エンドゲームが何であるかを正確に話すことはできません. これは非常に基本的な問題であり、うまくいけば、私ができるようにする必要がある種類のことをより多く説明するはずです.

従来のファイルシステムは、作成、最終アクセス、最終変更の 3 つの主要なタイムスタンプを追跡します。「変更履歴」と呼ばれる新しいタイプのメタデータを追加したいとしましょう。これには、すべての変更のタイムスタンプのリストが保存されます。これを行うと考えることができる唯一の方法は、データブロックを指す別の属性を追加することです。そのファイル/ i ノードに書き込みが行われるたびにタイムスタンプが追加されます。

繰り返しますが、実際の問題ははるかに複雑ですが、これにより、私ができるようにする必要がある種類のことについて、より良いアイデアが得られることを願っています.

0 投票する
1 に答える
156 参照

linux - Linux ファイル システム

Linux ファイル システム (ext2/3/4) のすべてのメタデータを取得する方法を探しています。タスクは、Linux パーティションに存在するすべてのファイル (削除された/または削除されていない) を見つけることです。ファイルのメタデータには、作成時間、変更時間などを含める必要があります (基本的に、コマンド istat から取得したもの)

私が直面している問題は、削除されたファイルに関するものです。現在ファイル システムに存在する削除済みファイルの inode を取得する方法が見つかりません。上記のファイル システムでこの問題を解決する方法を教えてください。

前もって感謝します。