lsをインストールせずにデバイスに

lsをインストールせずにデバイスに

lsまずインストールせずにデバイスで実行できますか?
このような:

# ls /dev/sda1

答え1

debugfs次のプログラムが利用可能ですe2fsprogs。歴史的な名前にもかかわらず、ext2/3/4ファイルシステムで実行されます。使い方はとても簡単です。

# debugfs -R "ls -l" /dev/sda6
  2   40755 (2)   1001   1001    4096 17-Sep-2013 04:03 .
  2   40755 (2)   1001   1001    4096 17-Sep-2013 04:03 ..
 16  100644 (1)   1001   1001    9085 17-Sep-2013 04:03 avserver.conf
 17  100644 (1)   1001   1001    2177 17-Sep-2013 04:03 bash.bashrc
 26  100644 (1)   1001   1001     722 17-Sep-2013 04:03 crontab

「ls -l」は、debugfs基本的に同じ操作を実行する特定のコマンドですls -l。ここでは任意のシェルコマンドを使用できません。デフォルトでは、debugfsはドライブを読み取り専用モードで開くため、比較的安全です。たとえば、ext2/3/4以外のパーティションでこれを試みると、診断結果のみが提供されます。

# debugfs -R "ls -l" /dev/sda2
/dev/sda2: Bad magic number in super-block while opening filesystem
ls: Filesystem not open

このアプローチが推奨する価値があるとは言えませんが、お客様の要件を満たしています。

答え2

ファイルシステムをマウントする目的は、そのファイルにアクセスすることです。したがって、通常、ファイルシステムをマウントしないと、ファイルシステムのファイルにアクセスできなくなります。

インストールせずにファイルに直接アクセスできるユーティリティがあります。デバッグファイルext2/ext3/ext4 ファイルシステムとツールボックスFATファイルシステムの場合。

debugfsext2/ext3/ext4 の場合、危険で使いにくいプログラムを呼び出す代わりに、最後のマウント位置を一覧表示できます。

tune2fs -l /dev/sda1 | grep 'Last mounted'

ただし、これは最後のインストール場所が記録された場合にのみ役立ちます。

ほとんどのファイルシステムタイプはファイルシステムラベルの提供をサポートしています(例tune2fs -L foo:)。したがって、すべてのファイルシステムに一意のラベルを付けてください。次に、ラベルを介してファイルシステムをマウントします。

mount /dev/disks/by-label/foo /media/foo

または

mount LABEL=foo /media/foo

答え3

述べたように、debugfsはうまく動作します。

debugfs -R "ls -l" /dev/sda1

NTFSの場合、ntfs-3gのntfslsがあります。

ntfsls /dev/sda2

FATの場合、mtoolsのmdirがあります。

mdir -i /dev/sdc1

exFATの場合はわかりません。 exfat-utilsには上記のツールと同様の内容が含まれていないようです。 dumpexfatがありますが、必要な情報を提供するとは思いません。

ドライブの接続の詳細については、lsblkを使用してください。

lsblk

私は個人的にこれを好み、エイリアスを設定します。

alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"

答え4

簡単な答え:できません。ファイルシステムドライバが提供するシステムコールに変換される標準のlibcルーチンを使用するため、ファイルlsシステム(またはこれらのシステムコールを使用するすべて)をマウントしないと使用できません。ls

ファイルシステムドライバの特定の部分の独自のコピーを保持して(たとえば、WindowsがExt2ファイルシステムを読み取る場合など)、この問題を回避するユーティリティを作成できますが、これは非常に実用的ではありません。

問題がパーティションを識別するだけであれば、おそらく次のものを使い始める必要があります。GPTパーティションの名前空間(パーティションごとに72バイト)があります。一部のオーバーレイソリューション(Linux MDやLVMなど)でも命名が可能です。

関連情報