O MBR do disco contém essas informações e, portanto, quando chamo um comando como fdisk, um código de nível de kernel eventualmente é executado e o lê de uma parte específica do MBR? Se sim, qual parte dele? Qual compensação?
Se não estiver no MBR, como esses tipos de comandos podem encontrá-lo? Eles não podem lê-lo desde o início de uma partição, considerando que precisam calcular o endereço inicial dessa partição e precisam do tamanho do setor para fazer isso, não é?
Como os comandos são fdisk
implementados para encontrar essas informações? De onde eles lêem?
O tamanho do setor de um dispositivo não é armazenado no MBR.
Comandos de espaço do usuário, como
fdisk
usarBLKBSZGET
eBLKSSZGET
ioctl
s para recuperar os tamanhos de setor dos discos. Essesioctl
s são manipulados por drivers no kernel, que recuperam as informações relevantes dos próprios drives.(Não há muita documentação sobre os
ioctl
s relevantes; você precisa verificar o código-fonte do kernel .)Você pode ver as informações relevantes usando outras ferramentas que consultam diretamente as unidades, por exemplo
hdparm
. Em um pequeno SSD,hdparm -I
me dizEm um disco giratório grande com setores de 4K, recebo
Existem algumas perguntas lá, tentei rastrear a resposta para "Onde o fdisk encontra o tamanho do setor de um disco?" O melhor que encontrei é que ele obtém as informações do
ioctl
.ioctl
informações na página de manual da Wikipédia e Linux .link do código fonte do fdisk