Com kernels recentes (≥ 2.6.37), veja A resposta de Petr Uzel . Com kernels mais antigos, esse limite de comprimento é inerente.
Strace mostra que losetup -a
obtém o nome por meio do LOOP_GET_STATUS
ioctl, que chama loop_get_status_old
, que obtém seus dados de um struct loop_info
. O campo de nome nessa estrutura de dados do kernel é limitado a LO_NAME_SIZE
= 64 bytes. (Há também um loop_get_status64
e struct loop_info64
, mas eles têm a mesma limitação.) Então essa limitação é intrínseca, você não pode fazer nada melhor.
De qualquer forma, essa estrutura de dados mostra o nome original do dispositivo ou arquivo subjacente, mas você pode renomeá-lo (ou mesmo removê-lo), e isso não será refletido na saída de losetup
.
A saída de losetup
mostra o identificador do sistema de arquivos ( st_dev
) e inode ( st_ino
) do arquivo, por exemplo, [fc03]:33030504
. Você pode encontrar o dispositivo de bloco para o sistema de arquivos, pesquisando em /proc/partitions
(linha começando com 252 3
). Em seguida, procure o ponto de montagem desse dispositivo de bloco em /proc/mounts
. Em seguida, execute find /mount/point -inum 33030504
para localizar o arquivo. Sim, é complicado, e não, não há maneira mais rápida (bem, há debugfs
para alguns tipos de sistema de arquivos ).