losetup - konfiguruje i steruje urządzeniami pętli
(loop)
Konfigurowanie urządzenia pętli:
losetup [opcje] -f|urządzenie-pętli
plik
Pobieranie informacji:
losetup [-l]
[-a|urządzenie-pętli]
losetup -j plik [-o
przesunięcie]
Ponowna kalibracja rozmiaru urządzenia pętli:
losetup -c urządzenie-pętli
Odłączenie urządzeń pętli:
losetup -d urządzenie-pętli
...
losetup -D
Zapobieganie wypisywaniu urządzeń pętli:
losetup --remove
urządzenie-pętli ...
losetup służy do kojarzenia
urządzeń pętli (loop) z plikami zwykłymi lub
urządzeniami blokowymi, do odłączania
urządzeń pętli i sprawdzania ich stanu. Jeżeli
podano tylko argument urządzenie-pętli, to pokazywany
jest stan odpowiedniego urządzenia pętli. Jeśli nie
podano żadnej opcji, to wyświetlane są wszystkie
urządzenia pętli.
Proszę zauważyć, że stary format
wyjściowy (tj. losetup -a), z łańcuchami
znaków oddzielonymi od siebie przecinkami, jest przestarzały.
Zamiast niego preferowanym formatem jest format --list.
Dla tego samego powiązanego pliku można
utworzyć wiele niezależnych urządzeń
pętli. Taka konfiguracja może być niebezpieczna,
spowodować utratę danych, ich uszkodzenie lub nadpisanie.
Aby uniknąć tego problemu, podczas konfiguracji należy
korzystać z opcji --nooverlap wraz z --find.
Konfiguracja urządzenia pętli nie jest
operacją niepodzielną, gdy korzysta się z opcji
--find, a losetup nie chroni tej operacji żadną
blokadą. Liczba prób jest wewnętrznie ograniczona do
16. Zaleca się korzystanie np. z flock(1), aby
uniknąć kolizji w przypadku intensywnego korzystania
równoległego.
Po argumentach rozmiar i przesunięcie
mogą występować przyrostki oznaczające
wielokrotność: KiB (=1024), MiB (=1024*1024), itd. dla GiB,
TiB, PiB, EiB, ZiB i YiB (cząstka "iB" jest opcjonalna,
tzn. np. "K" znaczy to samo co "KiB") lub przyrostki KB
(=1000), MB (=1000*1000), itd. dla GB, TB, PB, EB, ZB i YB.
-a, --all
Wyświetla stan wszystkich urządzeń
pętli. Proszę zauważyć, że nie wszystkie
informacje są dostępne dla użytkowników
niebędących administratorami. Patrz także --list.
Stary format wyjściowy (wypisywany, jeśli nie podano
--list) jest niezalecany.
-d, --detach
urządzenie-pętli...
Odłącza plik lub urządzenie
związane z podanym(i) urządzeniem(-ami) pętli.
Proszę zauważyć, że Linux od v3.7 korzysta z
"leniwego niszczenia urządzeń". Operacja
odłączenia nie zwróci obecnie błędu
EBUSY, gdy urządzenie jest aktywnie używane przez system,
lecz jest znakowane znacznikiem automatycznego wyczyszczenia i jest niszczone
później. Nawet jeśli urządzenie nie jest
używane, urządzenie pętli może zostać
zniszczone dopiero później. Jeśli konieczne jest
poczekanie na całkowite usunięcie urządzenia
pętli, po losetup należy wywołać udevadm
settle.
-D, --detach-all
Odłącza wszystkie przypisane
urządzenia pętli.
-f, --find [plik]
Szuka pierwszego nieużywanego urządzenia
pętli. Jeśli podano argument plik, to używa tego
znalezionego urządzenia jako urządzenia pętli. W
przeciwnym wypadku wyświetla jego nazwę.
--show
Wyświetla nazwę przypisanego
urządzenia pętli, jeśli podano opcję -f i
argument plik.
-L, --nooverlap
Sprawdza pod kątem konfliktów, aby
uniknąć sytuacji, gdy ten sam powiązany plik jest
dzielony pomiędzy większą liczbą
urządzeń pętli. Jeśli plik jest już
używany przez inne urządzenie, to zamiast użyć
nowego, program skorzysta ponownie z istniejącego urządzenia.
Opcja ma sens tylko w połączeniu z --find.
-j, --associated plik [-o
przesunięcie]
Wyświetla stan wszystkich urządzeń
pętli skojarzonych z podanych plikiem.
-o, --offset przesunięcie
Początek danych przesuwany jest o
przesunięcie bajtów podanego pliku lub urządzenia.
Po przesunięciu można podać przyrostki
oznaczające wielokrotność; zob. wyżej.
--loop-ref łańcuch
Ustawia łańcuch odniesienia.
Domyślnie, i zgodnie wstecznie, używa się nazwy
powiązanego pliku jako odniesienia w ioctl konfigurującym
pętlę (inaczej lo_file_name). Ta opcja przesłania opisane
zachowanie domyślne i ustawia odniesienie na
łańcuch. Odniesienie może być użyte
przez udevd w /dev/loop/by-ref. Jądro Linux nie używa tego
odniesienia, lecz mogą się nim posłużyć
pewne starsze narzędzia, które nie potrafią
odczytać powiązanego pliku z sysfs. Odniesienie może
odczytać tylko użytkownik root (zob. --output +REF) i
jest ograniczone do 64 bajtów.
--sizelimit rozmiar
Koniec danych jest ustawiany na nie więcej
niż rozmiar bajtów, licząc od początku
danych. Po rozmiarze można podać przyrostki
oznaczające wielokrotność; zob. wyżej.
-b, --sector-size rozmiar
Ustawia rozmiar sektora logicznego urządzenia
pętli w bajtach (od Linuksa 4.14). Opcję można
podać przy tworzeniu nowego urządzenia pętli, jak
również jako samodzielne polecenie, służące
do modyfikacji rozmiaru sektora istniejącego urządzenia
pętli.
-c, --set-capacity
urządzenie-pętli
Wymusza na sterowniku pętli ponowne odczytanie
rozmiaru pliku skojarzonego z podanym urządzeniem pętli.
-P, --partscan
Zmusza jądro do przeskanowania tablicy partycji na
tworzonym urządzeniu pętli. Proszę
zauważyć, że przetwarzanie tablicy partycji jest
zależne od rozmiarów sektora. Domyślnym rozmiarem sektora
są 512 bajty, w innych przypadkach konieczne jest użycie opcji
--sector-size łącznie z --partscan.
-r, --read-only
Konfiguruje urządzenie pętli jako tylko do
odczytu.
--direct-io[=on|off]
Włącza lub wyłącza
bezpośredni dostęp wejścia/wyjścia do
powiązanego pliku. Domyślnym ustawieniem jest
wyłączenie (off). Podanie --direct-io lub
--direct-io=on włączy tę opcję. Aby jawnie
ją wyłączyć, można podać
--direct-io=off.
-l, --list
Jeśli podano urządzenie loop lub
opcję -a, to wyświetla domyślne kolumny albo dla
podanego urządzenia, albo dla wszystkich urządzeń loop.
Domyślnie wyświetla informacje o wszystkich urządzeniach.
Patrz także --output, --noheadings --raw oraz
--json.
-O, --output kolumna[,kolumna]...
Określa kolumny, które będą
wypisane przez opcję --list. Opcja --help wypisze
listę wszystkich obsługiwanych kolumn.
--output-all
Wypisuje wszystkie dostępne kolumny.
-n, --noheadings
Nie wyświetla nagłówków w
wyjściu formatu opcji --list.
--raw
Używa surowego formatu wyjściowego w
--list.
-J, --json
Używa formatu JSON w wyjściu
--list.
--remove urządzenie-pętli...
Usuwa podane urządzenia pętli zwrotnej.
Urządzenie pętli nie może być używane (nie
może być powiązane z jakimś plikiem). Opcja usuwa
węzeł urządzenia z systemu. W większości
przypadków, wystarczające jest stosowanie --detach. Zob.
poniższy rozdział CYKL ISTNIENIA URZĄDZENIA
PĘTLI ZWROTNEJ.
-h, --help
Wyświetla ten tekst i wychodzi.
-V, --version
Wyświetla wersję i wychodzi.
Urządzenia pętli zwrotnej przechodzą przez
kilka stanów w trakcie swego istnienia:
Tworzenie
Gdy losetup kojarzy urządzenie pętli
z odpowiadającym mu plikiem, automatycznie tworzy węzeł
urządzenia (np. /dev/loop0), jeśli taki jeszcze nie
istnieje. Dzieje się to na żądanie, jeśli
podało się opcję taką jak -f albo gdy
podało się bezpośrednio urządzenie pętli.
Urządzenie jest tworzone za pomocą kontrolki systemowej (ioctl)
LOOP_CTL_ADD.
Odłączenie
Opcja -d (--detach) odłącza
urządzenie pętli od odpowiadającego mu pliku za
pomocą ioctl LOOP_CLR_FD. Po odłączeniu,
węzeł urządzenia pętli pozostaje w /dev i
może być użyty ponownie z innych plikiem. Polecenie
lsblk -a pokaże wszystkie węzły
urządzeń pętli, w tym nieużywane.
Usunięcie
Opcja --remove całkowicie usuwa
węzeł urządzenia pętli z systemu za pomocą
ioctl LOOP_CTL_REMOVE. Urządzenie musi być uprzednio
rozłączone (nie może być powiązane z
żadnym plikiem). Po usunięciu, węzeł
urządzenia znika z /dev.
Cryptoloop jest przestarzały, zamiast niego zalecany
jest dm-crypt. Szczegóły można
znaleźć w podręczniku cryptsetup(8).
losetup zwraca 0, jeśli zakończyło
się pomyślnie, a wartość niezerową w
przypadku błędu. Gdy losetup wyświetla stan
urządzenia pętli, to zwraca 1, jeśli urządzenie
nie jest skonfigurowane, lub 2, gdy wystąpił
błąd uniemożliwiający określenie stanu
urządzenia.
Od wersji 2.37, losetup korzysta z ioctl
LOOP_CONFIGURE do skonfigurowania nowego urządzenia
pętli, za pomocą pojedynczego wywołania ioctl. Starsze
wersje używały do tego samego celu ioctl: LOOP_SET_FD i
LOOP_SET_STATUS64.
ŚRODOWISKO
LOOPDEV_DEBUG=all
włącza wyjście debugowania.
LIBSMARTCOLS_DEBUG=all
włącza wyjście debugowania
libsmartcols.
LIBSMARTCOLS_DEBUG_PADDING=on
używa widocznych znaków
wypełnienia.
/dev/loop[0..N]
urządzenia blokowe pętli
/dev/loop-control
urządzenie kontrolne pętli
Jako przykład użycia urządzenia loop
posłużą poniższe polecenia:
# dd if=/dev/zero of=~/plik.img bs=1024k count=10
# losetup --find --show ~/plik.img
/dev/loop0
# mkfs -t ext2 /dev/loop0
# mount /dev/loop0 /mnt
...
# umount /dev/loop0
# losetup --detach /dev/loop0
Karel Zak <kzak@redhat.com>, korzystając z
pierwotnej wersji Theodore’a Ts’o
<tytso@athena.mit.edu>.