pdisk: breve storia ed utilizzo

shell.pngUn concetto molto importante dell'informatica moderna è quello di "partizione".
Grazie alla procedura di partizionamento è possibile separare un disco rigido (od equivalente dispositivo, per esempio una memoria flash o addirittura un'immagine disco) in una serie di partizioni indipendenti, viste dal sistema operativo quasi come dischi a sé stanti.
Uno dei vantaggi principali di partizionare un disco è quello di poterci installare più sistemi operativi in contemporanea senza che uno interferisca con l'altro.

La Apple ha per anni usato un suo proprio schema di partizionamento, differente da quello comunemente utilizzato sui PC della concorrenza (ovvero l'MS-DOS Partition Scheme): l'Apple Partition Scheme (lo so: il nome non è molto originale… :D).
In seguito, con l'introduzione dei Mac basati su processori della Intel, si passò allo schema di partizionamento GUID, che meglio si integra con l'EFI, ma l'Apple Partition Table rimane comunque utilizzabile ed è anche possibile avviare questi nuovi Mac da dischi partizionati in questo modo (anche se Apple ufficialmente dice che non lo è!).

Lo scopo di questo articolo è capire le principali differenze rispetto all'MS-DOS Partition Scheme ed il funzionamento dell'utility principale per la sua manipolazione, pdisk, nonché quello di spiegare brevemente la storia di questo programma…

Fino a metà anni '90 sui Mac era possibile avviare essenzialmente due sistemi operativi: il Mac OS "classico" e A/UX, utilizzato da Apple in ambito server.
Con così poche variabili da considerare, la questione del partizionamento si risolse facilmente con una serie di utility relativamente facili da utilizzare, che prendevano in considerazione pochi fattori e svolgevano il loro lavoro egregiamente, la più famosa delle quali è indubbiamente Drive Setup, ancora utilizzata fino a Mac OS 9.

Nel 1995, però, Apple, in collaborazione con la Open Software Foundation (ora Open Group), diede avvio ad un progetto che si proponeva di portare il sistema operativo Linux sui nuovi Mac, che montavano processori PowerPC, considerando i possibili futuri sviluppi positivi dell'operazione (per esempio speravano di poter presto utilizzare Linux in campo server, dato che A/UX sarebbe stato troppo difficile da portare ai PPC e che non erano per niente soddisfatti dei sistemi UNIX che compravano da IBM ed altri).
Nota: questo progetto, chiamato MkLinux, aveva alcune peculiarità rispetto alla maggior parte delle implementazioni di Linux. Dato che ciò è irrilevante per questo articolo, non ne parlerò.

Durante questo porting si ripropose il problema del partizionamento: la mancanza di uno strumento in grado di operare in modo preciso e chiaro sulla struttura della mappa delle partizioni stava diventando frustante, così, alla fine del '96, Eryk Vershen, uno degli sviluppatori del progetto, creò tale strumento, chiamandolo pdisk.
pdisk venne originariamente creato per MkLinux e portato anche sul Mac OS Classico l'anno successivo. Anche se esulava dallo scopo originario del programma, venne creata una versione in grado di girare sui Mac con processori m68k.

pdisk ebbe subito successo: finalmente esisteva uno strumento chiaro e preciso per manipolare la mappa di partizioni Apple, indipendentemente dall'architettura del processore, dall'interfaccia grafica o dal sistema operativo.
Dalla versione 0.3 del programma venne creato mac-fdisk, usato tutt'ora su molte distribuzioni Linux per PowerPC e quando Apple diede inizio al progetto Rhapsody (da cui deriva l'attuale Mac OS X) sembrò naturale eseguire l'adattamento di pdisk, rendendolo in grado di girare anche su questo sistema operativo.

Attualmente, quindi, ci sono tre versioni di pdisk: quella originale, mantenuta da Eryk Vershen, in grado di girare su Linux e su Mac OS Classico, impiegata nelle versioni PPC di distribuzioni come OpenSuse e, se ricordo bene, Fedora Core, che, purtroppo, sembra abbandonata dal 2000, quella impiegata da Apple in Mac OS X, derivante direttamente da quella per Rhapsody, che si è un po' differenziata nell'uso dall'originale, e quella mantenuta dal progetto Debian e utilizzata anche in altre distribuzioni, quali Gentoo o Slackintosh, rinominata in mac-fdisk.

Qualunque versione utilizziate, la sintassi di base è praticamente identica. Una delle differenze che si possono notare tra l'attuale versione Apple e le altre è che questa si avvia automaticamente in modalità "interattiva" se non si specifica nessun parametro, come se venisse lanciata col comando pdisk -i. In questa modalità il programma opera in modo interattivo, cercando di trovare automaticamente i dispositivi partizionati con la Apple Partition Table. Anche la versione per Mac OS Classico si comporta in questo modo.

Ci sono quindi due modi per lanciare pdisk (o mac-fdisk. D'ora in poi, se non sarà necessario fare altrimenti, mi riferirò come "pdisk" ad entrambi): col comando pdisk /path/del/dispositivo o in modalità interattiva.
Il path del dispositivo (che può anche essere un file, come nel caso di alcune immagini disco!) cambia a seconda del computer utilizzato e del sistema operativo avviato.
per esempio si potrà accedere al disco rigido principale di un computer con avviato OS X specificando il percorso /dev/disk0, mentre su Linux lo stesso disco potrebbe essere /dev/sda o /dev/hda, a seconda del modo in cui tale disco è collegato al computer (pare che la convenzione per cui i dischi ide vengono attualmente listati come /dev/hdx stia per scomparire, a breve potrebbero venire anch'essi considerati come /dev/sdx).

Se non siete sicuri di quale sia il disco che volete modificare potete entrare in modalità interattiva, usando il comando pdisk -i (o anche, se usate Mac OS, X o Classico che sia, avviando pdisk senza nessun parametro).

pdisk accetta come "comandi" delle lettere, seguite, ovviamente, da un invio. Per esempio se si è nella modalità interattiva l'inserimento della lettera L (maiuscola!) fa stampare la mappa di partizionamento di tutti i dispositivi automaticamente riconosciuti dal programma:
iBooky:~ jack$ sudo pdisk
Password:
Top level command (? for help): L

Partition map (with 512 byte blocks) on '/dev/rdisk0'
#: type name length base ( size )
1: Apple_partition_map Apple 63 @ 1
2: Apple_HFS Apple_HFS_Untitled_1 144442072 @ 11859400 ( 68.9G)
3: Apple_Bootstrap Boot 9766 @ 64 ( 4.8M)
4: Apple_UNIX_SVR2 swap 500001 @ 9830 (244.1M)
5: Apple_UNIX_SVR2 Linux 11349569 @ 509831 ( 5.4G)
6: Apple_Free Extra 16 @ 156301472

Device block size=512, Number of Blocks=156301488 (74.5G)
DeviceType=0x0, DeviceId=0x0

Per prima cosa notate come abbia avviato il comando usando sudo: senza i permessi di root non sarei stato in grado nemmeno di visualizzare la tabella di partizionamento. Ciò non è sempre necessario (per esempio potete tranquillamente modificare un'immagine disco che vi appartiene senza essere necessariamente root) e varia da un sistema operativo all'altro.

Passiamo ora ad esaminare il resto dell'ouput…

Partition map (with 512 byte blocks) on '/dev/rdisk0': La mappa di partizionamento è posta sul dispositivo "/dev/rdisk0" e ogni blocco è grande 512 bytes.

Poco dopo sono listate le partizioni presenti su ogni disco ordinandole per numero (che si rifletterà poi sulla lista dei dispositivi. Per esempio la terza partizione del primo disco verrà identificata da /dev/disk0s3), tipo, nome, lunghezza e base.

Una cosa importante da comprendere è che il "tipo" è, in effetti, una pura convenzione, non influisce minimamente sulle possibilità di un successivo partizionamento. Una cosa che i più esperti noteranno è che manca il concetto di partizioni "estese" e "primarie": in effetti non esiste proprio, si può avere un numero enorme di partizioni, tutte trattate allo stesso modo (anche se, in realtà, pare che Linux abbia problemi a gestire più di 16 partizioni poste sullo stesso disco).

Il "nome" può essere uno qualunque ed è definibile dall'utente, ma non può contenere spazi o altri caratteri "particolari", tipo le lettere accentate.

La "lunghezza" (length) è la dimensione in blocchi della partizione.

La "base" è il primo blocco usato dalla partizione.

La "dimensione" (size) è la lunghezza della partizione in bytes. In pratica è un duplicato di "lenght", ma è comoda in quanto permette all'utente di farsi un'idea della reale dimensione di ogni partizione.

Alcune versioni di mac-fdisk hanno anche un ultimo campo, "system", che facilita ulteriormente l'utilizzo del programma.

1: Apple_partition_map Apple 63 @ 1
Questa è la prima partizione presente sul mio disco rigido. Come si può dedurre dal nome, essa è la mappa di partizionamento vera e propria, in cui sono contenute le informazioni sul partizionamento del disco. È lunga 63 blocchi e comincia dal primo.

2: Apple_HFS Apple_HFS_Untitled_1 144442072 @ 11859400 ( 68.9G)
Questa è la mia partizione di OS X. Essa è stata poi formattata in Mac OS Esteso Journaled (vedi questo mio post per ulteriori informazioni in proposito), perché Mac OS X la monti dev'essere di tipo Apple_HFS, se non lo fosse verrebbe ignorata dal sistema (che andrebbe in Kernel Panic durante la procedura di avvio). Come potete vedere, non parte dal blocco 64, come sembrerebbe logico: pdisk ordina le partizioni per "data di creazione" e questa è la partizione più vecchia che ho su questo disco, avendo creato e cancellato altre partizioni in passato, e, di conseguenza, viene "vista" come seconda partizione anche se è al fondo del disco. pdisk può anche riordinare le partizioni, ma, dato che non vedo nessun vantaggio pratico, non l'ho mai fatto.
Il nome è stato impostato automaticamente da Utility Disco.

3: Apple_Bootstrap Boot 9766 @ 64 ( 4.8M)
Questa partizione, detta Apple Bootstrap, contiene il bootloader Yaboot, usato per avviare Linux in modo semplice. È, in effetti, una partizione HFS e se cambiassi il tipo in "Apple_HFS" essa verrebbe attivata normalmente da OS X. Al momento tale partizione è utilizzata nelle più comuni distribuzioni di Linux principalmente per due motivi:
1) Avere una partizione HFS permette di avviare Linux avviando mentre si tiene premuto il tasto Opzione e scegliendo questa partizione;
2) Alcune vecchie versioni di Mac OS Classico creavano problemi alla partizione quando essa veniva vista normalmente dal sistema.
Il nome "Apple_Bootstrap" deriva dal fatto che la versione di Open Firmware installata sui Mac riconosce automaticamente come potenzialmente avviabili solo le partizioni che hanno come tipo "Apple_qualcosa".
La dimensione di circa 5MB è quella automaticamente impostata da Ubuntu, in effetti sarebbe potuto anche essere più piccola.
Questa partizione parte dal blocco 64 perché esso era il primo libero quando è stata creata ed è stato scelto automaticamente dall'installer di Ubuntu. Se avessi creato la partizione manualmente avrei anche potuto specificare un diverso blocco di partenza (anche se, in questo caso, avrebbe avuto poco senso farlo…).

Il nome "boot" è completamente irrilevante. Nota bene: questa partizione è totalmente ignorata da un sistema Linux avviato, non viene montata come /boot (anche se è possibile montarla manualmente (anche su OS X) per modificare le impostazioni del bootloader senza passare per comandi tipo yabootconfig).

4: Apple_UNIX_SVR2 swap 500001 @ 9830 244.1M)
Questa è la partizione di swap di Linux.
Il tipo "Apple_UNIX_SVR2" è stato scelto perché storicamente i sistemi UNIX montati su mappe di partizionamento Apple utilizzano principalmente queste partizioni (tale tipo venne usato per la prima volta proprio da Apple, per il suo A/UX).

Il nome è, teoricamente, irrilevante, ma molti consigliano di impostarlo ugualmente a "swap", dato che alcuni installer (per esempio quello di Slackintosh) fanno affidamento sulla cosa.

5: Apple_UNIX_SVR2 Linux 11349569 @ 509831 ( 5.4G)
La partizione di Ubuntu. Se fosse stata Slackintosh si sarebbe chiamata "root", dato che il suo installer ha bisogno che si chiami così.

6: Apple_Free Extra 16 @ 156301472
Sono disponibili ben poche informazioni su questa partizione, apparentemente libera (e quindi di tipo "Apple_Free" e dal nome "Extra") ma non eliminabile o modificabile.
Da quello che ne so (ma potrei anche sbagliarmi) "chiude" la mappa di partizionamento.
Su alcuni dischi ci sono delle partizioni simili, a volte anche più grosse, tra una partizione e l'altra. Non dovrebbero esserci problemi, ma consiglio di non eliminarle.

Se il Mac fosse più vecchio, molto probabilmente avrei un be po' di partizioni di tipo "Apple_DriverQualcosa": sono gli aggiornamenti ai driver del disco, installati man mano che si aggiorna ad un sistema che ne contiene di nuovi.

Inserendo il comando e (dal verbo "to edit") ci verrà chiesto qual'è il dispositivo che vogliamo modificare:
Top level command (? for help): e
Name of device: /dev/rdisk0
Edit /dev/rdisk0 -
OK, siamo entrati in editing mode (avremmo potutto farlo, vi ricordo, anche direttamente dalla shell, tramite il comando pdisk /dev/rdisk0), se vogliamo rivedere la mappa di partizioni del dispositivo selezionato basterà inserire il comando p.

Immaginiamo di voler cambiare il tipo di partizione alla terza, in modo che venga montata automaticamente da OS X e di voler unificare le due partizioni dedicate a linux per creare una nuova partizione HFS+.
Il comando da usare, in questo caso, sarà d (delete, "cancella"…):
Command (? for help): d
The map is not writable.
Ebbene sì: OS X, a differenza di quanto avviene su Linux o Mac OS Classico, non permette di modificare la tabella di partizionamento di un disco montato. Potremo comunque effettuare cambiamenti, ma non applicarli veramente. Se volete modificare la mappa delle partizioni del vostro disco di avvio, quindi, non vi resta che avviare da un altro dispositivo. Anche il DVD di OS X va benissimo.

Dato che questo è solo un esempio, io procederò ugualmente:
Partition number: 3
Command (? for help): c
The map is not writable.
First block: 64
Length in blocks: 9766
Name of partition: Boot
il comando c crea una partizione del tipo predefinito (Apple_HFS), conC (maiuscolo) si potrà anche scegliere il tipo.
Inserendo p, ora sarà possibile osservare come il tipo della partizione sia cambiato da "Apple_Bootstrap" a "Apple_HFS". Al prossimo avvio del sistema questa partizione verrà automaticamente montata. Il nome "Boot" è sempre irrilevante, ma non c'era motivo di cambiarlo…

Il primo obiettivo è stato raggiunto, passiamo al secondo:
Command (? for help): d
The map is not writable.
Partition number: 4
Command (? for help): d
The map is not writable.
Partition number: 5
Ora ho cancellato le due partizioni da riunificare. Notate come siano state riunite automaticamente in quello che il Mac OS chiama "spazio libero":
Command (? for help): p

Partition map (with 512 byte blocks) on '/dev/rdisk0'
#: type name length base ( size )
1: Apple_partition_map Apple 63 @ 1
2: Apple_HFS Apple_HFS_Untitled_1 144442072 @ 11859400 ( 68.9G)
3: Apple_HFS Boot 9766 @ 64 ( 4.8M)
4: Apple_Free Extra 11849570 @ 9830 ( 5.7G)
5: Apple_Free Extra 16 @ 156301472

Procedere alla creazione della nuova partizione è ora alquanto ovvio:

Command (? for help): c
The map is not writable.
First block: 9830
Length in blocks: 11849570
Name of partition: Nuova
Command (? for help): p

Partition map (with 512 byte blocks) on '/dev/rdisk0'
#: type name length base ( size )
1: Apple_partition_map Apple 63 @ 1
2: Apple_HFS Apple_HFS_Untitled_1 144442072 @ 11859400 ( 68.9G)
3: Apple_HFS Boot 9766 @ 64 ( 4.8M)
4: Apple_HFS Nuova 11849570 @ 9830 ( 5.7G)
5: Apple_Free Extra 16 @ 156301472

Una cosa che potrebbe, in altri casi, tornarvi utile è sapere che quando chiede quanto volete lunga la partizione potete anche usare misure come i MB o i GB. per esempio rispondendo con "4G" si ottiene una partizione da 4 GB.

Per ora abbiamo finito, col comando w ("write"…) sarà possibile scrivere le modifiche sul disco (se fosse modificabile. Nel mio esempio non lo è, ma fingiamo che abbia avviato dal DVD di OS X…;)) e con q potremo uscire da pdisk.

A questo punto la cosa sembra fatta: abbiamo unificato le due partizioni in una nuova, di tipo HFS. Non è così.
Come ho già scritto più sopra, la mappa delle partizioni è completamente indipendente dalla formattazione delle stesse, se avessimo un ripensamento potremmo tranquillamente riaprire pdisk e separare nuovamente le partizioni, ritrovando tutti i dati posti sulle stesse.

Col comando
newfs_hfs -w /dev/disk0s4
formatteremo la partizione in HFS+, al prossimo avvio di OS X essa verrà montata normalmente (anzi, probabilmente già ora sarà disponibile in Utility Disco…).
L'opzione -w la consiglio in quanto rende la partizione utilizzabile anche da Mac OS 9, cosa che a volte torna utile.

Per oggi abbiamo finito, spero che questa specie di guida possa tornarvi utile per il futuro. :!

Breve nota: esistono altre due utility da linea di comando per editare le partizioni: pmac-fdisk, una versione "semplificata" di pdisk, mantenuta sempre da Debian, che, francamente, trovo meno chiara del pdisk normale, e GNU parted, che opera anche sulla formattazione delle partizioni, permettendo di ridimensionarle in modo non distruttivo (sebbene sia ancora una funzione non completamente implementata per quanto riguarda l'HFS+).
Pubblicato Sabato 28 Aprile 2007 - 19:35 (letto 6492 volte)
Comment Commenti (2) Print Stampa

avatarDa: scager Data: Lunedi 08 Aprile 2013 - 16:27

louboutin tory burch outlets

avatarDa: Shanquan43 Data: Venerdi 19 Aprile 2013 - 12:45

party dresses for women Bridal dresses



Le ultime notizie relative a questo argomento

Read Fermare i processi senza interromperli (14/01/2009 - 17:18) letto 6412 volte
Read pdisk: breve storia ed utilizzo (28/04/2007 - 19:35) letto 6492 volte

Tutte le notizie relative a questo argomento
shell.png

 
Calendario
Data: 26/04/2024
Ora: 23:31
« Aprile 2024 »
Lu Ma Me Gi Ve Sa Do
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
 
Utenti
Persone on-line:
admins 0 amministratori
users 0 utenti
guests 1 ospiti
 
Cerca