1 (edytowany przez Cezary 2018-08-02 22:05:25)

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

W czym jest problem?

Mam 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. 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 oczywiście 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.