Copiare files da un'immagine disco su SD Card

Da raspibo.
Jump to navigation Jump to search


Prendiamo come esempio l'immagine del sistema operativo Raspbian, questo viene fornito da scompattare e trasferire direttamente sulla SD Card, una volta avviato il sistema, tramite opportuna utility (precaricata nel sistema) e` poi possibile espandere il file system per l'intera capienza della card utilizzata (che normalmente e` prassi averla piu` 'grande' dell'immagine), ma se non vennisse fornito il "tool" ?

Per prima cosa si deve analizzare l'immagine per verificare i punti di "montaggio" delle partizioni da eseguire successivamente.

Possiamo usare parted (sostituite "nomefileimmagine" con la vostra):

parted <nomefileimmagine>

comparira` a schermo il prompt dei comandi:

GNU Parted 2.3
Using <nomefileimmagine>
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

Cambiamo la visualizzazione in "byte", digitate "unit", poi "B", ed infine "print" per visualizzare le partizioni contenute nel file d'immagine, "q" per uscire, questo e` un'esempio:

GNU Parted 2.3
Using <nomefileimmagine>
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit
Unit?  [compact]? B
(parted) print
Model:  (file)
Disk <nomefileimmagine>: 1960837120B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start      End          Size         Type      File system  Flags
 1      1048576B   95420415B    94371840B    primary   fat16        lba
 2      95420416B  1877999615B  1782579200B  extended
 5      96468992B  1877999615B  1781530624B  logical   ext4

(parted) q

I numeri da memorizzare sono gli inizi delle partizioni: 1048576 per la partizione di "boot", 96468992 per quella del sistema operativo.


{nda: Sarebbe da completare con una guida al partizionamento}

Partizionate la vostra SD Card a vostro piacimento, un'esempio:

fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 7742 MB, 7742685184 bytes
4 heads, 16 sectors/track, 236288 cylinders, total 15122432 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
Disk identifier: 0x0002c262

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    15122431     7499776   83  Linux


Tutti i comandi successivi sono da eseguire come "root".

Montate le partizioni della vostra SD Card e quelle dell'immagine disco, per queste ultime, utilizzate i "numeri" ricavati in alto, se le directory destinazione non esistono dovrete crearle:

mount -o offset=1048576 <nomefileimmagine> /mnt/boot
mount -o offset=96468992 <nomefileimmagine> /mnt/sistema
mount /dev/mmcblk0p1 /mnt/SDCard/boot
mount /dev/mmcblk0p2 /mnt/SDCard/sistema

Adesso copiamo i files:

cp -avrx /mnt/boot/* /mnt/SDCard/boot/
cp -avrx /mnt/sistema/* /mnt/SDCard/sistema/

La copia della directory "boot" dara` errore sui permessi, ovviamente, perche` su un file system FAT32 non e` possibile (potreste togliere l'opzione "a").

Prima di smontare la SD Card, assicuratevi di correggere il parametro nel file "/boot/cmdline.txt", che punti alla giusta partizione di sistema.

Ora potete smontare (tutto) e testate la vostra SD Card.