Muszę stworzyć system plików z tylko jedną partycją z niczego ( /dev/zero
). Próbowałem tej sekwencji poleceń:
dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
n
p
2048
131072
Zasadniczo muszę utworzyć plik obrazu 64 MB wypełniony zerami. Następnie używam, fdisk
aby dodać nową partycję dla nowego systemu plików (który ostatecznie powinien być FAT32), zaczynając od sektora 2048
i używając wszystkich pozostałych sektorów.
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
Ale tutaj mam problemy. Jeśli skonfiguruję loop
urządzenie i sformatuję je mkfs -t vfat
, tablica partycji zostanie zastąpiona, a system plików (FAT32) zostanie umieszczony na dysku. Nie potrzebuję całego dysku sformatowanego za pomocą FAT32, potrzebuję tylko mojej partycji podstawowej.
Czy ktoś wie, jak sformatować tylko jedną partycję surowego obrazu dysku, a nie cały obraz?
linux
partition
loop-device
użytkownik35443
źródło
źródło
mkfs
połączenie. Musiałem przeczytać twój post 3 razy, aby zrozumieć twój problem. Chociaż nie mogę ci pomóc, interesuje mnie, dlaczego tworzysz plik obrazu (!), Ale nadal chcę pozostawić pierwsze n „sektorów” nieużywanych.loop
jest, czy jest to moduł, czy wbudowane w jądro), więc myślę, że przydatne jest, aby każda strona miała swoją wersję pytania i głosowałem za jej ponownym otwarciem.Odpowiedzi:
Jeśli w systemie Linux, podczas ładowania
loop
modułu, upewnij się, że przekazujeszmax_part
opcję do modułu, aby urządzenia pętlowe mogły być partycjonowane.Sprawdź aktualną wartość:
Jeśli to 0:
Aby to ustawienie pozostało trwałe, dodaj następujący wiersz do
/etc/modprobe.conf
pliku lub do pliku,/etc/modprobe.d
jeśli ten katalog istnieje w systemie:Jeśli się
modprobe -r loop
nie powiedzie, ponieważ „Pętla modułu jest wbudowana”, musisz dodaćloop.max_part=31
do linii poleceń jądra i zrestartować komputer. Jeśli twój bootloader to Grub2, dodaj do niego wartośćGRUB_CMDLINE_LINUX
inetc/default/grub
.Teraz możesz utworzyć partycjonowane urządzenie pętli:
(pamiętaj, że potrzebujesz stosunkowo najnowszej wersji systemu Linux).
źródło
loop.max_part=31
do wiersza poleceń jądraloop.maxpart=31
czyloop.max_part=31
w wierszu poleceń jądra?losetup /dev/loop0 file -o 1048576 --sizelimit limit
Określone przesunięcie powinno być w bajtach (1048576 = 2048 sektorów * 512 bajtów na sektor).
mount -o loop,offset=1048576,sizelimit=limit
Aby uzyskać więcej informacji, zobacz losetup i mount .
źródło
Poniższe procedury umożliwiają zamontowanie partycji obrazu w celu ich modyfikacji.
opcja losetup 2.21 -P
Tworzy jeden
/dev/loopXpY
na partycję.Zaleta: plik wykonywalny preinstalowany w wielu dystrybucjach (pakiet util-linux).
Wada: całkiem nowa opcja, nieobecna w Ubuntu 14.04.
losetup -P
automatyzacjaStosowanie:
Źródło:
kpartx
Wynik:
gdzie
loop0p1
jest pierwsza partycja, dzięki czemu możemy:Zaletą tej metody: działa na Ubuntu 14.04 bez ponownego uruchamiania.
źródło