1 (edytowany przez Cezary 2021-02-05 09:16:19)

Temat: [HOWTO] Resize partycji głównej dla x86 - online

W czym jest problem?

Mam (* miałem) Alixa w którym jest dysk 6GB. Niestety, po instalacji OpenWrt dostępne jest tylko 256MB pamięci stałej. Dlaczego? Ponieważ tak są zrobione domyślne obrazy OpenWrt. Marnuje się trochę przestrzeni...

Co więc można zrobić?

Można:
- utworzyć dodatkową partycję z reszty dysku i podmontować to przez /etc/config/fstab gdzieś w systemie
- samodzielnie skompilować OpenWrt ustawiając już odpowiednie wielkości dysku (co ma wadę bo jak mamy dysk innej pojemności to znów jest problem)
- rozszerzyć partycję systemową

I ta ostatnia opcja w moim przypadku najbardziej mnie interesuje. Oczywiście przed instalacją dysku w routerze można go podłączyć do zwykłego komputera, użyć gparted i graficznie zmienić rozmiar partycji. Ale niestety dysk mam już w routerze, niekoniecznie chce mi się go rozbierać, więc raczej chcę to zrobić już w samym urządzeniu.

Jak rozszerzyć partycję systemową online

Przede wszystkim... ostrożnie. Dlaczego? Bo trzeba zmienić rozmiar partycji, a najprościej zrobić to przez usunięcie i jej ponowne założenie w tym samym miejscu tylko większą. Więc jeżeli pomylimy się z cyferkami to możemy sobie coś w nim nadpisać.

Co będzie potrzebne?

W sumie tylko dostęp do internetu oraz dostęp do routera. I jeszcze jedno - rozwiązanie dotyczy tylko obrazów squashfs dla x86. W nich system plików jest na squashfs, a w /overlay montowana jest pozostała część partycji z wykorzystaniem systemu plików f2fs. Jeżeli ktoś wybrał system plików ext4 to ten poradnik nie jest dla niego.

Do dzieła!

1. Podłączamy kabel z internetem do routera, wykonujemy następujące polecenia:

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install fdisk f2fs-tools

Czyli aktualizujemy listę pakietów i instalujemy pakiety fdisk oraz f2fs-tools.
2. Uruchamiamy fdiska i wyświetlamy partycje:

root@OpenWrt:~# fdisk -l /dev/sda
Disk /dev/sda: 5.7 GiB, 6144284672 bytes, 12000556 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcb4f1a80

Device     Boot Start    End Sectors  Size Id Type
/dev/sda1  *      512  33279   32768   16M 83 Linux
/dev/sda2       33792 558079  524288  256M 83 Linux

root@OpenWrt:~# 

Dysk ma 5.7GB, utworzone są domyślnie dwie partycje: sda1 o rozmiarze 16MB (tam jest m.in. grub i kernel), tej partycji nie ruszamy oraz sda2 o rozmiarze 256MB która zawiera system plików. W moim przypadku druga partycja rozpoczyna się w sektorze 33792 (to ważne i trzeba to zapisać sobie na boku).
3. Usuwamy drugą partycję, zakładamy ją jeszcze raz od sektora 33792 do końca dysku:

root@OpenWrt:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.32).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): p

Disk /dev/sda: 5.7 GiB, 6144284672 bytes, 12000556 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcb4f1a80

Device     Boot Start   End Sectors Size Id Type
/dev/sda1  *      512 33279   32768  16M 83 Linux

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (33280-12000555, default 34816): 33792
Last sector, +sectors or +size{K,M,G,T,P} (33792-12000555, default 12000555): 

Created a new partition 2 of type 'Linux' and of size 5.7 GiB.
Partition #2 contains a squashfs signature.

Do you want to remove the signature? [Y]es/[N]o: N

Command (m for help): w

The partition table has been altered.
Syncing disks.

Command (m for help): p
Disk /dev/sda: 5.7 GiB, 6144284672 bytes, 12000556 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcb4f1a80

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1  *      512    33279    32768   16M 83 Linux
/dev/sda2       33792 12000555 11966764  5.7G 83 Linux

Command (m for help): q

root@OpenWrt:~# 

Przy tworzeniu drugiej partycji podałem dokładnie ten sam numer sektora (33792) w którym ona się rozpoczynała, nie taki jak fdisk proponuje, dzięki temu nadal są tam dane na właściwym miejscu.
Na samym końcu jeszcze raz wyświetliłem partycje, ostatnia ma już 5.7GB. Ale sam rozmiar partycji jeszcze nie oznacza że system plików też jest taki.
4. Restartujemy router:

root@OpenWrt:~# reboot

5. Niech się uruchomi normalnie. Sprawdzamy ile jest miejsca:

root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.8M      3.8M         0 100% /rom
tmpfs                   123.8M     52.0K    123.8M   0% /tmp
/dev/loop0              250.4M     14.5M    165.9M   8% /overlay
overlayfs:/overlay      250.4M     14.5M    165.9M   8% /
/dev/sda1                15.7M      2.3M     13.1M  15% /boot
/dev/sda1                15.7M      2.3M     13.1M  15% /boot
tmpfs                   512.0K         0    512.0K   0% /dev

Czyli całość nadal ma 250MB.
6. Czas na rozszerzenie systemu plików.
Czyścimy po prostu starą partycję

root@OpenWrt:~# umount /dev/loop0
root@OpenWrt:~# dd if=/dev/zero of=/dev/loop0

Po kilkudziesięciu sekundach można przerwać polecenie przez ctrl-c i restartujemy router:

root@OpenWrt:~# reboot

W starszych wydaniach istniała także alternatywna możliwość zmiany bez utraty danych (nie jest to już możliwe w obecnych wydaniach, chyba że wykona się resize w innym komputerze):
Przełączamy partycję /overlay w tryb tylko-do-odczytu i zmieniamy jej rozmiar:

root@OpenWrt:~# mount -o remount,ro /overlay
root@OpenWrt:~# resize.f2fs /dev/loop0
root@OpenWrt:~# reboot

Wypisze dość sporo komunikatów, później zrestartuje się router.
7. Po ponownym uruchomieniu sprawdzamy:

root@OpenWrt:/# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.8M      3.8M         0 100% /rom
tmpfs                   123.8M     56.0K    123.8M   0% /tmp
/dev/loop0                5.7G     49.9M      5.3G   1% /overlay
overlayfs:/overlay        5.7G     49.9M      5.3G   1% /
/dev/sda1                15.7M      2.3M     13.1M  15% /boot
/dev/sda1                15.7M      2.3M     13.1M  15% /boot
tmpfs                   512.0K         0    512.0K   0% /dev

Czyli mamy oczekiwane 5.7GB przestrzeni.

PS 1. Po zrobieniu upgrade być może  trzeba będzie to zrobić ponownie.
PS 2. Dobrze jest to zrobić na czystym systemie ew zatrzymać procesy które zapisują coś do flash (jakieś statystyki, dlna, samba, torrent itp).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

2

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Online i reboot? smile

3

Odp: [HOWTO] Resize partycji głównej dla x86 - online

bander napisał/a:

Online i reboot? smile

W sensie co? Nigdy nie rebootowałeś routera będąc zdalnie podłączonym?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Której wersji gotowego oficjalnego obrazu należy użyć do Alixa - generic czy legacy?
Mam problem z aktualizacją do 18.06 - grub startuje, restart przy próbie startu jądra.
Karta wydaje się sprawna, 15.01 wcześniej działało ok.
Czy dobrze widzę że na eko.one.pl nie ma gotowych obrazów x86?

5

Odp: [HOWTO] Resize partycji głównej dla x86 - online

geode przecież, nie generic czy legacy

Tak, ja nie buduję obrazów dla alixa, mam tylko dla x86/64

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Zrobiłem drobną aktualizację opisu. Nie wiem czemu pierwotnie chciałem to robić w falsafe. Jak ryzykować już taką operację to ryzykować, można to zrobić "na żywca".

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez smereka 2021-02-07 22:16:27)

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Cezary mam pytanie. Jest wsadzony pendrive do routera wndr4300 (twoje openwrt 18.06 bodajże) 256GB z jedną partycją ext4. Nie ma extroota po prostu magazyn danych i miejsce dla transmission. Zrobiłem na kompie klona po sektorowego na pena 512GB. Teraz pytanie jak bezpiecznie i czy w ogóle się da poszerzyć tą partycję o te dodatkowego 256GB?

8

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Np. programem gparted.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Na Twoim openwrt w tym wndr4300 da się żeby nie robić live CD?

10

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Nie. gparted jest samodzielnym program do uruchomienia z livecd/usb.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Czyli na openwrt nie poszerzę partycji żadnym z dostępnym nań pakietów?

12

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Da się, fdiskiem zmienisz dokładnie to masz w pierwszym poście w punkcie 3. Tyle że później resize2fs musisz zrobić.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Czyli jak dobrze rozumiem biore:

root@OpenWrt:~# fdisk /dev/sda

a następnie:


e   extended (container for logical partitions)

tak?

14

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Nie. Usuwasz partycję i natychmiast zakładasz ją z innym końcem. Dokładnie to jest w punkcie 3...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez smereka 2021-02-07 22:52:38)

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Ok. Ale danych z niej nie utracę?

16

Odp: [HOWTO] Resize partycji głównej dla x86 - online

No i to jest właśnie to ryzyko że się nie uda jak robisz ręcznie i nie wiesz co robisz.

gparted jest graficzny i raczej cię nie zawiedzie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Dziękuję. Jako że kopię mam to sobie przetestuję i jedną i drugą metodę w ramach doświadczenia :-)

18

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Mi to najwygodniej i najszybciej wychodzi z zewnętrznego live zaraz po wgraniu obrazu, czyli:

A. dd "if-of"

B. Wszystkie kroki z punktu 3 powyżej

C. resize2fs /dev/sd>litera i numer partycji

19

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Cezary napisał/a:

6. Czas na rozszerzenie systemu plików.
Czyścimy po prostu starą partycję

root@OpenWrt:~# umount /dev/loop0
root@OpenWrt:~# dd if=/dev/zero of=/dev/loop0

Po kilkudziesięciu sekundach można przerwać polecenie przez ctrl-c i restartujemy router:

root@OpenWrt:~# reboot

Cześć,
odświeżam temat...
teraz ten fabryczny rootfs jest jeszcze mniejszy - tylko ok 100M,
ktoś ćwiczył resize.f2fs z sukcesem?
jestem na etapie procedury jak wyżej a nie mam kabla do konsoli i się zawahałem...
partycję sda2 mam powiększoną, wygląda że nie da się  resize.f2fs na żywo bez utraty danych,
zatem dalej będzie reset ustawień i reinstalacja softu,
w innym wątku znalazłem sugestię że na tym etapie te pozostałe kroki załatwi firstboot, czy tak?
Efekt będzie taki że po firstboot będę miał filesystem powiększony do rozmiaru partycji pod spodem?

20

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Używasz moich obrazów? To w /root masz odpowiedni skrypt do tego.

https://openwrt.org/docs/guide-user/ins … partitions

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

21

Odp: [HOWTO] Resize partycji głównej dla x86 - online

hm..., to się dzieje na starym Alixie, nie mam ext4 tylko f2fs, resize2fs z tej instrukcji raczej nie zadziała
zatem teraz to czyszczenie poprzez dd if=/dev/zero of=/dev/loop0 czy firstboot załatwi sprawę?

root@OpenWrt:~# df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/root            squashfs        3.8M      3.8M         0 100% /rom
tmpfs                tmpfs         122.2M      3.4M    118.8M   3% /tmp
/dev/loop0           f2fs           98.3M     69.4M     29.0M  71% /overlay
overlayfs:/overlay   overlay        98.3M     69.4M     29.0M  71% /
/dev/sda1            ext4           15.7M      3.4M     12.0M  22% /boot
/dev/sda1            ext4           15.7M      3.4M     12.0M  22% /boot
tmpfs                tmpfs         512.0K         0    512.0K   0% /dev

root@OpenWrt:~# fdisk -l|grep dev
Disk /dev/loop0: 2 GiB, 2144141312 bytes, 4187776 sectors
Disk /dev/sda: 14.92 GiB, 16022200320 bytes, 31293360 sectors
/dev/sda1  *      512   33279   32768  16M 83 Linux
/dev/sda2       33792 4229119 4195328   2G 83 Linux 

22

Odp: [HOWTO] Resize partycji głównej dla x86 - online

w/w poradnik był przecież na f2fs. Więc zrób identycznie. Nie chcesz tak to zrób to wg wiki openwrt.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

23 (edytowany przez ambrozy5 2023-07-01 16:23:47)

Odp: [HOWTO] Resize partycji głównej dla x86 - online

jak działa skrypt resize-root.sh ?bezpieczne to ?

Dom : router https://i.imgur.com/IuB6Zwy.png | TP-LINK T1700G-28TQ |Zyxel XGS-1210-12 | Dynalink WRX-36 | cudy  ufo | 2x Bpi R4 wifi 7|zyxel gs1900-10hp | Truenas scale 124TB 25Gb| Xpenology 12TB | apc smart ups 750 lcd smile
Podróżne : GL.Inet MT3000  +1TB hdd

24

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Na 100% znajdzie się konfiguracja w której sobie nie poradzi i coś się zepsuje. Uruchom po prostu, jeżeli po reboocie wstanie i będzie miał całą dostępną przestrzeń to zadziałał.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

25

Odp: [HOWTO] Resize partycji głównej dla x86 - online

Cezary napisał/a:

Na 100% znajdzie się konfiguracja w której sobie nie poradzi i coś się zepsuje. Uruchom po prostu, jeżeli po reboocie wstanie i będzie miał całą dostępną przestrzeń to zadziałał.

udało się big_smile pen 16GB i pacjent gigabyte brix , teraz prawie 14GB wolnego . Dzięki!

Dom : router https://i.imgur.com/IuB6Zwy.png | TP-LINK T1700G-28TQ |Zyxel XGS-1210-12 | Dynalink WRX-36 | cudy  ufo | 2x Bpi R4 wifi 7|zyxel gs1900-10hp | Truenas scale 124TB 25Gb| Xpenology 12TB | apc smart ups 750 lcd smile
Podróżne : GL.Inet MT3000  +1TB hdd