Linux kernel versió 2.4.xx Aquesta es l'alliberació de les notes per al Linux versió 2.4. Llegeixi amb mesura, com ells diuen aquí està gairebé tot, explica com instal·lar el nucli i que fer si estranyament s'equivoca. QUE ÉS LINUX? Linux és un clon de Unix reescrigut des del principi per Linus Torvalds amb l'ajuda d'un equip de hackers a través d'una teranyina estesa per la Xarxa. Això apunta cap a la conformitat POSIX. Això té totes les característiques que vostè desitjaria en un Unix modern, inclou multi tasca vertadera, memòria virtual, biblioteques compartides, càrrega per demanda, programari executable copiar-i-escriure, gestió adequada de la memòria i TCP/IP networking (per a treballar en xarxa). Està distribuït sota la GNU General Public License - vegi el fitxer adjunt COPYING per amés detalls. QUIN MAQUINARI FUNCIONARÀ? Linux primer es va desenvolupar per a PCs basats en 386/486. Avui dia també funciona en màquines ARMs, DEC Alphas, SUN Sparcs, M68000 (com Atari i Amiga), MIPS i PowerPC, i d'altres. DOCUMENTACIÓ: - Hi ha molta documentació disponible, i en format electrònic en la Internet i en llibres, específics de Linux i referents a qüestions UNIX. Jo recomano mirar els subdirectoris de documentació de qualsevol lloc FTP Linux de la LDP (Linux Documentation Project). Aquest README no significa ser la documentació en el sistema: allà son molt perfeccionistes amb les fonts disponibles. - Hi han diversos fitxers README en el subdirectori Documentation/: aquests normalment contenen notes d'instal·lació especifiques del nucli per a alguns controladors per exemple. Vegi /Documentation/00-INDEX amb la llista de el que conté cada fitxer. Si us plau llegeixi el fitxer Changes, conté informació a sobre dels problemes, els quals poden passar si actualitza el seu nucli, INSTAL·LAR EL Nucli: - Si vostè instal·la totes les fonts, posi el nucli en un directori a on vostè tingui permisos (ex. el seu directori home) i desenpaqueti: gzip -cd linux-2.4.XX.tar.gz | tar xvf - Reemplaci "XX" pel número de la versió del nucli. NO usi el lloc /usr/src/linux! Aquest lloc és (normalment incomplet) la capçalera principal del nucli és usada per les capceleres de les biblioteques. Aquestes han de correspondre amb la biblioteca i no desordenar-les amb una versió del nucli actual. - Vostè també pot actualitzar a les alliberacions 2.4.xx apedaçant. Els pedaços son distribuïts amb el tradicional format gzip o el més nou bzip2. Per a instal·lar el pedaç, aconsegueixi tots els fitxers de pedaç, entri al directori a on va desempaquetar el nucli i executi: gzip -cd patchXX.gz | patch -p0 o bzip2 -dc patchXX.bz2 | patch -p0 (repeteixi xx per a totes les versions més grans que l'arbre de fonts del seu nucli _en_ordre_) i tindria que anar ok. Pot esborrar els fitxers de suport (backup) (xxx# o xxx.orig),i assegurar-se de que no hi han pedaços que han fallat (xxx# or xxx.rej). Si n'hi ha, vol dir que qualsevol dels dos em comes un error. Alternativament el script patch-kernel (apedaçar el nucli) pot usar-se per a automatitzar el procés. Això determina la versió del nucli i aplica algun dels pedaços trobats. linux/scripts/patch-kernel linux El primer argument en el comandament és la situació de les fonts del nucli. Els pedaços son aplicats desde el directori actual, però un directori alternatiu pot ésser especificat com a segon argument. - Asseguris de que no té fitxers corruptes o amb dependències per aquí: cd linux make mrproper Vostè tindrà novament les fonts correctament instal·lades. REQUERIMENTS DE PROGRAMARI: Compilar i fer funcionar els nuclis 2.4.xx requereixen actualitzar (up-to-date) diversos paquets de programari. Consulti /Documentation/Changes per als números mínims de versió requerits i com aconseguir actualitzar aquests paquets. Vigili si usa versions antigues d'aquests paquets doncs poden causar errors indirectes que son difícils de detectar, llavors no assumeixi que pot actualitzar els paquets quan els problemes obvis han aparescut durant la construcció o operació. CONFIGURAR en nucli: - Fer un "make config" per a configurar un nucli bàsic. "make config" necessita bash per a funcionar: pot buscar-lo en $BASH, /bin/bash i /bin/sh (amb aquesta ordre), un d'aquests a de ser correcte per a que això funcioni. No es salti aquest pas encara que vostè actualitzi una versió menor. Noves opcions de configuració son afegides en cada alliberació i apareixeran estranys problemes si els fitxers de configuració no son determinats tal i com s'espera. Si vostè vol posar la seva configuració existent a la nova versió amb el mínim esforç, usi "make oldconfig", amb la que només se li preguntarà per les noves qüestions. - Diferents comandaments de configuració son: "make menuconfig" Text basat en menus de color, radiolists & dialogs. "make xconfig" Eina de configuració basada en X window. "make oldconfig" Totes les qüestions per defecte del seu fitxer actual ./.config. NOTES sobre "make config": - tindre controladors innecessaris fa el nucli més gran i pot en algunes ocasions portar problemes: investigui a sobre de controladors per a targetes no existents que poden confondre als seus controladors - compilar el nucli amb "Processor type" ("Tipus de processador") escollir algun més alt que 386 pot fer que aquest nucli NO funcioni en un 386. El nucli descobrirà això quan s'iniciï la imatge a l'arrancar, i es rendirà. - Un nucli compilat amb emulació matemàtica encara usarà el coprocessador si aquest està present: la emulació matemàtica en aquest cas mai s'usarà. El nucli serà lleugerament més gran, però funcionarà en diferents màquines independentment de si aquestes tenen un coprocessador o no. - la configuració "kernel-hacking" generalment crea un nucli més gran o lent i fins i tot pot fer un nucli menys estable per configurar algunes rutines activament intentant desfer el codi dolent en busca de problemes en el nucli (kmalloc()). Així que segurament vostè hauria de respondre 'n' a les qüestions per a característiques "development", "experimental", o "debugging" ("desenvolupament", "experimental" i "depurant"). - Comprovi el principi del fitxer Makefile per a trobar condicions locals de configuració ( mode SVGA per defecte etc). - Finalment, faci "make dep" per a satisfer totes les dependències correctament. COMPILAR el nucli: - Asseguris de fer-ho amb gcc-2.91.66 (egcs-1.1.2). gcc 2.95.2 també pot funcionar però es perillós i *gcc 2.7.2.3 és massa llarg i no està suportat*. Recordi també actualitzar el seu paquet binutils (per a as/ld/nm i companyia) si es necessari. Per a més informació, refereixis a ./Documentation/Changes. Si us plau noti que pot quedar parat si usa programari a.out amb aquest nucli. - Fer "make bzImage" crearà una imatge comprimida del nucli. Si vostè vol fer un disquet d'inici (boot disk) (sense sistema de fitxers root o LILO), insereixi un disquet en el seu dispositiu A:, i faci "make bzdisk". També es possible fer-ho amb "make install" si vostè té la instal·lació de lilo adaptada als Makefiles del nucli, però primer pot desitjar comprovar la configuració de lilo. Actualment per a instal·lar-lo a de ser root (administrador), però per a construir no hauria de ser necessari. No tregui el nom del root es inútil. - En el rar cas de que el seu sistema no pugui iniciar nuclis bzImage vostè pot compilar el nucli amb zImage. Tot i aixins, l'ajuda de zImage serà treta en el futur en favor de bzimage pel que animem a la gent amb problemes que iniciïn els nuclis amb bzImage i que reportin els problemes, amb informació detallada de la configuració del maquinari, a la llista de correu linux-kernel i a H. Peter Anvin . - Si vostè configura qualsevol part del nucli com a 'mòduls', tindrà que fer "make modules" i a continuació "modules_install". Llegeixi Documentation/modules.txt per a més informació. Per exemple allí trobarà el com usar els mòduls. - Faci una còpia de seguretat (backup) d'un nucli útil pel cas de que res surtis malament.. Això es especialment veritat per a versions en desenvolupament, donat que les noves versions contenen codi que no ha estat depurat. Asseguris de que guarda una còpia de seguretat dels mòduls que corresponen a aquest nucli, serà millor. Si vostè està instal·lant un nucli amb el mateix número de versió que el nucli que fa servir, faci una còpia de seguretat del seu directori modules abans de fer "make modules_install". - Per a ordenar que s'iniciï el nou nucli, necessitarà copiar la imatge del nucli (la trobarà en .../linux/arch/i386/boot/bzImage després de la compilació) al lloc a on la seva distribució guardi les imatges del nucli. Per a alguns, això és en un disquet (floppy disk), en el cas de que vostè copiï el fitxer del nucli bzImage en /dev/fd0 farà un disquet d'inici (bootable). Si inicia Linux des d'una unitat de disc dur, probablement vostè usi LILO el qual usa la imatge del nucli especificada en el fitxer /etc/lilo.conf. El fitxer de la imatge del nucli normalment es /vmlinuz, /boot/vmlinuz, /bzImage o /boot/bzImage. Per a usar un nucli nou, guardi una còpia de la imatge antiga i copiï la nova imatge a sobre de l'antiga. Llavors, vostè HA DE REPETIR LILO per a actualitzar el mapa de càrrega (loading map)! Si no ho fa, no podrà iniciar la nova imatge del nucli. Reinstal·lar LILO normalment es qüestió d'executar /sbin/lilo. Pot desitjar editar /etc/lilo.conf per a especificar una entrada per a la seva antiga imatge del nucli (suposadament, /vmlinuz.old) per si el nou no funciones. Vegi el LILO docs per a més informació. Després reinstal·li LILO, tindrà que fer Shutdown al sistema, reboot (reiniciar), i a viure! Si vostè necessita canviar algun cop el dispositiu root per defecte, el mode de video, ramdisk size (mida de la memòria del disc),etc en la imatge del nucli, usi el programari 'rdev' (o com a alternativa LILO amb les opcions d'inici apropiades). No necessitarà recompilar el nucli per a canviar aquests paràmetres. - Reiniciï am el nou nucli i disfruti. SI RES SURT MALAMENT: - Si vostè té problemes que semblen ser deguts a errors (bugs) en el nucli, si us plau comprovi el fitxer MAINTAINERS per a veure si hi ha alguna persona en particular associada amb la part del nucli amb la que vostè té problemes. Si no troba ningú llistat allà, llavors la segona cosa que pot fer es enviar-me un mail a mi (torvalds@transmeta.com), i possiblement a alguna llista de correu o grup de news. Les llistes de correu son especialment útils per a SCSI i problemes de treball en xarxa (networking), de totes maneres jo no puc testegar cap dels dos personalment. - En tots els errors reportats, "si us plau" digui de quin nucli està parlant, com reproduir el problema i la seva configuració (usi el seu sentit comú). Si el problema es nou, diguim-ho i si es antic, si us plau intenti explicar-me quan el va notar. - Si l'error dona un missatge com aquest unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx o similar en la informació de depuració del nucli en la seva pantalla o el seu sistema log, si us plau dupliqui'l "exactament". L'embolic (dump) pot ser incomprensible per a vostè, però conté informació que pot ajudar a depurar el problema. El text d'aquest embolic també és important si diu res de per que el nucli va descarregar el codi (en el exemple anterior es degut a un indicador dolent del nucli). Més informació a sobre de com entendre aquests embolics (dumps) la trobarà en Documentation/oops-tracing.txt. - Vostè pot usar el programari "kstmoops" per a entendre aquest embolic. Aquesta utilitat pot descarregar-la des de ftp://ftp..kernel.org/pub/linux/utils/kernel/ksymoops. Alternativament vostè pot fer-hi un cop d'ull a mà. - Per a depurant els embolics d'errors autèntics com l'anterior, vostè ajudarà enormement si pot buscar el valor EIP. El valor hex o qualsevol altre de semblant no m'ajuda: dependrà de la seva configuració del nucli. El que ha de fer és agafar el valor hex de la línia EIP (ignori el "0010") i busqui'l en la llista de noms del nucli per a veure quina funció del nucli conté l'adreça ofesa. Per a averiguar el nom de la funció del nucli, vostè necessitarà trobar el binari associat amb el nucli que va donar el síntoma. Aquest es el fitxer 'linux/vmlinux'. Tregui el nom de la llista i emparelli'l amb el EIP del nucli trencat, faci: nm vmlinux | sort | less Això li donarà una llista d'adreces del nucli ordenada en ordre ascendent, des de la que li serà fàcil trobar la funció que conté l'adreça ofesa. Noti que l'adreça donada pels missatges de depuració del nucli no tenen necessàriament que emparellar-se exactament amb les adreces de les funcions (de fet això sol ésser molt improbable), així doncs per a ser justos no usi 'grep' en la llista: Tot i aixins si vol dongui-li el punt d'engegada de cadascuna de les funcions del nucli, per a que buscant la funció que té una adreça d'engegada li doni la que vostè està buscant. De fet, pot ésser una bona idea per a incloure un pedaç de "context" al seu problema reportat, donant unes quantes línies a sobre del que interessa. Si vostè per alguna raó no pot fer res d'això (vostè té una imatge del nucli pre compilada o semblant), dir-me a sobre de la seva configuració possiblement m'ajudarà. - Alternativament vostè pot usar gdb per a iniciar el nucli (sols-lectura; p.e. vostè no podrà canviar valors o determinats break points -intervals-). Per a fer això, primer compili el nucli amb -g; editi arch/i386/Makefile apropiadament i llavors faci un "make clean". També necessitarà habilitar CONFIG_PROC_FS (via "make config"). Després de que vostè reiniciï amb el nou nucli, faci "gdb vmlinux /proc/kcore". I ara vostè podrà usar tots els comandaments gdb. El comandament per a buscar el punt trencat en el seu sistema es "l *0xXXXXXXXX". (Canviï les XXX pel valor EIP). Si el gdb no funciona amb el nucli actual és per que el gdb (incorrecte) desatent el desplaçament (offset) que comença per a que el nucli compili.