class="mediawiki ltr ns-0 ns-subject page-Partizioni_N800
Da Base Informatica Wiki.

Indice

Partizionare le memorie MMC con il Nokia N800

ATTENZIONE: Partizionare le MMC card significa distruggere il contenuto di tali memorie, si consiglia un backup prima di procedere.

Esiste un po di confusione su come vengono chiamate le memorie MMC dal sistema operativo usato dal Nokia N800/N810, di seguito un chiarimento:

  • il device della memoria esterna si chiama /dev/mmcblk1 montato su /media/mmc1
  • il device della memoria interna si chiama /dev/mmcblk0 montato su /media/mmc2

Inoltre bisogna avere accesso come root per procedere.

Creare la tabella delle partizioni

Smontare inizialmente i device interessati, usare il comando seguente sostituendo PUNTO_MONTAGGIO con il device interessato e ripetere l'operazione per l'eventuale altro device.

umount PUNTO_MONTAGGIO

Si usa in seguito il seguente comando per creare la tabella delle partizioni che poi andranno formattate, sostituendo DEVICE con il device della memoria da formattare :

sfdisk DEVICE

Verranno elencate le possibili 4 partizioni che possono essere create sulla memoria, dalla prima /dev/mmcblk0p1 alla quarta /dev/mmcblk0p4 una dopo l'altra. Per ogni partizione bisogna specificare:

Blocco_iniziale,Blocco_finale,Tipo_partizione 

Blocco_iniziale = s'intende il blocco dove comincia la partizione, per esempio la prima partizione parte dal blocco 1, la seconda dall'ultimo blocco della prima più uno, la terza dall'ultimo blocco della seconda più uno e cosi anche per la quarta.

Blocco_finale = determina la dimensione della partizione. Le dimensioni vengono specificate in blocchi da 32k, per sapere quanti blocchi sono contenuti nella dimensione scelta per la partizione, bisogna dividerla per 32k per un calcolo approssimato, ad esempio:

100M sono circa 100000K quindi 100000K diviso 32K = 3125 blocchi, se vogliamo una partizione di 100M scriveremo a posto di Blocco_finale, 3125.

Tipo_partizione = s'intende un codice che identifica il tipo di filesystem che vogliamo assegnare alla partizione, si trovano qui

Le partizioni FAT16 hanno come Tipo_partizione "06" e vengono spesso usate per le memorie di dimensione inferiore al 2G, per quelle più grandi si usa FAT32 LBA che si specifica "0c" al posto di Tipo_partizione, se scegliamo di creare una partizione di tipo "ext" si consiglia "ext2" in quanto non danneggia le memorie come potrebbe fare un tipo "ext3" compreso di journaling, il quale ha bisogno di scrivere spesso sulla memoria per tale scopo, per "ext" il codice è "83".

Per rendere la partizione avviabile si aggiunge ",*" dopo Tipo_partizione

Per assegnare il restante spazio a una partizione bisogna lasciare vuoto lo spazio Blocco_finale:

Blocco_iniziale,,Tipo_partizione 

Esempio di 2 partizioni di 4G l'una su una memoria di 8G, una di tipo ext2 avviabile e l'altra FAT32 LBA

sfdisk /dev/mmcblk1
[INVIO]
/dev/mmcblk1p1 :1,125000,83,*
[INVIO]
/dev/mmcblk1p2 :125001,,0c
[INVIO]
/dev/mmcblk1p3 :
[lasciare vuoto e INVIO]
/dev/mmcblk1p4 :
[lasciare vuoto e INVIO]

Per salvare e uscire scrivere "y" e INVIO.

Formattare le partizioni

Per le partizioni "ext" dobbiamo aver installato e2fsprogs, se così non fosse accertiamoci di aver inserito il repository giusto per tale pacchetto e diamo il comando:

apt-get install e2fsprogs

Di seguito i comandi per formattare, sostituite PARTIZIONE con la partizione interessata:

per formattare una partizione FAT16:

mkfs.msdos -F16 PARTIZIONE

per formattare una partizione FAT32 LBA:

mkfs.vfat PARTIZIONE

per formattare una partizione ext2:

mkfs.ext2 PARTIZIONE

Esempio, formattiamo le partizioni create nella tabella delle partizioni

Formatto la partizione di tipo ext2 avviabile e riavvio il sistema:

mkfs.ext2 /dev/mmcblk1p1
shutdown -r now

Formatto la partizione di tipo FAT32 LBA e riavvio il sistema:

mkfs.vfat /dev/mmcblk1p2
shutdown -r now

Montare automaticamente le partizioni create

Per quanto riguarda le "p1" (partizioni n°1), esse vengono montate automaticamente sotto le directory /media/mmc1 e /media/mmc2 per le altre dobbiamo creare il punto di montaggio e modificare gli script /usr/sbin/osso-mmc-mount.sh e /usr/sbin/osso-mmc-umount.sh. Questi due script hanno il compito di montare automaticamente le due memorie, sia interna che esterna, ma non montano automaticamente le partizioni oltre la prima. Il senso della modifica è far eseguire allo script ulteriori comandi per montare le altre partizioni al riconoscimento automatico della prima. per fargli eseguire questo compito dobbiamo modificare tali script in questo modo:

creiamo il punto di montaggio delle partizioni "p2" sostituendo NOME_PUNTOM con il nome del punto di montaggio che si vuol creare, ripetere il comando per i punti di montaggio da assegnare a "p3" o "p4" dove è necessario:

mkdir /media/NOME_PUNTOM

modifica del file /usr/sbin/osso-mmc-mount.sh

Editiamo il file /usr/sbin/osso-mmc-mount.sh:

nano /usr/sbin/osso-mmc-mount.sh

Aggiungiamo prima di :

exit $RC

sostituendo:

  • DEVICE_P1 con il device della partizione "p1"
  • PUNTO_MONTAGGIO_P1 con il punto di montaggio della partizione "p1"
  • DEVICE_P2 con il device della partizione "p2"
  • PUNTO_MONTAGGIO_P2 con il punto di montaggio della partizione "p2"
  • DEVICE_P3 con il device della partizione "p3"
  • PUNTO_MONTAGGIO_P3 con il punto di montaggio della partizione "p3"
  • DEVICE_P4 con il device della partizione "p4"
  • PUNTO_MONTAGGIO_P4 con il punto di montaggio della partizione "p4"

per un filesystem di tipo FAT inseriamo le seguenti righe di codice, inserite solo le righe delle partizioni che vi interessano (se non dovete far caricare automaticamente le partizioni "p3" e "p4" potete omettere completamente le righe di tali partizioni):

if [ $PDEV = DEVICE_P1 ] && [ $MP = PUNTO_MONTAGGIO_P1 ]; then
       mount -t vfat -o rw,noauto,nodev,noexec,nosuid,utf8,uid=29999 DEVICE_P2 PUNTO_MONTAGGIO_P2
       mount -t vfat -o rw,noauto,nodev,noexec,nosuid,utf8,uid=29999 DEVICE_P3 PUNTO_MONTAGGIO_P3
       mount -t vfat -o rw,noauto,nodev,noexec,nosuid,utf8,uid=29999 DEVICE_P4 PUNTO_MONTAGGIO_P4
fi

per un filesystem di tipo ext2 inseriamo le seguenti righe di codice, sostituendo con gli stessi criteri elencati in precedenza e omettendo le righe delle partizioni che non sono interessate:

if [ $PDEV = DEVICE_P1 ] && [ $MP = PUNTO_MONTAGGIO_P1 ]; then
       mount -t ext2 -o noatime DEVICE_P2 PUNTO_MONTAGGIO_P2
       mount -t ext2 -o noatime DEVICE_P3 PUNTO_MONTAGGIO_P3
       mount -t ext2 -o noatime DEVICE_P4 PUNTO_MONTAGGIO_P4
fi

per un filesystem di tipo ext3 inseriamo le seguenti righe di codice, sostituendo con gli stessi criteri elencati in precedenza e omettendo le righe delle partizioni che non sono interessate:

if [ $PDEV = DEVICE_P1 ] && [ $MP = PUNTO_MONTAGGIO_P1 ]; then
  KERNEL_VERSION=`uname -r`
  if install_module $KERNEL_VERSION mbcache; then
    if install_module $KERNEL_VERSION jbd; then
      if install_module $KERNEL_VERSION ext3; then
        mount -t ext3 -o noatime,data=writeback DEVICE_P2 PUNTO_MONTAGGIO_P2
        mount -t ext3 -o noatime,data=writeback DEVICE_P3 PUNTO_MONTAGGIO_P3
        mount -t ext3 -o noatime,data=writeback DEVICE_P4 PUNTO_MONTAGGIO_P4
      fi
    fi
  fi
fi


Esempio: editare il file /usr/sbin/osso-mmc-mount.sh per aggiungere il filesystem di tipo FAT32 LBA

creo il seguente punto di montaggio:

mkdir /media/mmc1p2

edito /usr/sbin/osso-mmc-mount.sh:

nano /usr/sbin/osso-mmc-mount.sh

aggiungo prima di:

 exit $RC

le seguenti linee:

if [ $PDEV = /dev/mmcblk1p1 ] && [ $MP = /media/mmc1 ]; then
	mount -t vfat -o rw,noauto,nodev,noexec,nosuid,utf8,uid=29999 /dev/mmcblk1p2 /media/mmc1p2
fi

salvo e esco.

modifica del file /usr/sbin/osso-mmc-umount.sh

Editiamo il file /usr/sbin/osso-mmc-umount.sh:

nano /usr/sbin/osso-mmc-umount.sh

aggiungiamo prima di :

else

sostituendo:

  • PUNTO_MONTAGGIO_P1 con il punto di montaggio della partizione "p1"
  • PUNTO_MONTAGGIO_P2 con il punto di montaggio della partizione "p2"
  • PUNTO_MONTAGGIO_P3 con il punto di montaggio della partizione "p3"
  • PUNTO_MONTAGGIO_P4 con il punto di montaggio della partizione "p4"

le seguenti righe inserendo solo quelle delle partizioni interessate:

if [ $MP = PUNTO_MONTAGGIO_P1 ]; then
umount PUNTO_MONTAGGIO_P2 2> /dev/null
umount PUNTO_MONTAGGIO_P3 2> /dev/null
umount PUNTO_MONTAGGIO_P4 2> /dev/null
fi

Esempio, editare il file /usr/sbin/osso-mmc-umount.sh per smontare automaticamente i filesytem

Edito il file /usr/sbin/osso-mmc-umount.sh:

nano /usr/sbin/osso-mmc-umount.sh

aggiungo prima di:

else

le seguenti linee di codice:

if [ $MP = /media/mmc1 ]; then
umount /media/mmc1p2 2> /dev/null
fi

salvo e riavvio il dispositivo.

Creato da Chris.

Strumenti personali