Normalment un LIVE CD o cd d'instal·lació conté 3 parts:
Podeu veure els components que us comentem:
$ file-roller ubuntu-11.04-server-i386.iso
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:
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
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.
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:
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
$ 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.
Vegeu ISOLINUX.
Consulteu Debian installer.
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
$ sudo apt-get install squashfs-tools genisoimage
IMPORTANT: La arquitectura del sistema (i386 o AMD64) ha de ser la mateixa que la del CD que es vol crear
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.
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
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
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 .
Per crear un LIVE CD a mida, seguirem els següents passos:
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.
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.
Consulteu Preseed#Fitxer_de_preseed_per_a_Ubuntu_Server_11.04
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:
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:
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 <[email protected]> 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 <[email protected]> sub 2048g/79164387 2004-09-12 pub 1024D/FBB75451 2004-12-30 uid Ubuntu CD Image Automatic Signing Key <[email protected]> ...
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 <[email protected]>" -kYOURKEYID
Per exemple:
$ sudo dpkg-buildpackage -rfakeroot -m"Sergi Tur Badenas <[email protected]" -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
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:
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
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