Jak utworzyć, swap i sformatować partycję za pomocą skryptu bash?

Czy istnieje 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ę i swap, a następnie sformatować ją do ext4 i linux swap z poziomu bash.

Czy w linux kolejność tworzenia partycji
W jaki sposób dodać / i swap

sda1 1- efi
sda2 2- /
sda3 3- swap
sdb1 4- /home

#!/bin/bash

echo Example: sda

read -p '/dev/' hardDrivevar

fdisk /dev/$hardDrivevar << EOF
g
n
1

+550M
t
1
n
2


w
EOF


echo Example: sdb

read -p '/dev/' hardDrivevar

fdisk /dev/$hardDrivevar << EOF
g
n
1


w
q
EOF


mkfs.vfat -F32 -n EFI /dev/sda1
mkfs.ext4 -L root /dev/sda2
mkswap -L swap /dev/sda3
mkfs.ext4 -L dane /dev/sdb1

mount /dev/sda2 /mnt
swapon /dev/sda3
mkdir /mnt/home
mount /dev/sdb1 /mnt/home



W przypadku fdisk łatwo się pomylić przy przekazywaniu parametrów.
Wygodniejszy do oskryptowania będzie sfdisk.
Przyjmuje listę partycji do utworzenia z pliku. Można też to samo zrobić przekazując mu je przy pomocy echo przez „rurkę”.

#!/bin/bash

DYSK=/dev/sdx

#rozmiary partycji w MiB
PART_EFI=512       #512 MiB
PART_ROOT=38147    #40 GiB
PART_HOME=190735   #200 GiB
PART_SWAP=7629     #~8 GiB


echo "label: gpt
device: ${DYSK}
unit: sectors

${DYSK}1 : size=${PART_EFI}MiB, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B
${DYSK}2 : size=${PART_ROOT}MiB, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4
${DYSK}3 : size=${PART_HOME}MiB, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4
${DYSK}4 : size=${PART_SWAP}MiB, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
" | sfdisk ${DYSK}
#typy partycji możesz sobie sprawdzić przy pomocy sfdisk -X gpt -T

#formatowanie standardowo przez mkfs

Możesz również sobie sprawdzić „na brudno” to dodając opcję "-n"

-n, --no-act wykonanie wszystkiego poza zapisem na urządzenie