問題タブ [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.
c - ext2 ファイル システム上のファイルを開く方法は?
ext2 ファイル システムのファイルを開くにはどうすればよいですか。たとえば、ファイルを開きたいとしましょう。/a/b/c.txt
私はここで関数を見ています: http://www.nongnu.org/ext2-doc/ext2.html
c++ - vdi、ext2 のスーパーブロックへのアクセス
vdi ファイルから ext2 ファイルシステムを開いて読み込む際に、スーパーブロックにアクセスしようとしています。ext2.h ファイルに存在する構造体 ext2_super_block を使用したい ( http://lxr.free-electrons.com/source/fs/ext2/ext2.hの 415 行を参照)。やりたいのです#include <ext2.h>
が、現在のUNIX OSはext3/ext4であるため、ヘッダーファイルはシステムになく、ext2.hに含める必要のあるファイルもありません。
このファイルを含めて構造体を取得するにはどうすればよいですか? 自分でそれ (読み込み時にスーパーブロックを保持する構造体) を構築する必要がありますか? 自分で作成した場合、読み込みはどのように異なりますか?
これを完了するためのシステムコールについて、これまでに持っているものは次のとおりです(明らかに現時点では機能しません)。
filesystems - Linux 4.4.0 で ext4 を ext2 としてマウントする [RHEL]
私が実行したコマンド
mkfs .ext4 -F /dev/xxx0
mount -o dax /dev/xxx0 /mnt/ext4-xxx0
マウント出力
dmesg 出力
ext2 は ext2 ではサポートされていないため、その結果、fallocate が失敗します。
提案/解決策をいただければ幸いです。
c - Ext2 - ファイルの作成方法
ext2 ファイル システムでファイルを作成するプロセスはどのようなものですか?
touch のように、パスを取得して特定のファイルを作成する単純なシステムコールを作成しようとしています。
たとえば、コードは次のとおりです。
/tmp に「file」というファイルを作成する必要があります。
では、syscall 自体はどのように機能するのでしょうか?
これまでの私の作業 (ここでは読みやすさのためにエラーチェックを省略しました):
これは機能しているように見えます (inode が割り当てられていることをログで確認できます) がls
、ディレクトリを呼び出すと、そこにファイルが表示されません。
私の考えは、新しい i ノードをstruct dentry
ディレクトリに追加することだったので、次のコードを追加しました。
ただし、これはまだ機能していないようです (を使用してファイルを表示できませんls
)。
このシステムコールを正しく実装する方法、何が欠けていますか?
編集: R.. についての回答 - この syscall の目的は、ext2 をいじってその設計について学ぶことです。そのため、パスは常に有効であり、ファイルシステムは実際には ext2 などであると想定できます。
directory - ブロックに収まらないExt2の残りのディレクトリエントリを見つけます
私は独自のオペレーティング システムを開発しており、現在は Ext2 ファイル システム ドライバーに取り組んでいます。テストには GRUB ファイルを使用しています。ディレクトリのリストに行き詰まっています。ディレクトリのコンテンツの最初のブロックを読んでいて、すべて問題ありませんが、多くはありません! ブロックの最後はゼロで埋められます。ただし、ディスク イメージをマウントして Ubuntu で一覧表示すると、余分なファイルがあることがわかります。
これらのディレクトリ エントリを取得するにはどうすればよいですか? 助言がありますか?
c - ファイルシステムはどのようにファイルのデータを見つけますか?
次のような特定のファイルの inode を削除しようとしました。
問題は、ファイル ブラウザ アプリケーションからファイルを開くことができることです。
だから私の質問は、ここで何が起こっているのですか? ファイル ブラウザ アプリケーションはどのようにしてファイルのデータ ブロックを見つけて開くことができますか?
このコードをubuntu 14.0.4で実行しました
c - C、サイズ 15 の unsigned int の配列用のスペースに長さ <=60 の文字列を格納する
この質問は私を完全に混乱させました-
私は配列を持っています(固定サイズ):
私は文字列(長さ<= 60)を持っています:
文字列の文字を配列のスペースに格納するにはどうすればよいですか? おそらくmemsetを使用することを考えていましたが、それがうまくいくかどうかわかりませんか?
参考:「ファイルのデータがデータへのポインターに割り当てられたスペースに収まる場合、このスペースを便利に使用できます。たとえば、ext2 はシンボリックリンクのデータ (通常はファイル名) をこの方法で保存します。 60 バイト以上 (「高速シンボリック リンク」)」。
から
filesystems - ext2/ext3/ext4 ファイルシステムの公式仕様はありますか?
Bluetooth については、Bluetooth Special Interest Group によって管理されている IEEE 802.15.1 標準があります。Wifi については、IEEE 802.11 規格と Wifi Alliance があります。PCIe 上の NVMe SSD については、公式ドキュメントを規制および公開する nvmexpress があります。
そのため、通常は規制機関があり、複数の異なる実装間の相互運用性を可能にするために、物事を決定し、あるべき姿を標準化します。
しかし、ext2/ext3/ext4 ファイルシステムについては、Linux カーネル コード以外に公式の標準は見つかりませんでした。
これらのファイルシステムは、基本的にカーネル コミュニティによって指示されていますか? また、他のオペレーティング システムとの互換性を維持するために、変更しないことを約束しますか?
または、どこかに公式の仕様がありますか?そして誰がそれを提供しますか?
ありがとうございました