Можно ли запустить ls
устройство без предварительной установки?
Что-то вроде этого:
# ls /dev/sda1
ls
.
Можно ли запустить ls
устройство без предварительной установки?
Что-то вроде этого:
# ls /dev/sda1
ls
.
Ответы:
Вы можете использовать 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
Не могу сказать, что считаю это рекомендуемой практикой, но она будет делать то, что вы просите.
Весь смысл монтирования файловой системы заключается в доступе к ее файлам. Так что нет, в общем, вы не можете получить доступ к файлам файловой системы без ее монтирования.
Есть несколько утилит , которые получают доступ к файлу напрямую , без монтажа, таких как debugfs для ext2 / ext3 / ext4 файловых системы и Исспользуя для файловых систем FAT.
Для ext2 / ext3 / ext4 вместо того, чтобы вызывать опасную и сложную в использовании программу debugfs
, вы можете указать ее последнее местоположение монтирования:
tune2fs -l /dev/sda1 | grep 'Last mounted'
Однако это полезно только в том случае, если последнее место монтирования было записано.
Большинство типов файловых систем поддерживают назначение меток файловых систем (например tune2fs -L foo
). Так что дайте всем вашим файловым системам уникальный ярлык. Затем смонтируйте файловую систему по метке:
mount /dev/disks/by-label/foo /media/foo
или
mount LABEL=foo /media/foo
Простой ответ: вы не можете. ls
использует стандартные подпрограммы libc, которые преобразуются в системные вызовы, которые обслуживаются драйвером файловой системы, поэтому невозможно использовать ls
(или что-либо подобное с использованием этих системных вызовов) без монтирования файловой системы.
Вы могли бы написать утилиту, которая обошла бы это, имея собственную копию некоторых частей драйвера файловой системы (такая вещь существует, например, для чтения файловых систем Ext2 из Windows), но это довольно непрактично.
Если ваша проблема заключается только в идентификации разделов, вам, вероятно, следует начать использовать GPT, в котором есть место для имен разделов (72 байта на раздел). Некоторые базовые решения (например, Linux MD или LVM) также допускают именование.
Как ранее описано, debugfs работает хорошо.
debugfs -R "ls -l" /dev/sda1
Для NTFS есть ntfsls из ntfs-3g.
ntfsls /dev/sda2
Для FAT есть mdir, из mtools.
mdir -i /dev/sdc1
Для exFAT я не уверен, хотя. Кажется, exfat-utils не содержит никаких инструментов, подобных описанным выше. Хотя есть dumpexfat, но я не думаю, что он предоставит запрашиваемую информацию.
Чтобы узнать больше информации о подключенных дисках, есть lsblk.
lsblk
Лично я предпочитаю это, и установил псевдоним для этого:
alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"