MultiLiveUSB1


Com crear un MultiLiveUSB (amb SuperGrubDisk i emprant Grub Legacy)

Giorgio Grappa

Novembre, 2009

Agraïments

Agraeixo a adrian15, de Super Grub Disk, l'atenció que ha dedicat a aquest projecte, la informació que m'ha fet arribar i, molt especialment, la compilació i publicació de la versió 0.9799, gràcies a la qual és possible engegar distros instal·lades sobre particions lògiques.

Introducció

Des que van aparèixer els Live CD, hem tingut l'oportunitat de tastar distribucions abans d'instal·lar-les, i comprovar si reconeixien bé el nostre maquinari. A més a més, ben aviat van demostrar la seva utilitat com a base per a distros de suport i de rescat, substituint els disquets, amb la qual cosa ens poden oferir més eines, i més potents.

Després, van arribar els USB, petits per fora, però de capacitats cada vegada més grans, i la comunitat no va trigar gaire a trobar la manera d'"enganyar" les Live CD i instal·lar-les sobre els USB fent-les creure (i fent-les treballar) com si es trobessin sobre el seu suport original.

Ja fa temps que els USB tenen capacitat suficient per encabir-hi, no una, sinó un bon grapat d'imatges iso. El problema, però, era trobar una manera d'instal·lar-les-hi que ens permetés, en el moment d'arrencada, triar amb quina de totes les iso presents a la unitat volem treballar.

El sistema que us presento aquí aconsegueix, basant-se en l'ús de Super Grub Disk, mostrar un menú en el moment d'arrancar, menú que ens permetrà fer aquesta tria. A més a més, ha demostrat funcionar en qualsevol ordinador (que permeti arrancar des d'USB i hi estigui configurat), és a dir, no està restringit a la màquina on va ser creat.

Ara bé, el procediment es basa, a través de SGD, en l'ús de GRUB, i, ara que moltes distros han començat a emprar GRUB2, ens trobem en un període d'adaptació. De moment, i per evitar actuar precipitadament, he preferit oferir-vos la descripció del procediment emprant el Grub Legacy (el grub de tota la vida), cosa que ens obliga a fer un dels passos finals (i, precisament, un dels més importants) des d'una distro que tingui instal·lat GRUB en lloc de GRUB2.

Per tal de dur a terme el procediment de manera segura, caldria estar familiaritzat amb l'ús de les particions i amb la instal·lació de distros Live CD sobre USB amb eines com UNetBootIn o com USB-Creator. També seria un avantatge conèixer una mica la shell del Grub, però crec que no és imprescindible.

Requeriments del sistema

Per poder dur a terme el procés de creació d'un MultiLiveUSB, ens caldrà instal·lar, en cas de no tenir-los ja, els següents programes:

  • GParted o QParted, per crear i formatar les particions a la unitat USB;
  • USB-Creator, per instal·lar les distros de la família Ubuntu (potser també
    • funcioni amb les de la família Debian);
  • UNetBootIn, per instal·lar gairebé qualsevol distro.

Per als darrers passos (configuració de l'MBR amb el GRUB) cal treballar des d'un sistema que faci servir la versió Grub Legacy, no pas el Grub2. Probablement, també es podrà fer amb Grub2, però encara no he tingut temps d'estudiar-ne els canvis.

Procés de creació

Triar les iso a instal·lar

Hem de tenir en compte que la mida de cada partició haurà de ser una mica superior a la de la imatge iso que instal·larem. A més a més, és pràctic preveure, sobre tot per a algunes distros en particular, que versions posteriors poden ocupar més que la que tenim entre les mans en el moment de muntar la MultiLiveUSB, i calcular la mida de les particions de manera que, en el futur, no calgui tornar a particionar la unitat.

En primer lloc, instal·larem sempre la Super Grub Disk 0.9799, ja que és l'única de les treballen amb Grub Legacy que pot engegar distros instal·lades a les particions lògiques (les altres, només ho poden fer si es troben a una partició primària).

És bona idea incloure-hi una distro de rescat, de l'estil de la SystemRescueCD, i deixar la seva instal·lació per al final del procés. Penseu que, si no dueu a terme la manipulació de l'MBR, la unitat arrancarà des de la darrera partició instal·lada, i així us assegureu de disposar d'eines que us poden venir bé.

Particionar i formatar l'USB

Tant si ho fem amb una eina gràfica (GParted) o per consola, cal recordar que la partició per al Super Grub Disk haurà de ser la primera, i formatar-lar en ext2 o ext 3 (també hauria de funcionar amb FAT32 i similars, però no ho he comprovat personalment). En canvi, la resta de particions hauran d'anar en format FAT16 o FAT32: crec que són els únics formats amb què poden treballar els instal·ladors de les distros (UNetBootIn i USB-Creator).

Tenir en compte, a l'hora de decidir on situem cada distro, que els instal·ladors tipus Alternate no funcionaran des de particions lògiques: cal instal·lar-los en particions primàries.

És bona idea assignar a cada partició una etiqueta que en permeti reconèixer la distro que hi instal·larem.

Finalment, és recomanable, si tenim intenció de duplicar la unitat amb dd, no apurar-ne l'espai, sinó deixar un petit espai sense assignar després de la darrera partició (no tots els fabricants interpreten de la mateixa manera les unitats de capacitat: és fàcil trobar unitats que, amb la mateixa capacitat nominal, difereixen en alguns KB).

Instal·lar Super Grub Disk 0.9799

Comprovem si la primera partició de la unitat es troba muntada, i on, amb:

$ mount | grep ^/dev/sd
/dev/sdb1 on /media/sgd

Si no resulta que no està muntada, ho fem manualment; ens assegurem que existeix el punt de muntatge:

$ sudo mkdir /media/sgd

Després, la muntem:

$ sudo mount /dev/sdb1 /media/sgd

A continuació, i sempre amb privilegis d'administrador, descomprimirem el seu contingut al directori arrel de la partició:

$ sudo tar -xzf super_grub_disk_catala_usb_0.9799.tar.gz -C /media/sgd

Instal·lar les iso "normals"

Deixant per al final la distro de rescat (suposarem que es tracta de la SystemRescueCD 1.3.1, que porta Grub Legacy), procedirem a instal·lar la resta de distros elegides. Tindrem en compte que les de la família Ubuntu es comporten millor si les instal·lem amb l'instal·lador propi, USB-Creator; per a la resta de casos, farem servir UNetBootIn.

USB-Creator sol muntar les particions que detecta sobre els USB; en canvi, quan voldrem fer servir UNetBootIn, ens caldrà muntar les unitats per poder dur a terme les instal·lacions.

Instal·lar la distro de rescat

En darrer lloc, instal·larem SystemRescueCD o una distro de rescat que faci servir Grub Legacy, si el nostre sistema ja empra Grub2. Si és aquest el cas (si el nostre sistema empra Grub2 i la distro de rescat empra Grub Legacy), ara reiniciarem la màquina des de l'USB, de manera que s'engegarà la distro de rescat i podrem dur a terme els darrers passos amb el seu Grub; en cas contrari, si el nostre sistema encara empra Grub Legacy, continuarem treballant sense reinciar.

Modificar menu.lst

Ara afegirem al fitxer /boot/grub/menu.lst del Super Grub Disk les línies necessàries perquè visualitzi, en arrancar, les entrades de menú que ens permetran accedir a les diferents distros. En primer lloc, ens assegurarem que la partició de SGB està muntada (suposarem que a /media/sgd).

Després, editarem el fitxer /media/sdg/boot/grub/menu.lst per afegir-hi grups de tres línies com les següents:

title Nom de la distro
rootnoverify ($(grub_drive),X)
chainloader +1

per a cada distro instal·lada, on X és el número de la partició en notació del GRUB (0, 1, 2...). Si, per exemple, hem instal·lat les següents distros en les següents particions de la unitat:

  • a /dev/sdb1, Super Grub Disk;

  • a /dev/sdb2, SystemRescueCD;

  • a /dev/sdb3, Ubuntu 9.10 Karmic Koala Catalan Remix;

  • a /dev/sdb5 (primera partició lògica), Kubuntu 9.10 Catalan Remix,

afegirem les següents línies al menu.lst:

title SystemRescueCD 1.3.1
rootnoverify ($(grub_drive),1)
chainloader +1

title Ubuntu 9.10 Karmic Koala Catalan Remix
rootnoverify ($(grub_drive),2)
chainloader +1

title Kubuntu 9.10 Karmic Koala Catalan Remix
rootnoverify ($(grub_drive),5)
chainloader +1

Dins de l'ordre rootnoverify, observem la variable grub_drive, responsable d'identificar la unitat corresponent a la MultiLiveUSB, així com la numeració de les particions en format del Grub Legacy, que és inferior en una unitat a la numeració tipus GNU/Linux.

Observeu que no afegim cap entrada per accedir a Super Grub Disk: si no esborrem cap línia, ja trobarem un accés de menú per a les utilitats d'aquesta (estrictament parlant, ja hi serem a dintre, en arrancar).

En canvi, potser trobareu útil modificar la línia:

default 0

perquè apunti a una altra distro per omissió (recordeu: amb 0, apunta a la primera del vostre menú; amb 1, a la segona...).

I també podeu voler augmentar el temps d'espera abans de l'inici automàtica i canviar:

timeout 2

a

timeout 30

o qualsevol altre valor (en segons); o, si ho preferiu, podeu eliminar aquesta línia (i no passarà res fins que no trieu cap entrada del menú).

Ajustar l'MBR de la unitat

Ara ens cal modificar l'MBR de la unitat perquè apunti correctament a la partició on es troba instal·lat Super Grub Disk (acceptem que es troba a la primera partició de la unitat).

Ens assegurem d'estar treballant amb una distro que tingui el Grub Legacy, no pas el Grub2. Després, i sempre com a administrador, entrem a la shell del Grub amb:

$ sudo grub

# Entrem a la shell del GRUB (el
# prompt canviarà a "grub>".

grub>device (hd6) /dev/sdx

# Identifiquem la unitat /dev/sdx (canvieu "x"
# pel valor adeqüat a la unitat MultiLiveUSB.
# Fem servir (hd6) perquè suposem que no hi ha
# cap unitat instal·lada amb un valor tant alt.

grub>root (hd6,0)

# Definim la primera partició de la unitat
# com a partició d'arrancada.

grub>setup (hd6)

# Guardem a l'MBR de la unitat les característiques
# que acabem de definir.
# En aquest punt, és habitual observar alguns missatges
# d'error; tanmateix, el resultat final és operatiu.
    
grub>quit

# Sortim de la shell del GRUB     
        
$ sudo sync

# Forcem l'acabament de les operacions d'escriptura.

Comprovem per darrera vegada que la unitat no ha quedad muntada:

$ mount | grep sdx

i la retirem; ja està acabada i la podrem utilitzar en qualsevol ordinador que pugui arrancar des d'un USB (almenys, en teoria...). Després de provar-la, és recomanable:

Crear una imatge de la unitat sencera

Sempre com a administrador, i amb totes les particions de la unitat desmuntades, creem una imatge del MultiLiveUSB amb:

# dd if=/dev/sdx of=multiliveusb.img

i ja en podrem fer còpies amb:

# dd if=multiliveusb.img of=/dev/sdy

On /dev/sdx és el lloc que ocupa la MultiLiveUSB original, i on /dev/sdy és el lloc que ocupa la còpia.

Nota final

He realitzat aquest tutorial a correcuita, basant-me en els apunts que vaig utilitzar per al taller realitzat a l'IES Torre-Vicens de Lleida el 7 de novembre de 2009; és molt probable, doncs, que algun paràgraf no estigui clar i, fins i tot, que hi hagi algun pas mal descrit: en qualsevol cas, agrairé tots els comentaris i esmenes que hi voldreu fer.

CatalanTeam/Tutorials/MultiLiveUSB1 (last edited 2009-11-14 18:41:18 by funollet)