FDISK(8)

NAZWA
fdisk - obsługuje tablicę partycji dysku

SKŁADNIA

fdisk [opcje] urządzenie

fdisk -l [urządzenie...]

OPIS

fdisk to obsługiwany z pomocą okien dialogowych program do tworzenia i zmieniania tablicy partycji dysku twardego. Obsługuje tablice partycji typu GPT, MBR, Sun, SGI i BSD.

Urządzenia blokowe mogą być podzielone na jeden lub więcej logicznych dysków zwanych partycjami. Podział ten jest zapisany w tablicy partycji znajdującej się zwykle w sektorze 0 dysku (w świecie BSD mówi się o tzw. plastrach dyskowych "disk slice" i etykietach dysku "disklabel").

Partycjonowanie przestrzega domyślnie limitów wejścia/wyjścia urządzenia (topologii). fdisk jest w stanie zoptymalizować schemat dysku do 4-kilobajtowego rozmiaru sektora oraz używa wyrównania przesunięcia na współczesnych dyskach korzystających z MBR i GPT. Zawsze powinno się korzystać z ustawień domyślnych programu fdisk, ponieważ domyślne wartości (np. początkowego i końcowego sektora partycji) i rozmiary partycji podane w notacji +/-<rozmiar>{M,G,...} są zawsze wyrównywane zgodnie z właściwościami urządzenia.

Adresowanie cylinder-głowica-sektor (ang. Cylinder-Head-Sector - CHS) jest przestarzałe i nie jest domyślnie stosowane. Nie należy korzystać ze starych artykułów i rekomendacji z poleceniem fdisk -S <n> -H <n> do napędów SSD lub urządzeń z sektorami 4K.

Bogaty interfejs do wyświetlania schematów dysków dla skryptów zapewnia partx(8); fdisk jest przeznaczony raczej dla ludzi. Kompatybilność wsteczna w wyjściu fdisk nie jest gwarantowana. Wejście (polecenia) powinny pozostać wstecznie kompatybilne.

OPCJE

-b, --sector-size rozmiar-sektora
    Określa rozmiar sektora dysku. Możliwe wartości są następujące: 512, 1024, 2048 i 4096. Jądra jest świadome rozmiaru sektora zwykłych urządzeń blokowych. Proszę używać tej opcji tylko dla bardzo starych jąder, przy pracy z obrazami dysku lub w celu nadpisania wartości domyślnej jądra. Od util-linux-2.17 fdisk rozróżnia logiczny i fizyczny rozmiar sektora. Ta opcja zmienia obie wartości rozmiarów sektora na podany rozmiar-sektora.

-B, --protect-boot
    Nie zamazuje początku pierwszego sektora dysku przy tworzeniu nowej etykiety dysku. Ta funkcja jest obsługiwana w przypadku GPT i MBR.

-c, --compatibility[=tryb]
    Określa tryb kompatybilności, "dos" lub "nondos". Domyślnym trybem jest niedosowy. Aby zachować kompatybilność wsteczną, możliwe jest użycie tej opcji bez argumentu tryb - używana jest wówczas wartość domyślna. Proszę zauważyć, że opcjonalny argument tryb nie może być oddzielony od opcji -c spacją, poprawną formą jest np. -c=dos.

-L, --color[=kiedy]
    Koloryzuje wynik. Opcjonalnym argumentem kiedy może być auto, never (nigdy) lub always (zawsze). Gdy nie poda się argumentu kiedy, domyślnym ustawieniem jest auto. Kolory mogą być wyłączone; aktualne wbudowane ustawienie domyślne pokaże opcja --help. Zob. również rozdział KOLORY.

-l, --list
    Wypisuje tablice partycji dla podanych urządzeń i kończy działanie.

    Jeżeli nie podano żadnych urządzeń, to używane są urządzenia wymienione w pliku /proc/partitions (o ile taki plik istnieje). Urządzenia są zawsze wypisywane w kolejności w jakiej podano je w wierszu poleceń lub w kolejności jądra z pliku /proc/partitions.

-x, --list-details
    Jak --list, ale bardziej szczegółowo.

--lock[=tryb]
    Używa blokady na wyłączność BSD do urządzeń i plików na których działa. Opcjonalnym argumentem tryb może być yes, no (albo 1 lub 0) lub też nonblock. Jeśli nie poda się trybu, domyślną wartością jest yes. Opcja ta przesłania zmienną środowiskową $LOCK_BLOCK_DEVICE. Choć domyślnie nie jest używana żadna blokada, zaleca się jej użycie aby uniknąć kolizji z systemd-udevd(8) i innymi narzędziami.

-n, --noauto-pt
    Nie tworzy automatycznie domyślnej tablicy partycji na pustym urządzeniu. Tablica partycji musi być utworzona wprost przez użytkownika (poleceniami takimi jak "o", "g" itp.).

-o, --output lista
    Określa wypisywane kolumny. Ich listę można poznać podając opcję --help.

    Domyślną listę kolumn można rozszerzyć, jeśli listę poda się w formacie +lista (np. -o +UUID).

-s, --getsz
    Wyświetla rozmiar jako 512-bajtowe sektory każdego podanego urządzenia blokowego. Ta opcja jest PRZESTARZAŁA na korzyść blockdev(8).

-t, --type typ
    Włącza obsługę etykiet dysku wyłącznie podanego typu, wyłączając obsługę pozostałych typów.

-u, --units[=jednostka]
    Podczas wypisywania tablic partycji pokazuje rozmiary w "sectors" (sektorach) lub w "cylinders" (cylindrach). Domyślnie używane są sektory. Ze względu na kompatybilność wsteczną, możliwe jest użycie tej opcji bez argumentu jednostki — używana jest wówczas wartość domyślna. Proszę zauważyć, że opcjonalny argument jednostka nie może być oddzielony od opcji -u spacją, poprawną formą jest np. "-u=cylinders".

-C, --cylinders liczba
    Określa liczbę cylindrów dysku. Prawdopodobnie nie ma osoby, która miałaby powód aby używać tej opcji.

-H, --heads liczba
    Określa liczbę głowic dysku (oczywiście nie ich fizyczną liczbę, lecz liczbę używaną do tablic partycji). Rozsądnymi wartościami są 255 i 16.

-S, --sectors liczba
    Określa liczbę sektorów dysku na ścieżkę (oczywiście nie ich fizyczną liczbę, lecz liczbę używaną do tablic partycji). Rozsądną wartością jest 63.

-w, --wipe kiedy
    Usuwa sygnatury systemu plików, tablicy partycji i RAID aby zapobiec ewentualnym kolizjom. Argument kiedy może przyjąć wartość auto, never (nigdy) lub always (zawsze). Gdy nie poda się tej opcji, domyślnie stosowane jest ustawienie auto, które usuwa sygnatury tylko w trybie interaktywnym. W każdym przypadku wykryte sygnatury skutkują wypisaniem ostrzeżenia przed utworzeniem nowej tablicy partycji. Zob. też polecenie wipefs(8).

-W, --wipe-partitions kiedy
    Usuwa sygnatury systemu plików, tablicy partycji i RAID z nowo tworzonych partycji, aby zapobiec ewentualnym kolizjom. Argument kiedy może przyjąć wartość auto, never lub always. Gdy nie poda się tej opcji, domyślnie stosowane jest ustawienie auto, które usuwa sygnatury tylko w trybie interaktywnym i po potwierdzeniu przez użytkownika. W każdym przypadku wykryte sygnatury skutkują wypisaniem ostrzeżenia przed utworzeniem nowej tablicy partycji. Zob. też polecenie wipefs(8).

-h, --help
    Wyświetla ten tekst i wychodzi.

-V, --version
    Wyświetla wersję i wychodzi.

URZĄDZENIA

Urządzenie to z reguły /dev/sda, /dev/sdb itp. Nazwy urządzeń odnoszą się do całego dysku. Stare systemy bez libata (biblioteki używanej wewnątrz jądra Linux do obsługi kontrolerów i urządzeń ATA) rozróżniają dyski IDE i SCSI. W takich przypadkach nazwami urządzeń będą /dev/hd* (IDE) lub /dev/sd* (SCSI).

Partycja to nazwa urządzenia, za którą następuje numer partycji. Na przykład, /dev/sda1 jest pierwszą partycją pierwszego dysku twardego w systemie. Proszę również zapoznać się z dokumentacją jądra Linux (plik Documentation/admin-guide/devices.txt).

ROZMIARY

Okno "ostatni sektor" akceptuje podanie rozmiaru partycji za pomocą liczby sektorów albo w notacji +/-<rozmiar>{K,B,M,G,...}.

Jeśli rozmiar poprzedzi się plusem "+", to jest on interpretowany jako liczony w odniesieniu do pierwszego sektora partycji. Jeśli przedrostkiem będzie minus "-", to jest on interpretowany w odniesieniu do ostatniego dostępnego sektora partycji.

Gdy poda się rozmiar w bajtach, po liczbie tej mogą występować przyrostki oznaczające wielokrotność: KiB (1024 bajtów), MiB (1024*1024 bajtów) itd. dla GiB, TiB, PiB, EiB, ZiB i YiB. Cząstka "iB" jest opcjonalna, tzn. "K" ma to samo znaczenie co "KiB".

Rozmiary relatywne, jeśli użyto przyrostków oznaczających wielokrotność (np. +100MiB), są zawsze wyrównywane zgodnie z limitami wejścia/wyjścia danego urządzenia. Zaleca się stosowanie notacji +/-<rozmiar>{K,B,M,G,...}.

Ostatni sektor partycji jest obliczany bezwzględnie jako <początek>
<rozmiar> (bez -1), jeśli rozmiar podano za pomocą notacji +<sektory>. W takim przypadku, rozmiar nie jest wyrównywany do limitów wejścia/wyjścia urządzenia.

W celu kompatybilności wstecznej fdisk przyjmuje również przyrostki KB (1000 bajtów), MB (1000*1000 bajtów) itd. dla GB, TB, PB, EB, ZB i YB. Te przyrostki utworzone w oparciu o notację 10^N są przestarzałe.

PLIKI SKRYPTÓW

fdisk pozwala na odczytanie (poleceniem "I") skryptów kompatybilnych z sfdisk(8). Skrypt jest następnie stosowany do tablicy partycji przechowywanej w pamięci, a później istnieje możliwość jej modyfikacji przed ostatecznym zapisaniem na dysk.

Działa to również w drugą stronę, ponieważ poleceniem "O" można zapisać aktualny schemat dysku przechowywany w pamięci do skryptu.

Pliki skryptów są kompatybilne pomiędzy cfdisk(8), sfdisk(8), fdisk i pozostałymi programami libfdisk. Więcej szczegółów w podręczniku sfdisk(8).

ETYKIETY DYSKU

GPT (GUID Partition Table)
    GPT to nowoczesny standard opisujący schemat tablicy partycji. GTP używa 64-bitowe logicznych adresów bloków, sum kontrolnych, UUID-ów i nazw dla partycji. Nie ma ograniczeń w liczbie partycji (choć wiele narzędzi partycjonujących ogranicza tę liczbę do 128).

    Proszę zauważyć, że w specyfikacji GPT pierwszy sektor jest wciąż przeznaczony na ochronne MBR. Unika się w ten sposób błędnego rozpoznania i zamazania dysków GPT przez narzędzia partycjonujące znające tylko MBR.

    GPT jest zawsze lepszym wyborem niż MBR, szczególnie na nowoczesnym sprzęcie korzystającym z UEFI.

Typu DOS-owego (MBR)
    Tablica partycji typu DOS może opisać nieograniczoną liczbę partycji. W sektorze 0 jest miejsce na opis 4 partycji (zwanych podstawowymi — "primary"). Jedna z nich może być partycją rozszerzoną; jest ona jakby pudełkiem zawierającym partycje logiczne, których deskryptory można znaleźć w wiązanej liście sektorów, z których każdy poprzedza odpowiadającą partycję logiczną. Cztery podstawowe partycje, niezależnie od tego czy są obecne, czy nie, otrzymują numery od 1 do 4. Numery partycji logicznych zaczynają się od 5.

    W tablicy partycji typu DOS początkowe przesunięcie i rozmiar każdej partycji przechowywany jest na dwa sposoby: jako bezwzględna liczba sektorów (zapisywana na 32 bitach) i jako trójka Cylindry/Głowice/Sektory (Cylinders/Heads/Sectors) (zapisywana na 10+8+6 bitach). Pierwszy zapis jest w porządku - przy 512-bajtowych sektorach będzie działał aż do 2 TB. W przypadku drugiego zapisu występują dwa problemy. Przede wszystkim pola C/H/S mogą być wypełnione tylko wtedy, gdy znana jest liczba głowic oraz liczba sektorów na ścieżce. Po drugie, nawet jeżeli te liczby są znane, to te 24 bity, które są dostępne, nie wystarczają. DOS używa tylko C/H/S, Windows — obu, a Linux nigdy nie używa C/H/S. Adresowanie C/H/S jest przestarzałe i może w przyszłości nie być obsługiwane przez którąś z wersji fdisk.

    Proszę zapoznać się z rozdziałem o trybie DOS-owym, aby utworzyć partycje kompatybilne z DOS-em. Domyślnie, fdisk nie troszczy się o granice cylindrów.

Typu BSD/Sun
    Etykieta dysku typu BSD/Sun może opisywać 8 partycji, z których trzecia powinna być specjalną partycją oznaczającą cały dysk. Partycji, która używa swojego pierwszego sektora (jak na przykład partycja wymiany) nie należy umieszczać w cylindrze 0, ponieważ zniszczy to etykietę dysku. Proszę zauważyć, że etykieta BSD jest zwykle zagnieżdżona w partycji DOS.

Typu IRIX/SGI
    Etykieta dysku IRIX/SGI może opisywać 16 partycji, z których jedenasta powinna być partycją całego "woluminu", natomiast dziewiąta powinna być tzw. "nagłówkiem woluminu". Nagłówek woluminu także pokrywa całą tablicę partycji, tzn. zaczyna się w bloku zerowym i domyślnie ciągnie się przez pięć cylindrów. Pozostałe miejsce w nagłówku woluminu może być użyte przez wpisy głównych katalogów. Żadna partycja nie może nachodzić na nagłówek woluminu. Także, nie należy zmieniać typu nagłówka woluminu, ani tworzyć na nim systemu plików, ponieważ spowoduje to utratę tablicy partycji. Proszę używać tego typu etykiety dysku tylko podczas pracy z Linuksem na komputerach IRIX/SGI lub podczas pracy z dyskami IRIX/SGI pod Linuksem.

    Gdy zaktualizowano tablicę partycji, to przed wyjściem wykonywane jest sync(2) i ioctl(BLKRRPART) (ponowne odczytanie tablicy partycji z dysku).

OSTRZEŻENIE TRYBU DOS I DOS 6.X

Cały ten rozdział jest nieaktualny. W żadnym ze współczesnych systemów operacyjnych nie ma potrzeby martwić się takimi rzeczami jak geometria czy cylindry. Jeśli naprawdę konieczne jest stosowanie partycjonowanie kompatybilnego z DOS-em konieczne jest włączenie trybu DOS i cylindrów jako jednostek za pomocą opcji wiersza poleceń "-c=dos -u=cylinders".

Komenda FORMAT z DOS 6.x szuka informacji w pierwszym sektorze obszaru danych partycji i traktuje je jako godniejsze zaufania niż informacje z tablicy partycji. Dosowy FORMAT oczekuje od dosowego FDISK-a, że ten wyczyści pierwsze 512 bajtów obszarów danych przy każdej zmianie rozmiarów. Dosowy FORMAT zajrzy do tych dodatkowych danych nawet z flagą /U — uważamy to za błąd tych programów.

Tak więc używając programu cfdisk(8) lub fdisk do zmiany rozmiaru partycji dosowej, należy też użyć dd(1) do wyzerowania pierwszych 512 bajtów tej partycji przed użyciem dosowego FORMAT. Na przykład, po utworzeniu dosowej partycji /dev/sda1 programem fdisk (po wyjściu z fdisk i przeładowaniu Linuksa, dzięki czemu informacje o tablicy partycji będą poprawne), powinno się wykonać polecenie dd if=/dev/zero of=/dev/hda1 bs=512 count=1, które zeruje pierwszych 512 bajtów partycji.

fdisk zwykle automatycznie uzyska informacje o geometrii dysku. Niekoniecznie musi to być fizyczna geometria dysku (co więcej, nowoczesne dyski w rzeczywistości nie mają czegoś takiego jak fizyczna geometria, a w każdym razie nie mają niczego, co mogłoby być opisane w prostej postaci cylindry/głowice/sektory), lecz geometria, której używa MS-DOS dla tablicy partycji.

Zazwyczaj wszystko idzie dobrze i nie ma żadnych problemów, jeżeli Linux jest jedynym systemem na dysku. Jednakże, jeśli dysk będzie dzielony z innymi systemami operacyjnymi, to dobrym pomysłem jest utworzenie co najmniej jednej partycji programem fdisk pochodzącym z innego systemu operacyjnego. Linux, podczas uruchamiania, przegląda tablicę partycji i stara się wywnioskować, jaka (fałszywa) geometria dysku jest wymagana, żeby mógł dobrze współpracować z innymi systemami.

Gdy wypisywana jest tablica partycji, w trybie DOS dokonywane jest sprawdzenie spójności wpisów tablicy. Sprawdzane jest, czy fizyczne i logiczne punkty startowe i końcowe są takie same, oraz czy partycja rozpoczyna się i kończy w granicach cylindrów (poza pierwszą partycją).

Niektóre wersje MS-DOS tworzą pierwszą partycję, która nie rozpoczyna się na granicy cylindra, lecz na 2 sektorze pierwszego cylindra. Partycje rozpoczynające się na cylindrze 1 nie mogą rozpoczynać się na granicy cylindra, lecz raczej nie powinno to sprawiać problemów, chyba że używany jest OS/2.

Dla najlepszych wyników, zawsze powinno się używać fdiska typowego dla danego systemu operacyjnego. Na przykład, partycje dosowe powinno się tworzyć dosowym FDISK-iem, a linuksowe — linuksowymi programami fdisk lub cfdisk(8).

KOLORY

Kolorowanie wyjściowe zaimplementowano poprzez terminal-colors.d(5). Jawne kolorowanie można wyłączyć za pomocą pustego pliku

    /etc/terminal-colors.d/fdisk.disable

dla polecenia fdisk albo dla wszystkich narzędzi plikiem

    /etc/terminal-colors.d/disable

Od wersji 2.41, obsługiwana jest również zmienna środowiskowa $NO_COLOR, służąca do wyłączenia kolorowania wyjścia, o ile nie włączy się je wprost opcją wiersza poleceń.

Globalne ustawienie przesłonią $XDG_CONFIG_HOME/terminal-colors.d lub $HOME/.config/terminal-colors.d danego użytkownika.

Proszę zauważyć, że kolorowanie wyjścia może być domyślnie włączone i wówczas katalogi terminal-colors.d mogą jeszcze nie istnieć.

Logiczne nazwy kolorów obsługiwane przez fdisk to:

header
    Nagłówek tabel wyjściowych.

help-title
    Tytuły sekcji pomocy.

warn
    Ostrzeżenia.

welcome
    Powitania.

ŚRODOWISKO

FDISK_DEBUG=all
    włącza wyjście debugowania fdisk.

LIBFDISK_DEBUG=all
    włącza wyjście debugowania libfdisk.

LIBBLKID_DEBUG=all
    włącza wyjście debugowania libblkid.

LIBSMARTCOLS_DEBUG=all
    włącza wyjście debugowania libsmartcols.

LIBSMARTCOLS_DEBUG_PADDING=on
    używa widocznych znaków wypełnienia.

LOCK_BLOCK_DEVICE=<tryb>
    używa blokady na wyłączność BSD. Tryb to "1" lub "0". Więcej informacji w opisie opcji --lock.

AUTORZY

Pierwotną wersję napisali Andries E. Brouwer, A. V. Le Blanc i inni.

ZOBACZ TAKŻE

cfdisk(8), mkfs(8), partx(8), sfdisk(8)

ZGŁASZANIE BŁĘDÓW

Problemy należy zgłaszać w

DOSTĘPNOŚĆ

Polecenie fdisk jest częścią pakietu util-linux, który można pobrać ze strony