Arranc

De CatuxWiki

Jump to: navigation, search

copio aquí el tros d'un mail que vaig enviar a la llista Catux-USB (pinux)_

Jo estic arrancant amb un CDROM perqué aquí casa no tinc cap placa que sàpiga arrancar des de un USB, ho explicaré com pugui (però supoant que vaig a arrancar amb USB).

Es fa: syslinux /dev/sda1
(on sda1 és on tenim el pendrive) i això crea al inici de la partició un petit loader (el syslinux). També veurem que ens fa un fitxer, a l'arrel de la partició que es diu ldlinux.sys.

Llavors podem copiar aquí dins el boot.msg, fond.jpg, german.kdb, licencef.txt, logo.16 de la Flonix, per exemple (després explicaré qué té això de la Flonix que no tingui la DSL)

També copiarem el miniroot.gz de la flonix.

I per últim, el vmlinuz de la Flonix (que és el Kernel, que jo ja he canviat).

El qué fa el syslinux és arrancar el kernel que està indicat al syslinux.cfg:

DEFAULT vmlinuz

i li passa de paràmetres:

APPEND lang=us ramdisk_size=100000 init=/etc/init apm=power-off hda=scsi
hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi vga=791
initrd=miniroot.gz nomce quiet BOOT_IMAGE=knoppix TIMEOUT 300


El syslinux arranca el Kernel i li diu que faci servir de initrd el miniroot.gz.

El miniroot (que és el initrd) és un mini-sistema que es monta _abans_ de tot el sistema.

El qué conté són els mòduls de SCSI (a la Knoppix) i també els de USB (a la Flonix).

gunzip miniroot.gz
mount -t ext2 -o loop miniroot m
bin cdrom etc lib linuxrc.old modules proc static usr
boot dev KNOPPIX linuxrc mnt opt sbin tmp


El miniroot.gz té un tamany màxim força limitat (per limitacions de CD-ROM, etc.). El qué és miniroot.gz amb els fitxers d'arranc per syslinux (logo, missatges) pot ocupar com a molt 2880KB (si no vaig errat)

la majoria de directoris són enllaços simbòlics. A dins de modules hi ha el cloop i un directori que es diu scsi que té els mòduls.

També hi ha un script que es diu linuxrc que és qui executa tot el relacionat amb aquest arranc.

Aquest script amb ash (ash és com un bash però més petit amb menys caracterísitques en general per fer cosetes així) el qué fa és:
-A la Knoppix, provar carregar mòduls SCSI, per si tenim un CD scsi on hi ha la Knoppix

-a la Flonix, és el mateix script modificat perqué carregui els mòduls SCSI i a continuació els mòduls USB, per buscar la Flonix

-A la Catux-USB: no carrega de moment els mòduls scsi (explicaré perqué) i carrega els USB, per detectar el pendrive

Nota: el ash té com a funcions internes el insmod, mount, umount. Ho dic perqué ningú es torni boig buscant els binaris de insmod, mount, umount dins el miniroot.gz perqué van dins l'ash, detall cortesia de Knopper,
sembla

Nota2: si per algun motiu no pot carregar el sistema, només tindrem el qué hi ha al miniroot.gz, és a dir, quasi res. No hi ha ni un ls, però si fem "echo *" veurem els fitxers/directoris de on estiguem.

Un cop ha detectat el root de veritat, el qué fa és carregar amb un insmod el cloop i muntar el que és el fitxer de 50MB i arrancar a partir d'aquí de forma "normal".

Notes interessants: de cloop n'hi ha dos versions, la 1.x i la 2.x, basicament. La 2.x comprimeix més (potser per això ahir teniem una imatge amb menys paquets i més gran, perqué ho feiem amb la 1.x? ¿?) El qué s'ha comprimit amb la 2.x no es pot llegir amb el mòdul cloop de 1.x.

Notes interessants 2: per compilar el cloop, l'hem de baixar i fer make KERNEL_DIR=/usr/src/linux-2.4.25, però aquest Kernel hauria d'haver estat compilat amb:
make-kpkg clean
make-kpkg


perqué sinó dirà que falta el fitxer conf.vars (si el feu buit compilarà bé el cloop però no anirà).

Llavors, es copia el miniroot.gz, que conté els mòduls almenys de USB de la versió de Kernel que hi ha al /mnt/pendrive/vmlinuz dins el /mnt/pendrive.

Anar en compte, dins el /mnt/pendrive/knoppix/knoppix (que és una iso comprimida amb el cloop) hi ha més mòduls pels dispositius que no són necessaris per l'arranc: també ha de ser de la mateixa versió del Kernel!

Personal tools