Чтобы сделать режим консоли постоянным, добавьте строку в /etc/rc. conf:
allscreens_flags="MODE_332"
(замените желаемый номер режима на 332, конечно.)
Самый простой способ сделать это — выполнить команду filefrag -v /path/to/file
, которую можно запустить от имени обычного пользователя (, в отличие от debugfs
, для которой требуется доступ на чтение к блочному устройству, как правило, только для root ). Это даст вам номера физических блоков ext4 (, обычно 4096 байтов )относительно начала раздела для соответствующего логического смещения в файле. Вы также можете использовать filefrag -v -k
для единиц KiB или filefrag -v -b1
для 1 -байтовых «блоков».
$ filefrag -vb1 google-chrome-stable_current_x86_64.rpm
Filesystem type is: ef53
File size of google-chrome-stable_current_x86_64.rpm is 57333190
(57335808 blocks of 1 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 8388607: 5872025600..5880414207: 8388608:
1: 8388608..16777215: 5897191424..5905580031: 8388608: 5880414208:
2: 16777216..25165823: 6241124352..6249512959: 8388608: 5905580032:
3: 25165824..33554431: 8019509248..8027897855: 8388608: 6249512960:
4: 33554432..41943039: 8128561152..8136949759: 8388608: 8027897856:
5: 41943040..50331647: 8220835840..8229224447: 8388608: 8136949760:
6: 50331648..57335807: 28538081280..28545085439: 7004160: 8229224448: last,eof
Это использует ioctl(fd, FS_IOC_FIEMAP,...)
для запроса сопоставления экстентов для файлового дескриптора, который, в свою очередь, использует метод ->fiemap()
наиболее распространенных файловых систем. Гораздо более старые ядра использовали ioctl(fd, FS_IOC_FIBMAP,...)
, но он может отображать только один блок за раз и может потребовать миллионы вызовов для больших файлов сегодня.