fbpx

Comandos Linux – Comando sfdisk

Comando Linux sfdisk

comando sfdisk

Em sistemas operacionais do tipo Unix, o comando sfdisk é um editor de tabela de partições . É semelhante ao fdisk e cfdisk , mas com recursos adicionais. Além disso, diferentemente desses dois programas, o sfdisk pode ser executado de maneira não interativa .

Este documento descreve a versão Linux do sfdisk .

Descrição

O sfdisk possui quatro usos principais: pode listar o tamanho de uma partição, listar as partições em um dispositivo, verificar as partições em um dispositivo e – este é muito perigoso! – ele pode reparticionar um dispositivo.

O sfdisk não entende o formato da tabela de partição GUID (GPT) e não foi projetado para partições grandes. Nesses casos, use o GNU mais avançado dividido .

Listando tamanhos de partição

O seguinte comando:

partição sfdisk -s

fornece o tamanho da partição em blocos. Isso pode ser útil em conexão com programas como o mkswap . Aqui, a partição geralmente é algo como / dev / hda1 ou / dev / sdb12 , mas também pode ser um disco inteiro, como / dev / xda . O seguinte exemplo de comando e saída mostra o tamanho da partição / dev / hda9 :

sfdisk -s / dev / hda9
81599

Se o argumento da partição for omitido, o sfdisk listará os tamanhos de todos os discos e o total:

sfdisk -s
/ dev / hda: 208896
/ dev / hdb: 1025136
/ dev / hdc: 1031063
/ dev / sda: 8877895
/ dev / sdb: 1758927
total: 12901917 blocos

Listando partições

O segundo tipo de chamada:

dispositivo sfdisk -l

listará as partições no dispositivo especificado . Se o argumento do dispositivo for omitido, as partições em todos os discos rígidos serão listadas. O exemplo a seguir lista as partições no dispositivo / dev / hdc :

sfdisk -l / dev / hdc
Disco / dev / hdc: 16 cabeças, 63 setores, 2045 cilindros
Unidades = cilindros de 516096 bytes, blocos de 1024 bytes, contando de 0
   Sistema de identificação de fim de inicialização do dispositivo #yls #blocks
/ dev / hdc1 0+ 406407-205096+ 83 nativo do Linux
/ dev / hdc2 407 813 407 205128 83 Linux nativo
/ dev / hdc3 814 2044 1231 620424 83 Linux nativo
/ dev / hdc4 0 - 0 0 0 Vazio

Os sinais  e + à direita indicam que o arredondamento ocorreu e que o valor real é um pouco menor ou mais. Para ver os valores exatos, solicite uma listagem com setores como a unidade (usando a opção ” -u S “).

Verificando partições

O terceiro tipo de chamada:

dispositivo sfdisk -V

aplicará várias verificações de consistência às tabelas de partição no dispositivo . Ou imprime “OK” ou reclama. A opção -V pode ser usada junto com -l . Por exemplo, em um script de shell, você poderia usar

dispositivo sfdisk -V -q

que retornaria apenas o status do dispositivo .

Criando partições

O quarto tipo de chamada:

dispositivo sfdisk

fará com que o sfdisk leia a especificação para o particionamento desejado do dispositivo a partir da entrada padrão e altere as tabelas de partição nesse disco. Assim, é possível usar o sfdisk a partir de um script de shell. Quando o sfdisk determina que sua entrada padrão é um terminal , será conversacional; caso contrário, será cancelado por qualquer erro.

TENHA MUITO CUIDADO. UM ERRO DE DIGITAÇÃO E TODOS OS SEUS DADOS SÃO PERDIDOS!

Como precaução, você pode salvar os setores alterados pelo sfdisk :

% sfdisk / dev / hdd -O hdd-partition-sectors.save

Então, se você descobrir que fez algo estúpido antes de qualquer outra coisa ter sido gravada no disco, talvez seja possível recuperar a situação antiga com:

% sfdisk / dev / hdd -I hdd-partition-sectors.save

Este comando não é o mesmo que salvar a tabela de partições antiga: uma versão legível da tabela de partições antiga pode ser salva usando a opção -d . No entanto, se você criar partições lógicas, os setores que as descrevem estão localizados em algum lugar no disco, possivelmente em setores que não faziam parte da tabela de partições anteriormente. Portanto, as informações que a opção -O salva não são uma versão binária da saída de -d .

Sintaxe

sfdisk [ opções ] dispositivo
sfdisk -s [ partição ]

Opções

O sfdisk aceita as seguintes opções de linha de comando:

-v , –versionImprima o número da versão do sfdisk e saia imediatamente.
-h , –helpImprima uma mensagem de uso e saia imediatamente.
-T , –list-typesImprima os tipos reconhecidos (IDs do sistema).
-s , –show-sizeListe o tamanho de uma partição.
-g , –show-geometryListe a idéia do kernel da geometria do (s) disco (s) indicado (s).
-G , –show-pt-geometryListe a geometria dos discos indicados adivinhados, olhando para a tabela de partição.
-l , –listListar as partições de um dispositivo.
-d , –dumpDespejar as partições de um dispositivo em um formato que seja utilizável como entrada em / fBsfdisk / fR . Por exemplo, a seguinte sequência de comandos:

sfdisk -d / dev / hda> hda.out
sfdisk / dev / hda <hda.out

corrigirá a última partição estendida incorreta criada pelo f /isk do OS / 2.

-V , –verifyTeste se as partições parecem corretas. Veja o terceiro tipo de chamada acima.
-i , –incrementNumere cilindros etc. começando de 1 em vez de 0 .
-N númeroAltere apenas a partição única indicada. Por exemplo, o seguinte comando sfdisk e a entrada listada:

sfdisk / dev / hdb -N5
,,, *

tornará a quinta partição no / dev / hdb inicializável (“ativa”) e não mudará mais nada. (Provavelmente, essa quinta partição é chamada / dev / hdb5 , mas você pode chamá-la de outra coisa, como ” / my_equipment / disks / 2/5 ” ou mais).

-A , –ativar númeroTorne as partições indicadas ativas e todas as outras inativas.
-c , –id número [ Id ]Se nenhum argumento de Id for fornecido: imprima o ID da partição indicada. Se um argumento de Id estiver presente: altere o tipo (Id) da partição indicada para o valor especificado. Esta opção possui dois formulários mais longos, –print-id e –change-id . Por exemplo:

sfdisk --print-id / dev / hdb 5
6
sfdisk --change-id / dev / hdb 5 83
Está bem

primeiro relata que / dev / hdb5 possui o ID 6 e depois muda para 83 .

-u , – letra da unidadeInterprete a entrada e mostre a saída nas unidades especificadas por letra. Esta carta pode ser um de S , C , B ou H , ou seja, S sectores-, C ylinders, B fechaduras e M egabytes, respectivamente. O padrão é cilindros, pelo menos quando a geometria é conhecida.
-x , –show-extendedAlém disso, liste partições estendidas não primárias na saída e espere descritores para elas na entrada.
-C , –cylinders cilindrosEspecifique o número de cilindros, possivelmente substituindo o que o kernel pensa.
-H , – cabeças cabeçasEspecifique o número de cabeças, possivelmente substituindo o que o kernel pensa.
-S , – setoresEspecifique o número de setores, possivelmente substituindo o que o kernel pensa.
-f , –forceFaça o que eu digo, mesmo que seja estúpido.
-q , –quietSuprimir mensagens de aviso.
-L , –LinuxNão reclame de coisas irrelevantes para o Linux.
-D , –DOSPara compatibilidade com o DOS: desperdice um pouco de espaço. Mais precisamente: se uma partição não puder conter o setor 0, por exemplo, porque esse é o MBR do dispositivo ou contém a tabela de partições de uma partição estendida, o sfdisk fará com que inicie o próximo setor. No entanto, quando essa opção é dada, ela pula para o início da próxima faixa, desperdiçando, por exemplo, 33 setores (no caso de 34 setores / faixa), exatamente como certas versões do DOS. Certos gerenciadores de disco e carregadores de inicialização (como OSBS, mas não o LILO ou o OS / 2 Boot Manager) também vivem nesse espaço vazio, portanto, talvez você queira essa opção se usar um.
-E , –DOS estendidoTake the starting sector numbers of “inner” extended partitions to be relative to the starting cylinder boundary of the outer one (like some versions of DOS do), rather than relative to the actual starting sector (like Linux does). The fact that there is a difference here means that one should always let extended partitions start at cylinder boundaries if DOS and Linux should interpret the partition table in the same way. Of course one can only know where cylinder boundaries are when one knows what geometry DOS will use for this disk.
–IBM–leave-lastCertain IBM diagnostic programs assume that they can use the last cylinder on a disk for disk-testing purposes. If you think you might ever run such programs, use this option to tell sfdisk that it should not allocate the last cylinder. Sometimes the last cylinder contains a bad sector table.
-nGo through all the motions, but do not actually write to disk.
-R–re-readOnly execute the BLKRRPART ioctl (to make the kernel re-read the partition table). This can be useful for checking in advance that the final BLKRRPART will be successful, and also when you changed the partition table “by hand” (e.g., using dd from a backup). If the kernel complains (“device busy for revalidation (usage = 2)”) then something still uses the device, and you still have to unmount some file system, or say swapoff to some swap partition.
–no-rereadWhen starting a repartitioning of a disk, sfdisk checks that this disk is not mounted, or in use as a swap device, and refuses to continue if it is. This option suppresses the test. On the other hand, the -f option would force sfdisk to continue even when this test fails.
–in-orderTHIS IS A DANGEROUS OPTION. Not yet been documented.
–not-in-orderTHIS IS A DANGEROUS OPTION. Not yet been documented.
–inside-outerTHIS IS A DANGEROUS OPTION. Affects chaining order.
–not-inside-outerTHIS IS A DANGEROUS OPTION. Affects chaining order.
–nestedTHIS IS A DANGEROUS OPTION. Every partition is contained in the surrounding partitions and is disjoint from all others.
–chainedTHIS IS A DANGEROUS OPTION. Every data partition is contained in the surrounding partitions and disjoint from all others, but extended partitions may lie outside (insofar as allowed by all_logicals_inside_outermost_extended).
–onesectorTHIS IS A DANGEROUS OPTION. All data partitions are mutually disjoint; extended partitions each use one sector only (except perhaps for the outermost one).
-O filePouco antes de escrever a nova partição, produza os setores que serão substituídos no arquivo (onde, esperamos, o arquivo reside em outro disco ou em um disquete).
-I arquivoDepois de destruir seus sistemas de arquivos com um comando infeliz do sfdisk , você seria capaz de restaurar a situação antiga se a tivesse preservado usando o sinalizador -O .

Detalhes técnicos e teoria dos antecedentes

O bloco 0 de um disco (o registro mestre de inicialização) contém, entre outras coisas, quatro descritores de partição. As partições descritas aqui são chamadas de partições primárias.

Um descritor de partição possui 6 campos:

partição struct {
	char não assinado inicializável; / * 0 ou 0x80 * /
	hsc begin_hsc;
	ID de caractere não assinado;
	hsc end_hsc;
	unsigned int startup_sector;
	unsigned int nr_of_sectors;
}

Os dois campos hsc indicam a cabeça, o setor e o cilindro do início e do fim da partição. Como cada campo hsc ocupa apenas 3 bytes, apenas 24 bits estão disponíveis, o que não é suficiente para discos grandes (digamos> 8 GB ). De fato, devido à representação desnecessária (que usa um byte para o número de cabeças, que normalmente é 16), os problemas já começam com 0,5 GB. No entanto, o Linux não usa esses campos e os problemas podem surgir apenas no momento da inicialização, antes que o Linux seja iniciado. Para mais detalhes, consulte a documentação do LILO.

Cada partição possui um tipo, seu “ID”, e se esse tipo for 5 ou f (“partição estendida”), o setor inicial da partição novamente conterá 4 descritores de partição. O MSDOS usa apenas os dois primeiros: o primeiro uma partição de dados real e o segundo novamente uma partição estendida (ou vazia). Dessa maneira, obtém-se uma cadeia de partições estendidas. Outros sistemas operacionais têm convenções ligeiramente diferentes. Linux também aceita digite 85 como equivalente a 5 e f – isto pode ser útil quando se quer ter estendido partições no Linux após o 1024 cilindro limite, sem DOS FDISKsuspensão. Se não houver um bom motivo, você deve usar apenas 5 , o que é entendido por outros sistemas.

Partições que não são primárias ou estendidas são chamadas lógicas. Freqüentemente, não é possível inicializar a partir de partições lógicas (porque o processo de encontrá-las está mais envolvido do que apenas olhar o MBR). Observe que, de uma partição estendida, apenas o ID e o início são usados. Existem várias convenções sobre o que escrever nos outros campos. Não se deve tentar usar partições estendidas para armazenamento ou troca de dados.

Formato de entrada

O sfdisk lê linhas do formulário

<start> <size> <id> <bootable> <c, h, s> <c, h, s>

onde cada linha preenche um descritor de partição.

Os campos são separados por espaço em branco ou vírgula ou ponto e vírgula, possivelmente seguidos por espaço em branco ; os espaços em branco iniciais e finais são ignorados. Os números podem ser octais , decimais ou hexadecimais; decimal é o padrão. Quando um campo está ausente ou vazio, um valor padrão é usado.

As partes <c, h, s> podem (e provavelmente deveriam) ser omitidas – o sfdisk as calcula de <start> e <size> e a geometria do disco conforme fornecida pelo kernel ou especificada usando -H , -S , -C bandeiras.

Inicializável é especificado como [ * |  ], com como padrão não inicializável. O valor desse campo é irrelevante para o Linux – quando o Linux é executado, ele já foi inicializado – mas pode desempenhar um papel em determinados gerenciadores de inicialização e em outros sistemas operacionais. Por exemplo, quando há várias partições primárias do DOS, o DOS atribui C: à primeira dentre essas inicializáveis.

O ID é fornecido em hexadecimal, sem o prefixo 0x , ou é [ E | S | L | X ], onde L ( LINUX_NATIVE ( 83 )) é o padrão, S é LINUX_SWAP ( 82 ), E é EXTENDED_PARTITION ( 5 ) e X é LINUX_EXTENDED ( 85 ).

O valor padrão de início é o primeiro setor não atribuído / cilindro / …

O valor padrão do tamanho é o máximo possível (até a próxima partição ou final de disco).

No entanto, para as quatro partições dentro de uma partição estendida, os padrões são: partição Linux, partição estendida, vazio, vazio.

Mas quando a opção -N (alterar apenas uma única partição) é fornecida, o padrão para cada campo é seu valor anterior.

Um ‘ + ‘ pode ser especificado em vez de um número para tamanho, o que significa o máximo possível. Isso é útil com a opção -N .

Exemplos

sfdisk / dev / hdc << EOF
0,407
, 407
;
;
EOF

Este comando (e a entrada listada) particiona / dev / hdc conforme indicado acima.

sfdisk / dev / hdb << EOF
, 3, L
, 60, L
, 19, S
,, E
, 130, L
, 130, L
, 130, L
,,EU
EOF

Este comando (e a entrada listada) particionará / dev / hdb em duas partições Linux de 3 e 60 cilindros, um espaço de troca de 19 cilindros e uma partição estendida que cobre o restante. Dentro da partição estendida, existem quatro partições lógicas do Linux, três de 130 cilindros e uma cobrindo o restante.

Com a opção -x , o número de linhas de entrada deve ser múltiplo de 4: você precisa listar as duas partições vazias que nunca deseja usar duas linhas em branco. Sem a opção -x , você fornece uma linha para as partições dentro de uma partição estendida, em vez de quatro, e termina com final de arquivo ( ^ D ). E o sfdisk assumirá que sua linha de entrada representa o primeiro de quatro, que o segundo é estendido e o terceiro e o quarto estão vazios.

cfdisk – Uma versão mais amigável do utilitário de particionamento de disco fdisk.
fdisk – Um utilitário de particionamento de disco.
mkfs – Construa um sistema de arquivos Linux, geralmente uma partição do disco rígido.
parted – Um programa de manipulação de partição de disco.
partprobe – informe o sistema operacional sobre alterações na tabela de partições.

21 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.