Bizonyára sok N900 tulajdonos fejében megfordult már, hogy miért áll csak 2GB rendelkezésre az alkalmazások számára, hiszen ez sokszor nem elég. Amennyiben az alkalmazásokat úgy konfiguráljuk, hogy azok a MyDocs partícióból is használjanak területet, akkor még a készülék funkcionalitásából is veszítünk (nem használhatjuk azt mass storage módban). Következzen egy olyan leírás, amely lépésről lépésre bemutatja, hogyan tudjuk átszabni a beépített 32GB-os tárhelyet, mindenféle adatvesztés nélkül. (A cikk megértéséhez haladó szintű informatikai ismeretek szükségesek!)

Mindenekelőtt szükségünk lesz egy legalább 2GB szabad területtel rendelkező microSD memóriakártyára, és a PC-re feltelepített WinSCP programra. Saját dolgunk megkönnyítése érdekében telepítsük és konfiguráljuk be a PuTTY segédprogramot WinSCP alatt, valamint frissítsük telefonunk szoftverét legalább PR1.2 -re.

Első lépésként csatlakoztassuk a készüléket adatkábellel mass storage módot választva a számítógépünkhöz, majd innen minden adatról csináljunk másolatot számítógépünkre, ugyanis ez a tartalom a folyamat során elvész, és utólag vissza kell majd másolnunk.

Második lépésként a microSD kártyán tárolt adatokról is csináljunk mentést (amennyiben van) majd formázzuk le a memóriakártyát ex3fs fájlrendszerre. (Windows alatt egy ingyenes program innen tölthető le) Amennyiben a memóriakártyánk már eleve ext3 fájlrendszert tartalmaz, tartalmától az egyszerűség kedvéért szabaduljunk meg a folyamat alatt. Alternatív megoldásként létrehozhatunk egy üres ext3fs partíciót, de ez esetben ügyeljünk rá, hogy a mmcblk1p1 helyett mmcblk1pX -et használjunk, ahol az ‘X’ a partíció megfelelő sorszámára utal.

Harmadik lépésként válasszuk le a készüléket a PC-ről, majd parancssoron keresztül végezzük el a mountolásokat: a memóriakártyát fel, a MyDocs -ot pedig le a rendszerről

mount /dev/mmcblk1p1 /mnt
umount /home/user/MyDocs

Negyedik lépésként másoljuk kompletten a /home/ mappa tartalmát az újonnan felmountolt meghajtóra. Ez el fog tartani egy ideig.

cp -a /home/* /mnt

Következő lépésben nyissuk meg szerkesztésre a /usr/lib/genfstab.awk fájlt és kommenteljük ki (# sor elejére) az alábbi kódsorokat a fájlban:

start == 1 && $6 == 83 && !__home {
printf "%s /home ext3 %s 0 0\n", $1, home_opts
printf "/home/opt /opt none bind\n"
__home++
}

start == 1 && $6 == "c" && !__fat {
printf "%s /home/user/MyDocs vfat %s 0 0\n", $1, fat_opts
__fat++
}

Ezáltal biztosítottuk, hogy indításkor ne mountolja be a rendszer a beépített tárolóról a /home és a /home/user/MyDocs partíciókat. Helyette viszont a memóriakártyát kell használni /home partíciónak, ehhez nyissuk meg szerkesztésre a /etc/event.d/rcS-late fájlt, keressük ki azt a sort ami a “-f /usr/lib/genfstab.awk > $tmp_fstab” kódrészletet tartalmazza, majd utána illesszük be a fájlba az alábbi kódsorokat:

echo "/dev/mmcblk1p1 /home ext3 rw,noatime,errors=continue,commit=1,data=writeback 0 0" >> $tmp_fstab
echo "/home/opt /opt none bind" >> $tmp_fstab

ezáltal biztosítottuk, hogy következő indításkor a beépített memória helyett a memóriakártyáról mountolja a rendszer a /home meghajtót, és ne keresse és mountolja be a /home/user/MyDocs meghajtót, ezáltal a beépített memória szabad marad a kézi partícionálásra. Indítsuk újra a készüléket. (Figyelem! Amennyiben eddig bármelyik lépést hibásan végeztük el, bekapcsoláskor egy darab téglát fogunk a kezünkben tartani, nem pedig egy működőképes N900-at! Ha a rendszer folyamatosan újraindul, akkor egyértelmű: csak a reflash segíthet!)

Míg a rendszer újraindul, készítsük el az új partíciós tábla adatait. Hozzunk létre valahol gépünkön egy új fájlt (lehetőleg kiterjesztés nélkül), amit én a leírásban egyszerűen “new_pt_table” -nek fogok nevezni.

A fájl első sora mindenféleképpen a “unit: sectors” kódsort tartalmazza. A következő (minimum) 4 sor pedig egy táblázat-szerű elrendezést követel meg, az értékek a következőek:

/dev/[eszköznév][partíció sorszáma];  START=[LBA szektorszám];  SIZE=[méret szektorban megadva];  ID=[partíció típusa]

Az első START érték kompatibilitási okokból a 64.-ik LBA szektorra mutasson. A következő sorokban a START érékéhez adjuk hozzá a SIZE értékét, így tudjuk megmondani, hogy a következő partíció melyik LBA szektortól kezdődjön. ID-k az alábbiak lehetnek: “c” (0C) jelöli a FAT32 partíciót; 83 (83) jelöli az ext3fs partíciót; 82 (82) jelöli a linux/swap partíciót.

Amennyiben nem értük el a minimális 4 sort, hozzuk létre akkor is a mezőket és töltsük fel őket nulla értékekkel!

Fontos: a partíció mérete (SIZE értéke) mindig osztható legyen 32KB-tal! Mivel a partíció méretét szektorban adjuk meg, de mi byte-tal számolunk, ezért átváltáskor ne feledjük, hogy 1 szektor = 512 byte.

Mintafájl, amely 1280MB SWAP, 6656MB /home és ~23GB /home/user/MyDocs partíciókat ír elő:
unit: sectors
/dev/mmcblk0p1 : start= 64, size= 46145536, Id=c
/dev/mmcblk0p2 : start= 46145600, size= 13631488, Id=83
/dev/mmcblk0p3 : start= 59777088, size= 2621440, Id=82
/dev/mmcblk0p4 : start= 0, size= 0, Id= 0

Megj.: 1280MB SWAP partícióra semmi szükség, a gyári 768MB érték is bőven elegendő.
tipp: a jelenlegi partíciós táblát a “sfdisk -d /dev/mmcblk0 > old_pt_table” paranccsal menthetjük le

Másoljuk fel a fájlt az N900-ra, majd az alábbi paranccsal írjuk fel az új partíciós táblát (ne feledjük hogy ha a parancs kiadásakor a fájlnév útvonala eltér, úgy azt is adjuk meg):

sfdisk --no-reread /dev/mmcblk0 < new_pt_table

Majd egy újabb újraindítás következik.

Újraindítás után a “df” paranccsal ellenőrizzük, hogy a /home/user/MyDocs meghajtót a rendszer nem mountolta-e fel. Ha ez mégis megtörtént, válasszuk le.

umount /home/user/MyDocs

Majd egyesével formázzuk le az új partíciókat…

mkfs.vfat -F32 -s64 /dev/mmcblk0p1
mkfs.ext3 /dev/mmcblk0p2
mkswap /dev/mmcblk0p3

… és mountoljuk fel őket:

swapon /dev/mmcblk0p3
mount /dev/mmcblk0p2 /mnt

Másoljuk vissza a memóriakártyáról a belső memóriára a /home meghajtó tartalmát (ez ismételten el fog tartani egy ideig):

cp -a /home/* /mnt

Utolsó lépésekként pedig nyissuk meg újra az /usr/lib/genfstab.awk fájlt, és távolítsuk el a korábban beírt # szimbólumokat a sorok elejéről, és a /etc/event.d/rcS-late fájlból is töröljük ki a cikk elején beírt extra 2 sort.

Ezután indítsuk újra a készüléket, majd adatkábellel másoljuk vissza a MyDocs tartalmát.

Ha mindent jól csináltunk, akkor minden adatunk megmaradt, és egy nagyobb /home partíció fogad bennünket értelemszerűen a MyDocs kárára.

u.i.: mass storage módban csak akkor fogjuk ismételten látni a memóriakártyát, ha azt készülékünk segítségével megformázzuk, és kézzel csatlakoztatjuk:

mount /dev/mmcblk1p1 /media/mmc1

Referenciaanyagok:

wiki.maemo.org

talk.maemo.org