IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Components d'un LIVE CD

Normalment un LIVE CD o cd d'instal·lació conté 3 parts:

  • Boot-loader o gestor d'arrancada ISOLINUX: ISOLINUX és el gestor d'arrancada utilitzat normalment als LIVE CD per a plataformes PC (en altres plataformes com PowerPC s'utilitzar yaboot). Per a més informació sobre l'arrancada de sistema consulteu LPI_101.2. Aquest programa és l'encarregat d'iniciar l'execució del CD un cop el ordinador li passa la responsabilitat d'arrancar (sovint mitjançant la modificació de la BIOS per tal de permetre l'arrancada des de CD)
  • debian-installer (d-i): és el conjunt de programes que s'encarreguen de la instal·lació de sistemes de la família Debian. Ubuntu està principalment basat en el instal·lador de Debian però té característiques pròpies especialment en la instal·lació Desktop que utilitza el programa Ubiquity. Altres distribucions utilitzant altres programes.
  • Un repositori a l'estil Debian: Conté els programes que s'instal·laran sla sistema final i és similar en funcionament i estructura als repositoris Debian. Aquesta part és la que ocupa la major part de l'espai del CD.

Podeu veure els components que us comentem:

  • Amb un CD físic:
  • Posant un CD d'Ubuntu a la lectora de CDs i mostrant els fitxers
  • Amb un fitxer ISO
  • Fent doble clic sobre un iso d'ubuntu des de nautilus. Feu clic al botó dret sobre el fitxer ISO i escolliu l'opció Obre amb i Gestió d'arxius (file-roller).
  • Utilitzant eines com file-roller:
$ file-roller ubuntu-11.04-server-i386.iso
  • També podeu utilitzar ark.

Components de un LIVE CD Ubuntu Desktop

El següent és un exemple de com a partir de la ISO de Ubuntu Desktop (a l'exemple la versió 11.04 Natty) veure els seus continguts muntant la iso:

$ sudo mkdir ubuntu
$ sudo mount -o loop ubuntu-11.04-desktop-i386.iso ubuntu/
$ ls -la
total 3532 
dr-xr-xr-x 11 root  root     4096 2011-04-27 19:07 .
drwxr-xr-x  9 sergi sergi    4096 2011-10-02 11:19 ..
-r--r--r--  1 root  root      143 2011-04-27 19:04 autorun.inf
dr-xr-xr-x  3 root  root     2048 2011-04-27 19:07 boot
dr-xr-xr-x  2 root  root     2048 2011-04-27 19:07 casper
dr-xr-xr-x  2 root  root     2048 2011-04-27 19:07 .disk
dr-xr-xr-x  3 root  root     2048 2011-04-27 19:07 dists
dr-xr-xr-x  2 root  root     2048 2011-04-27 19:07 install
dr-xr-xr-x  2 root  root    18432 2011-04-27 19:07 isolinux
-r--r--r--  1 root  root     4041 2011-04-27 19:07 md5sum.txt
dr-xr-xr-x  2 root  root     2048 2011-04-27 19:07 pics
dr-xr-xr-x  4 root  root     2048 2011-04-27 19:07 pool
dr-xr-xr-x  2 root  root     2048 2011-04-27 19:07 preseed
-r--r--r--  1 root  root      224 2011-04-27 19:07 README.diskdefines
lr-xr-xr-x  1 root  root        1 2011-04-27 19:07 ubuntu -> .
-r--r--r--  2 root  root  2037229 2010-11-16 12:23 usb-creator.exe
-r--r--r--  1 root  root  1530520 2011-04-27 18:59 wubi.exe

On:

  • Fitxers per a windows: El fitxer és autoexecutable a Windows
  • casper: Casper és la principal diferència entre la versió Desktop i les altres versions com la Server o l'alternate. Els LIVE CD d'escriptori no tenen els continguts al repositori (carpeta pool) sinó que tenen un sistema de fitxers especial de només lectura i comprimit (amb squashfs) on hi ha tota la informació del sistema a instal·lar.

La resta de fitxers són similar a la versió Ubuntu Server, vegeu el següent apartat. Un LIVE CD de la versió desktop ocupa gairebé el 100% del CD amb uns 685M. El fitxer que conté la majoria d'informació és el filesystem.squashfs de dins la carpeta casper:

$ ls -lah casper
658M 2011-04-26 01:12 filesystem.squashfs

Isolinux i casper

El menú principal d'ISOLINUX d'una LIVE CD de la versió Desktop utilitza casper per a arrancar el sistema:

$ cat isolinux/txt.cfg 
default live
label live
  menu label ^Try Ubuntu without installing
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash --
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash --
label check
  menu label ^Check disc for defects
  kernel /casper/vmlinuz
  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash --
label memtest
  menu label Test ^memory
  kernel /install/mt86plus
label hd
  menu label ^Boot from first hard disk
  localboot 0x80

Observeu com la instal·lació utilitza Ubiquity.

Components de un LIVE CD Ubuntu Server

El següent és un exemple de com a partir de la ISO de Ubuntu Server veure els seus continguts muntant la iso:

$ sudo mkdir ubuntuserver
$ sudo mount -o loop ubuntu-11.04-server-i386.iso ubuntuserver/
$ ls -la ubuntuserver/
total 176
dr-xr-xr-x 11 root  root    2048 2011-04-26 14:42 .
drwxr-xr-x  6 sergi sergi   4096 2011-10-01 14:35 ..
dr-xr-xr-x  3 root  root    2048 2011-04-26 14:42 boot
-r-xr-xr-x  1 root  root    1115 2011-04-20 16:19 cdromupgrade
dr-xr-xr-x  2 root  root    2048 2011-04-26 14:41 .disk
dr-xr-xr-x  3 root  root    2048 2011-04-26 14:41 dists
dr-xr-xr-x  3 root  root    2048 2011-04-26 14:41 doc
dr-xr-xr-x  3 root  root    2048 2011-04-26 14:42 install
dr-xr-xr-x  2 root  root   16384 2011-04-26 14:42 isolinux
-r--r--r--  1 root  root  138979 2011-04-26 14:42 md5sum.txt
dr-xr-xr-x  2 root  root    2048 2011-04-26 14:41 pics
dr-xr-xr-x  3 root  root    2048 2011-04-26 14:41 pool
dr-xr-xr-x  2 root  root    2048 2011-04-26 14:41 preseed
-r--r--r--  1 root  root     231 2011-04-26 14:41 README.diskdefines
lr-xr-xr-x  1 root  root       1 2011-04-26 14:41 ubuntu -> .

Anem a veure les carpetes que hi han i a que corresponen:

  • isolinux: és el sistema d'arrancada del CD, s'encarrega d'arrancar el CD i mostra el menú principal.
  • Carpetes pool i dists: Contenen un petit repositori Debian/Ubuntu amb els paquets que s'instal·laran al sistema final. Observeu que a pool només hi ha software del component main.
  • md5sum.txt: serveix per comprovar la integritat dels fitxers del CD. Conté la llista completa de fitxers del CD i la seva suma md5

IMPORTANT: Al modificar un CD cal tenir en compte que també caldrà modificar el fitxer md5sum.txt per tal de reflexar els canvis en els fitxers modificats

  • cdromupgrade: es tracta d'un executable script de sh que s'encarrega d'actualizar el sistema utilitzant com a font de dades el CD.
  • .disk: ???
  • install:
  • SBM (Smart Boot Manager or briefly SmartBtmgr (SBM))
  • pics: conté imatges
  • preseed: conté diferents fitxers de preseeding per a les diferents opcions d'instal·lació que apareixeran al menú principal.
  • README.diskdefines]: Defincions del disc com la versió d'Ubuntu i altres informacions.
  • doc/install/manual: Documentació de la instal·lació. Hi ha un fitxer d'exemple de preseed example-preseed.txt.gz. A:
$ firefox  ubuntuserver/doc/install/manual/en/index.html

Trobareu el manual de la instal·lació en HTML. De fet la versió actualitzada del manual la podeu trobar a:

http://help.ubuntu.com/11.04/installation-guide/i386/

Consulteu Instal·lació d'Ubuntu per a més informació.

Un LIVE CD de la versió Server ocupa uns 652M.

ISOLINUX

Vegeu ISOLINUX.

Debian installer

Consulteu Debian installer.

Crear un Live CD des de zero

Ubuntu Live CD

NOTA: Cal tenir en compte que una de les principals diferències entre el sistemes Server/Alternate i el Desktop és l'ús d'un instal·lador especific: Ubiquity, l'ús d'un sistema de fitxers especial squashfs i de l'ús de casper per arrencar aquest sistema de fitxers. Tota la resta de components del LIVE CD són similars a la versió de Servidor (isolinux, repositoris, etc.)

Per crear un LIVE CD a mida de la versió Desktop, seguirem els següents passos:

TODO

Requeriments

$ sudo apt-get install squashfs-tools genisoimage
  • Un kernel amb suport per a squashfs, és a dir qualsevol a partir de la versió Ubuntu 6.06.
  • Un sistema de màquines virtuals com QEMU/KVM o Virtual Box per provar els CDs.

IMPORTANT: La arquitectura del sistema (i386 o AMD64) ha de ser la mateixa que la del CD que es vol crear

Obtenir el fitxer iso de la versió Desktop, muntar-lo i fer una còpia per a crear el CD a mida

El primer que heu de fer es obtenir el fitxer ISO de la web http://www.ubunut.com/download. Per exemple si us baixeu la versió Natty d'Ubuntu Desktop per a 32 bits el fitxer es dirà:

ubuntu-11.04-desktop-i386.iso

Un exemple de com accedir i modificar el fitxer:

$ cd
$ sudo mkdir ubuntu/ 
$ sudo mount -o loop ubuntu-11.04-desktop-i386.iso ubuntu/             Vegeu Loop devices

Ara teniu muntat el CD. Tingueu en compte que la carpeta ubuntu no forma part del disc dur sinó del CD i per tant serà un sistema de fitxers de només lectura. Per poder fer modificacions cal obtenir una copia:

$ rsync -av ubuntu/ ubuntucustom

Sinó voleu tenir que treballar com a root a la carpeta ubuntucustom:

$ sudo chown sergi:sergi -R u ubuntucustom

NOTA: Canvieu sergi pel vostre nom d'usuari!

El següent pas es modificar els passos de la instal·lació modificant el fitxer de preseed.

Obtenir el sistema de fitxers squashfs

Cal utilitzar l'ordre unsquashfs:

$ unsquashfs ubuntu/casper/filesystem.squashfs

El que fa aquest ordre és desempaqueta i descomprimir un sistema de fitxer squashfs.

Us crearà la carpeta:

squashfs-root

Accedir al sistema de fitxers. chroot

Si es vol utilitzar la xarxa cal copiar els fitxers:

$ sudo cp /etc/resolv.conf squashfs-root/etc/
$ sudo cp /etc/hosts squashfs-root/etc/

I cal muntar alguns sistemes de fitxers especials:

$ sudo mount --bind /dev/ squashfs-root/dev
$ sudo chroot squashfs-root

I:

# mount -t proc none /proc
# mount -t sysfs none /sys
# mount -t devpts none /dev/pts

IMPORTANT: Vigileu de desmuntar aquests sistemes de fitxers abans d'eliminar el squashfs-root ja que sinó us deixarà el sistema inútil al menys fins que el reinicieu.

I finalment per evitar problemas amb els locales i les claus GPG:

$ export HOME=/root
$ export LC_ALL=C

Creant la imatge iso i cremant el CD

TODO

Regenerate manifest

chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop

Compress filesystem

sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -nolzma

NOTA: The -nolzma option is only available from Hardy , and was removed in Karmic. Also, the squashfs has to be generated using a version of mksquashfs that is compatible with the kernel used on the CD you are customizing. For example, you cannot generate a jaunty squashfs on karmic, as the jaunty kernel is not able to mount a squashfs prepared using mksquashfs from karmic.

For slightly higher compression at the cost of compression time, you can increase the block size:

$ sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -b 1048576

Update the filesystem.size file, which is needed by the installer:

$ printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size

Set an image name in extract-cd/README.diskdefines

$ sudo vim extract-cd/README.diskdefines

(you can use "sudo nano extract-cd/README.diskdefines" if you have difficulties understanding vim)

Remove old md5sum.txt and calculate new md5 sums

$ cd extract-cd
$ sudo rm md5sum.txt
$ find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt

Create the ISO image

$ sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-9.04.1-desktop-i386-custom.iso .

Ubuntu Server Live CD

Per crear un LIVE CD a mida, seguirem els següents passos:

Obtenir el fitxer iso, muntar-lo i fer una còpia per a crear el CD a mida

El primer que heu de fer es obtenir el fitxer ISO de la web http://www.ubunut.com/download. Per exemple si us baixeu la versió Natty d'Ubuntu Server per a 32 bits el fitxer es dirà:

ubuntu-11.04-server-i386.iso ubuntuserver

Un exemple de com accedir i modificar el fitxer:

$ cd
$ sudo mkdir ubuntuserver/ 
$ sudo mount -o loop ubuntu-11.04-server-i386.iso ubuntuserver/             Vegeu Loop devices

Ara teniu muntat el CD. Tingueu en compte que la carpeta ubuntuserver no forma part del disc dur sinó del CD i per tant serà un sistema de fitxers de només lectura. Per poder fer modificacions cal obtenir una copia:

$ rsync -av ubuntuserver/ ubuntuservercustom

El següent pas es modificar els passos de la instal·lació modificant el fitxer de preseed.

Modificar el fitxer de preseed

Els paràmetres d'arrancada que es poden utilitzar per indicar el fitxer de preseed són:

preseed/url: El fitxer està accessible a través de la xarxa.
preseed/file: El fitxer està accessible al propi LIVE CD (o USB LIVE)

Es poden utilitzar les abreviacions o alies:

url
file

Aquests paràmetres han d'indicar el camí per arribar al fitxer des de l'arrel del LIVE CD. Existeix certa custom de posar els fitxer preseed a la carpeta:

preseed/

Per indicar a d-i quin fitxer utilitzar es modifica el fitxer isolinux.cfg del CD per tal de pasar els paràmetres al kernel de forma correcte i que aquest al seu torn els passi al instal·lador de Debian (d-i).

Ara modifiqueu el fitxer:

$ joe ubuntuservercustom/isolinux/txt.cfg

NOTA: Des de fa varies versions de Ubuntu, la configuració de isolinux es divideix en múltiples fitxers. La part que ens interessa es troba al fitxer indicat i no pas al fitxer principal isolinux.cfg

Aquí podeu afegir una entrada després de la primera línia:

default custominstall

poseu:

label custominstall
 menu label Install ^Custom Ubuntu Server
 kernel /install/vmlinuz
 append  file=/cdrom/preseed/custom.seed vga=788 initrd=/install/initrd.gz quiet --

Ara canvieu la primera línia a:

default custominstall

On custominstall és el nom que li hem donat a la nostra pròpia opció de menú. Fixeu-vos que el fitxer escollit de preseed és:

/cdrom/preseed/custom.seed

Una opció que us permetrà no haver de tornar a crear el CD cada cop que feu una modificació al fitxer de preseed es obtenir-lo sempre de la xarxa i així poder-lo modificar sense necessitat de tornar a crear el CD.

label custominstall
 menu label Install ^Custom Ubuntu Server
 kernel /install/vmlinuz
 append  auto=true priority=critical url=http://www.iesebre.com/ubuntu/custom.seed vga=788 initrd=/install/initrd.gz quiet --

On heu de canviar el nom de domini per el del vostre servidor i configurar Apache per mostrar el fitxer de seed a la URL http://www.iesebre.com/ubuntu/custom.seed

Important: Observeu que utilitzem auto=true priority=critical que estableix la prioritat de Debconf 
(DEBCONF_PRIORITY) a crítical per contestar el mínim de preguntes i auto=true per tal de retardar les preguntes inicials  
relacionades amb els locales per a després de tenir accés a la xarxa i haver obtingut el fitxer de preseed.

Podeu deixar-vos múltiples opcions:

label custominstall
 menu label Install ^Custom Ubuntu Server
 kernel /install/vmlinuz
 append auto=true priority=critical url=http://www.iesebre.com/ubuntu/custom.seed vga=788 initrd=/install/initrd.gz quiet --
label custominstall1
 menu label Install ^Custom Ubuntu Server 1
 kernel /install/vmlinuz
 append auto=true priority=critical  url=http://www.iesebre.com/ubuntu/custom1.seed vga=788 initrd=/install/initrd.gz quiet --
label custominstall2
 menu label Install ^Custom Ubuntu Server 2
 kernel /install/vmlinuz
 append auto=true priority=critical  url=http://www.iesebre.com/ubuntu/custom2.seed vga=788 initrd=/install/initrd.gz quiet --

I així podeu provar amb diferents fitxers.

Exemple de fitxer de preseed per a automatitzar la instal·lació

Consulteu Preseed#Fitxer_de_preseed_per_a_Ubuntu_Server_11.04

Modificar la estructura de pool per a incloure més paquets

Aquest apartat us ensenya com afegir programes o aplicacions al CD afegint paquets al repositori del CD. El repositori es troba a les carpetes pool i dist.

Una de les formes més fàcils es crear una secció "extras" que contingui els fitxers .deb extres. Per això cal:

  • Modificar el fitxer Packages que defineix la llista de fitxers/paquets del repositori
  • Modificar el fitxer Release que indexa el fitxer Packages.
  • Signar el fitxers Release.gpg per tal que el repositori sigui oficial.

Creeu un directori per al nou component "extras". Aneu a la carpeta on teniu la copia del CD:

$ cd ubuntuservercustom/

I creeu la carpeta per als CDs extras:

$ mkdir -p dists/hardy/extras/binary-i386/pool/extras/

Ara cal posar tots els .debs necessaris a aquesta carpeta.

Ara cal crear el fitxer dists/hardy/extras/binary-i386/Release amb el següent contingut:

$ joe dists/hardy/extras/binary-i386/Release
Archive: natty
Version: 11.04
Component: extras
Origin: Ubuntu
Label: Ubuntu
Architecture: i386

NOTA: Modifiqueu el exemple per adapatar-lo a la vostra versió. Consulteu lsb_release

Per signar el fitxer Releases necessitem GPG. El sistema d'instal·lacíó té un procés per comprovar la signatura del CD, el problema però és que no disposem de la clau privada d'Ubuntu i per tant necessitarem crear la nostra pròpia versió.

Instal·leu gnupg:

$ sudo apt-get install gnupg

Creem la clau per a signar amb:

$ gpg --gen-key

Escolliu les opcions per defecte excepte per al nom real i el email:

  • Nom real: "Clau de signatura de l'Institut de l'Ebre"
  • email: maninfo@www.iesebre.com".

O quelcom similar. Escolliu un paraula clau i recordeu-la.

Ara necessitem obtenir el codi font del paquet ubuntu-keyring, desempaquetar-lo, afegir la nostra clau GPGP i tornar a construir el paquet.

$ gpg --list-keys
/home/sergi/.gnupg/pubring.gpg
...

pub   2048R/C6448379 2011-10-02
uid          Clau GPG de l'Institut de l'Ebre <maninfo@iesebre.com>
sub   2048R/5C27C8ED 2011-10-02

Ara obtenim el codi de ubuntu-keyring per a modificar-lo i tornar-lo a construir amb la nostra clau:

$ sudo mkdir /opt/build
$ cd /opt/build
$ sudo apt-get install fakeroot
$ sudo apt-get source ubuntu-keyring
$ cd cd ubuntu-keyring-2010.+09.30/keyrings/

NOTA: En el moment que feu aquest exemple la versió de ubuntu-keyrings pot ser diferent, modifiqueu l'exemple per adaptar-lo a la vostra versió

$ gpg --import < ubuntu-archive-keyring.gpg

Comproveu les claus de Ubuntu (amb ids en negreta):

$ gpg --list-keys 
...
pub   1024D/437D05B5 2004-09-12
uid                  Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
sub   2048g/79164387 2004-09-12

pub   1024D/FBB75451 2004-12-30
uid                  Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>
...

Ara torneu a crear el fitxer ubuntu-archive-keyring.gpg només amb les claus d'Ubuntu i la que heu generat vosaltres mateixos:

$ sudo bash -c "gpg --export FBB75451 437D05B5 C6448379 > ubuntu-archive-keyring.gpg"

Ara construïm el paquet

$ cd ..   
$ sudo dpkg-buildpackage -rfakeroot -m"Your Name <your.email@your.host>" -kYOURKEYID

Per exemple:

$ sudo dpkg-buildpackage -rfakeroot -m"Sergi Tur Badenas <stur@iesebre.com" -kC6448379

I un cop construït el copiem al repositori del cd:

$ cd ..  
$ cp ubuntu-keyring*deb /home/sergi/Baixades/ubuntuservercustom/pool/main/u/ubuntu-keyring

Per firmar el fitxer Release:

$ gpg --default-key "C6448379" --output $BUILD/dists/$DISTNAME/Release.gpg -ba $BUILD/dists/$DISTNAME/Release

Per exemple:

$ gpg --default-key "C6448379" --output /home/sergi/Baixades/ubuntuservercustom/dists/natty/Release.gpg -ba /home/sergi/Baixades/ubuntuservercustom/dists/natty/Release

Actualitzar el fitxer md5sum.txt

Si feu modificacions al CD també us caldrà actualitzar aquest fitxer si no quan comproveu la integritat del CD us donarà un error com el següent:

ErrorComprovacioIntegritatCD.png

Per actualitzar el fitxer md5sum.txt, des de l'arrel del CD executeu:

$ find . -type f -print0 | xargs -0 md5sum > md5sum.txt

NOTA: Lo anterior no m'ha anat correctament!

o:

$ find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt

Crear el nou fitxer iso i cremar la imatge

Per a les plataformes x86 i AMD64 el següent script us pot ser útils

IMAGE=custom.iso
BUILD=/opt/cd-image/

mkisofs -r -V "Custom Ubuntu Install CD" \
           -cache-inodes \
           -J -l -b isolinux/isolinux.bin \
           -c isolinux/boot.cat -no-emul-boot \
           -boot-load-size 4 -boot-info-table \
           -o $IMAGE $BUILD

Per cremar el CD:

Per trobar la localització del vostre CD executeu:

$ cdrecord --scanbus

I executeu quelcom similar (canvieu el dispositiu)

$ sudo nice -18 cdrecord dev=ATA:0,1,0 --speed=24 --blank=fast -v -gracetime=2 -tao $IMAGE

NOTA: La imatge només us cal cremar-la si la heu de provar en un sistema físic! La recomanació és que utilitzeu algun sistema de màquines virtual com Virtual Box per a fer les proves sense necessitat de cremar CDs reals

Carregar Ubuntu en RAM

Vegeu també

Enllaços externs