Czy jest jakiś sposób na utworzenie i sformatowanie partycji za pomocą skryptu bash?
Myślę, że można to zrobić za pomocą fdisk, ale nie wiem, jak podać polecenia ze skryptu bash do powłoki fdisk, a następnie wyjść z powłoki fdisk.
Chcę utworzyć partycję, a następnie sformatować ją do NTFS z poziomu bash.
bash
partitioning
ntfs
fdisk
GlassGhost
źródło
źródło
sfdisk
jest bardziej przyjazny dla automatyzacji niżfdisk
sfdisk
sfdisk
jest skryptową wersjąfdisk
Jest to część
util-linux
, podobnie jakfdisk
, więc dostępność powinna być taka sama.Tablicę partycji z pojedynczą partycją, która zajmuje cały dysk, można utworzyć za pomocą:
bardziej złożone tabele partycji wyjaśniono poniżej.
Aby wygenerować przykładowy skrypt, pobierz konfigurację jednego z dysków:
Przykładowe dane wyjściowe mojego podwójnego rozruchu Lenovo T430 Windows 7 / Ubuntu:
Po zapisaniu skryptu w pliku możesz go zastosować do
sdX
:Do
sfdisk
wprowadzania danych możesz po prostu pominąć nazwy urządzenia i użyć wierszy typu:Są one po prostu ignorowane, jeśli są obecne, a nazwa urządzenia jest pobierana z argumentu wiersza poleceń.
Kilka wyjaśnień:
label
: typ tablicy partycji.dos
(MBR) to stara, szeroko wspierana,gpt
nowa błyszcząca rzecz.unit
:sector
obsługiwane jest tylko . 1 sektor zwykle ma 512 bajtów. Znajdź za pomocącat /sys/block/sda/queue/hw_sector_size
Zobacz także: https://unix.stackexchange.com/questions/2668/finding-the-sector-size-of-a-partitiondevice
: myślę tylko informacyjnąlinie podziału:
start
: przesunięcie wewnątrz dysku, na którym zaczyna się partycja.start
ma bardzo dobre wartości domyślne i często można je pominąć:start
jest 2048, tj. 1 Mb (2048 + 512), co jest rozsądnym domyślnym ustawieniem dla zgodności dyskustart
domyślnie do pierwszej nieprzydzielonej pozycjisize
:man sfdisk
Mówi:The default value of size indicates "as much as possible"
. Aby wypełnić dysk pojedynczą partycją, użyj:/dev/sda : start=2048, type=83
type
: bajt magiczny przechowywany w sektorze rozruchowym dla każdej pozycji partycji . Możliwe wartości: https://en.wikipedia.org/wiki/Partition_type Na tym przykładzie obserwujemy:7
(sda1
,2
A3
): systemy plików, które obsługuje Windows. Zainstalowane fabrycznie elementy systemu Windows i partycje odzyskiwania Lenovo.sudo blkid
etykiety pomagają je zidentyfikować.5
(sda4
): rozszerzona partycja podstawowa, która będzie zawierać inne partycje logiczne (ponieważ możemy mieć tylko 4 partycje podstawowe z MBR)83
(sda5
,7
i8
): partycje obsługiwane przez system Linux. Dla mnie jedenhome
i dwa korzenie z różnymi wersjami Ubuntu82
(sd6
): zamianafdisk
może również czytaćsfdisk
skrypty za pomocąI
polecenia, które „źródło” je podczasfdisk
sesji interaktywnej , co pozwala na dalsze dostosowanie przed zapisaniem partycji.Testowane na Ubuntu 16.04,
sfdisk
2.27.1.Sformatuj i wypełnij partycje plikiem obrazu bez
sudo
Jest to dobry sposób na naukę używania
sfdisk
bez wysadzania dysków twardych: https://stackoverflow.com/questions/10949169/how-to-create-a-multi-partition-sd-disk-image-without-root- uprawnienia / 52850819 # 52850819źródło
fdisk
czyta ze standardowego wejścia, więc wystarczy podać odpowiednie polecenia. Na przykład, poniższe czyści tabelę partycji, jeśli taka istnieje, i tworzy nową, która ma jedną partycję, którą jest; cały dysk:Zalecam wykonanie żądanego zadania, rejestrowanie wpisywanego tekstu, aby można go było odtworzyć.
źródło
printf
zamiastecho
zwyczajnego używania czegoś, co zachowuje się konsekwentnie w różnych systemach.Możesz to zrobić za pomocą kilku poleceń, użyj intros \ n zamiast wielu ech.
źródło
\n
potrzebna jest kolejna pow
?echo
automatycznie kończy linię znakiem nowej linii (chyba że-n
użyto opcji)Możesz pisać
fdisk
.To tworzy partycję 200 MB
/dev/sdc
źródło
Polecenia pipowania do fdisk działają dobrze, jak wyjaśnione przez innych ludzi, ale w ten sposób są nieco bardziej eleganckie i czytelne:
Piping z (tymczasowego) pliku działa również:
źródło
Utwórz nowy typ etykiety dysku gpt:
sudo /sbin/parted /dev/xvdf mklabel gpt --script
Podziel dysk na partycje:
sudo /sbin/parted /dev/xvdf mkpart primary 0% 100% --script
źródło
źródło
Skrypt używa fdisk do tworzenia partycji na podstawie odpowiedzi innych osób.
Zmień następujące elementy w skrypcie:
NUM_PARTITIONS = 5
PARTITION_SIZE = „+ 10G”
Przykładowe użycie podano po skrypcie.
Biegnij z:
sudo sh mk_partition.sh / dev / sdxxx
źródło
Możesz użyć tego skryptu. Po prostu upewnij się, że zdefiniowałeś własne partycje, w których
hdd
jest zdefiniowany. Istnieją 2 puste miejsca między1
iw
; muszą tam być, aby przyjmować wartości domyślne.źródło