# pingwinowanie 5+6+8-4+2-5-3+2
# zad 1 (na oko jedyne deklarowalne)
## fdisk(8)
Narzędzie do tworzenia i partycjonowania dysków.
### Przydatne opcje
- `fdisk -l` - listuje wszystkie dyski i partycje dostępne w komputerze
- `fdisk -w` - usuwa tablicę partycji i zmienia na 0 początek dysku (różną liczbę sektorów zależnie od wersji fdiska i SO)
### Inne opcje
Jak już wejdziemy do danego dysku np.:
```bash=
sudo fdisk /dev/sda
```
mamy dostępne parę opcji, które się listują po wybraniu opcji `m`:
```=
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty MBR (DOS) partition table
s create a new empty Sun partition table
```
Ale takie bardziej dla nas istotne to raczej będą:
```=
Help:
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
```
żeby stworzyć nową partycję klikamy `n` i lecimy z tym co pisze, jeśli zmienić typ jakiejś to `t` i lecimy durch. `p` żeby zobaczyć co już zrobiliśmy, `F` żeby zobaczyć ile miejsca nam już zostało. `v` do weryfikacji (nwm ocb ale do dopytania TWi) i `i` do info o partycji. Żeby wyjść dajemy `q`, wyjść i zapisać - `w`
### czym są `I` oraz `O` (nic nie znalazłem ale jak ktoś chce poczytać to chętnie poczytam)
### Ciekawostka
Jak zrobimy plik `/etc/terminal-colors.d/fdisk.scheme` to możemy zmieniać trochę kolorków:
```=
header 32;33
warn 32;33
welcome 32;33
```
To nam robi kolorki na pomarańczowo
## GNU parted
Narzędzie do zarządzania partycjami na dyskach twardych.
### Ciekawsze opcje
- `parted -l` - wyświetla dyski i partycje <br>(nie znalazłem nic w manie o kolorowaniu `:(((`)
### Inne opcje
Jak już wejdziemy do danego dysku np.:
```bash=
sudo parted /dev/sda
```
mamy dostępne parę opcji, które się listują po wpisaniu `help`:
- `print`/`p` - wyświetla dane o partycji
- `select` - wybiera dysk do edycji
- `mklabel <label>` - tworzy nową tablicę partycji na dysku. `<label>` można zastąpić jako `msdos` co będzie odpowiadać typie `MBR` oraz `gpt` - GPT.
- `mkpart <part-type> <fs-type> <start> <end>` - tworzy nową partycję na dysku. Przykład: <br>`mkpart primary ext4 1MiB 100GiB` (Jeśli nie podamy którejś z opcji on sam nas zapyta) (`<start>` i `<end>` mogą być procentem - od/do jakiej części dysku)
- `resizepart <number> <end>` - zmień długość (koniec) partycji o danym numerze
- `name <nuber> <name>` - zmień nazwę partycji (niedostępne w MBR)
- `set <number> <flag> <state>` - na partycji o danym numerze zarządza flagami [flagi](https://www.gnu.org/software/parted/manual/html_node/set.html)
- `rescue <start> <end>` - próbuje znaleźć partycję która kiedyś mogła istnieć w granicach `<start>` do `<end>`
- `rm <number>` - usuwa partycję o numerze `<number>`
## różnice
| fdisk | parted |
| -------- | -------- |
| tylko interaktywny tryb | posiada tryb tekstowy |
| nie umożliwia opcji resize-owania | daje opcję utylizacji pozostałego i shrinkowanie opcją resizepart |
| sam załatwia problemy z alignowaniem partycji | mówi ci że coś jest źle ale nie jak to naprawić |
## zrób sobie giga dyska
```bash=
truncate -s $((976580000 * 512)) disk.img # tworzenie dysku
sudo losetup -fP disk.img # tworzenie urządzenia loopback
```
```bash=
sudo parted /dev/loopX # wejdź do urządzenia loopback
```
```bash=
(parted) mklabel msdos
(parted) mkpart primary fat32 63s 67108863s
(parted) mkpart primary ext4 67108864s 486539263s
(parted) mkpart extended 629145600s 976579999s
(parted) mkpart logical ext4 629147648s 713033727s
(parted) mkpart logical linux-swap 975175680s 976199679s
(parted) q
# możemy zobaczyć poleceniem
sudo fdisk -l /dev/loopX
# i zobaczymy że parted daje jakiś dziwny typ na extended więc
sudo fdisk /dev/loopX # wchodzimy do urządzenia
Command (m for help): t # zmieniamy typ
Partition number (1-3,5,6, default 6): 3
Hex code or alias (type L to list all): 05
Command (m for help): w
```
### Inne pierdy
losetup służy do zarządzania urządzeniami pętli (`/dev/loopX`), które pozwalają na montowanie plików jako dyski
- `--show` np. `sudo losetup --show -f disk.img` pokazuje urządzenie do którego będzie przypisane następne urządzenie blokowe
- `--find` szuka następnego wolnego urządzenia looback
- `--partscan` skanuje tabelę partycji nowo utworzonego urządzenia loopback
`partx` - służy do zarządzania tabelą partycji na urządzeniu blokowym np
```bash=
sudo partx -l /dev/loop0 # listuje zawartość urządzenia loop0
```
`partprobe` służy do informowania systemu o zmianach w tabeli partycji na urządzeniu, czyli puszcza info do kernela, że "oho grubasie jesteś taki wolny że nie wiem czy wyłapałeś wszystkie zmiany w moim urządzeniu także sobie lepiej sprawdź". Jak skończy działanie to znaczy że kernel dostał info. Taki trochę refresh czy coś
```bash=
partprobe /dev/loop0
```
`kpartx` służy do mapowania partycji na urządzeniach blokowych. Jest używane, gdy chcemy zarządzać partycjami na urządzeniach pętli. Robi nam urządzenie mapujące (mapper), który siedzi sobie w `/dev/mapper/` np `/dev/mapper/loop0p1` (parted na oko mi stworzyło od razu ale może byłby problem z innym narzędziem)
# ~~zad 2 (nwm jakaś próba)~~ Chyba nie aż taki przyjemniaczek trzeba coś policzyć

Pobieramy sobie ten zrzut do jakiegoś pliku `hexdump2` i robimy
```bash=
xxd -r hexdump2 > new.img
fdisk -l new.img
```
```bash=
truncate -s $((1621098496 * 512)) disk3.img # tworzenie dysku
sudo losetup -fP disk3.img # tworzenie urządzenia loopback
sudo parted /dev/loopX # wejdź do urządzenia loopback
```
40 100 256 1 2
```bash=
(parted) mklabel msdos
(parted) mkpart primary fat32 8192s 83894271s
(parted) mkpart extended 83894272s 293609471s
(parted) mkpart primary ext4 1073741824s 1610612735s
(parted) mkpart primary ext4 1610612736s 1621098495s
(parted) mkpart logical ext4 83896320s 85993471s
(parted) mkpart logical linux-swap 88092672s 92286975s
(parted) q
# możemy zobaczyć poleceniem
sudo fdisk -l /dev/loopX
# i zobaczymy że parted daje jakiś dziwny typ na extended więc
sudo fdisk /dev/loopX # wchodzimy do urządzenia
Command (m for help): t # zmieniamy typ
Partition number (1-3,5,6, default 6): 3
Hex code or alias (type L to list all): 05
Command (m for help): w
```