Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de FreeBSD por Proyecto de Documentacin de FreeBSD Publicado Febrero 1999 Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 The FreeBSD Documentation Project Bienvenido a FreeBSD!. Este manual cubre la instalacin y uso diario de FreeBSD 5.2.1-RELEASE y FreeBSD 4.10-RELEASE. Este manual est en constante evolucin y es el resultado del trabajo de muchas personas. Algunas secciones no estn completas y otras necesitan ser actualizadas. Si ests interesado en colaborar en este proyecto, enva un mensaje de correo electrnico a Lista del proyecto de documentacin de FreeBSD <freebsd-doc@FreeBSD.org>. La ltima versin de este documento est siempre disponible en el servidor World Wide Web de FreeBSD (../../../../index.html). Tambin est disponible en diferentes formatos y opciones de compresin en el servidor FTP de FreeBSD (ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/) o en los numerosos mirrors. Si se preere disponer de una copia en papel de este manual, se puede adquirir en FreeBSD Mall (http://www.freebsdmall.com/). Tambin es posible realizar bsquedas (../../../../search/index.html) en este manual.
Redistribution and use in source (SGML DocBook) and compiled forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modication, are permitted provided that the following conditions are met:
1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the rst lines of this le unmodied. 2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Importante: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
FreeBSD is a registered trademark of Wind River Systems, Inc. This is expected to change soon. 3Com and HomeConnect are registered trademarks of 3Com Corporation. 3ware and Escalade are registered trademarks of 3ware Inc. ARM is a registered trademark of ARM Limited. Adaptec is a registered trademark of Adaptec, Inc.
Adobe, Acrobat, Acrobat Reader, and PostScript are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries. Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of Apple Computer, Inc., registered in the United States and other countries. Corel and WordPerfect are trademarks or registered trademarks of Corel Corporation and/or its subsidiaries in Canada, the United States and/or other countries. Sound Blaster is a trademark of Creative Technology Ltd. in the United States and/or other countries. CVSup is a registered trademark of John D. Polstra. Heidelberg, Helvetica, Palatino, and Times Roman are either registered trademarks or trademarks of Heidelberger Druckmaschinen AG in the U.S. and other countries. IBM, AIX, EtherJet, Netnity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both. IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States. Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. Intuit and Quicken are registered trademarks and/or registered service marks of Intuit Inc., or one of its subsidiaries, in the United States and other countries. Linux is a registered trademark of Linus Torvalds. LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID and Mylex are trademarks or registered trademarks of LSI Logic Corp. M-Systems and DiskOnChip are trademarks or registered trademarks of M-Systems Flash Disk Pioneers, Ltd. Macromedia, Flash, and Shockwave are trademarks or registered trademarks of Macromedia, Inc. in the United States and/or other countries. Microsoft, FrontPage, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media, and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Netscape and the Netscape Navigator are registered trademarks of Netscape Communications Corporation in the U.S. and other countries. GateD and NextHop are registered and unregistered trademarks of NextHop in the U.S. and other countries. Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The Open Group are trademarks of The Open Group in the United States and other countries. Oracle is a registered trademark of Oracle Corporation. PowerQuest and PartitionMagic are registered trademarks of PowerQuest Corporation in the United States and/or other countries. RealNetworks, RealPlayer, and RealAudio are the registered trademarks of RealNetworks, Inc. Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries. SAP, R/3, and mySAP are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world. Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOfce, Sun Blade, Sun Enterprise, Sun Fire, SunOS, and Ultra are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. Symantec and Ghost are registered trademarks of Symantec Corporation in the United States and other countries. MATLAB is a registered trademark of The MathWorks, Inc. SpeedTouch is a trademark of Thomson U.S. Robotics and Sportster are registered trademarks of U.S. Robotics Corporation. VMware is a trademark of VMware, Inc. Waterloo Maple and Maple are trademarks or registered trademarks of Waterloo Maple Inc. Mathematica is a registered trademark of Wolfram Research, Inc. XFree86 is a trademark of The XFree86 Project, Inc. Ogg Vorbis and Xiph.Org are trademarks of Xiph.Org. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the or the symbol.
Tabla de contenidos
I. Primeros pasos ....................................................................................................................................................... viii 1. Introduccin ...................................................................................................................................................... 1 1.1. Sinpsis................................................................................................................................................. 1 1.2. Bienvenido a FreeBSD!....................................................................................................................... 1 1.3. Acerca del proyecto FreeBSD .............................................................................................................. 4 2. Instalacin de FreeBSD..................................................................................................................................... 9 2.1. Conguraciones soportadas ................................................................................................................ 11 2.2. Preparndonos para la instalacin ...................................................................................................... 15 2.3. Instalacin de FreeBSD ...................................................................................................................... 19 2.4. Preguntas y Respuestas para usuarios de MS-DOS............................................................................ 20 3. Conceptos Bsicos de Unix............................................................................................................................. 21 3.1. Sinpsis............................................................................................................................................... 21 3.2. Permisos.............................................................................................................................................. 21 3.3. Estructura de directorios ..................................................................................................................... 22 3.4. Intrpretes de rdenes (Shells)............................................................................................................ 23 3.5. Editores de texto ................................................................................................................................. 25 3.6. Para ms informacin ......................................................................................................................... 25 4. Instalacin de Aplicaciones: Paquetes y Ports ................................................................................................ 28 4.1. Sinpsis............................................................................................................................................... 28 4.2. Aproximacin a la Instalacin de Software........................................................................................ 28 4.3. Localizando su Aplicacin ................................................................................................................. 30 4.4. Usando el Sistema de Paquetes........................................................................................................... 30 4.5. Usando la Coleccin de Ports ............................................................................................................. 32 4.6. Actividades Post-Instalacin............................................................................................................... 39 4.7. Resolucin de Problemas.................................................................................................................... 39 5. El sistema X Window ...................................................................................................................................... 46 II. Administracin del sistema. .................................................................................................................................. 47 6. El Proceso de Arranque en FreeBSD .............................................................................................................. 48 6.1. Sinpsis............................................................................................................................................... 48 6.2. El Problema que representa Arrancar el Sistema ............................................................................... 48 6.3. El RMA, y las Etapas de Arranque Uno, Dos y Tres ......................................................................... 49 6.4. Interaccin con el Kernel Durante el Arranque .................................................................................. 53 6.5. Init: Inicializacin del Proceso de Control ......................................................................................... 54 6.6. Secuencia de Apagado........................................................................................................................ 55 7. Usuarios y administracin bsica de cuentas .................................................................................................. 56 7.1. Sinpsis............................................................................................................................................... 56 7.2. Introduccin........................................................................................................................................ 56 7.3. La cuenta superusuario ....................................................................................................................... 58 7.4. Cuentas de sistema.............................................................................................................................. 58 7.5. Cuentas de usuario.............................................................................................................................. 58 7.6. Modicacin de cuentas ..................................................................................................................... 58 7.7. Limitar a los usuarios.......................................................................................................................... 63 7.8. Personalizar a los usuarios.................................................................................................................. 65 7.9. Grupos................................................................................................................................................. 66 8. Conguracin del Kernel de FreeBSD............................................................................................................ 68
iv
8.1. Sinpsis............................................................................................................................................... 68 8.2. Por qu Construr un Kernel Propio?................................................................................................ 68 8.3. Compilacin e Instalacin de un Kernel Personalizado ..................................................................... 69 8.4. El Fichero de Conguracin............................................................................................................... 71 8.5. Creacin de Nodos para los Dispositivos ........................................................................................... 83 8.6. En Caso de que Algo No Funcione..................................................................................................... 84 9. Seguridad......................................................................................................................................................... 86 9.1. Sinpsis............................................................................................................................................... 86 9.2. Introduccin........................................................................................................................................ 86 9.3. Asegurando FreeBSD ......................................................................................................................... 87 10. Imprimir ........................................................................................................................................................ 89 10.1. Sinpsis............................................................................................................................................. 89 10.2. Introduccin...................................................................................................................................... 89 10.3. Conguracin Bsica........................................................................................................................ 90 10.4. Conguracin Avanzada de una Impresora .................................................................................... 103 10.5. Uso de las Impresoras..................................................................................................................... 133 10.6. Alternativas al Sistema de Impresin Estndar .............................................................................. 140 10.7. Resolucin de Problemas................................................................................................................ 141 11. Discos .......................................................................................................................................................... 145 11.1. Uso de Sysinstall............................................................................................................................. 145 11.2. Utilizacin de la lnea de comandos ............................................................................................... 146 11.3. * Discos no tradicionales ................................................................................................................ 146 12. Localizacin ................................................................................................................................................ 148 13. Sonido.......................................................................................................................................................... 149 13.1. Sinpsis........................................................................................................................................... 149 13.2. Identicar el Dispositivo Correcto.................................................................................................. 149 13.3. Recompilar el Kernel ...................................................................................................................... 151 13.4. Crear y Probar Nodos de Dispositivos............................................................................................ 151 13.5. Problemas Comunes ....................................................................................................................... 152 13.6. Audio MP3...................................................................................................................................... 152 14. Comunicaciones Serie ................................................................................................................................. 155 15. PPP y SLIP .................................................................................................................................................. 156 15.1. Sinpsis........................................................................................................................................... 156 15.2. Uso de User PPP ............................................................................................................................. 156 15.3. Uso de Kernel PPP.......................................................................................................................... 171 15.4. Uso de PPP sobre Ethernet (PPPoE).............................................................................................. 178 15.5. Uso de PPP sobre ATM (PPPoA) .................................................................................................. 180 15.6. Uso de SLIP.................................................................................................................................... 182 16. Networking Avanzado ................................................................................................................................. 193 17. Correo Electrnico ...................................................................................................................................... 194 17.1. Sinpsis........................................................................................................................................... 194 18. Lo ltimo de lo ltimo................................................................................................................................. 195 18.1. Sinpsis........................................................................................................................................... 195 18.2. FreeBSD-CURRENT vs. FreeBSD-STABLE ................................................................................ 195 18.3. Sincronizacin de su cdigo fuente ................................................................................................ 199 18.4. Uso de make world ...................................................................................................................... 200 19. Emulacin Linux ......................................................................................................................................... 213
III. Apndices ............................................................................................................................................................ 214 20. Cmo obtener FreeBSD .............................................................................................................................. 215 20.1. Servidores FTP ............................................................................................................................... 215 21. Bibliografa.................................................................................................................................................. 216 21.1. Libros y revistas especcas sobre FreeBSD .................................................................................. 216 21.2. Guas de usuario ............................................................................................................................. 216 21.3. Guas de administrador ................................................................................................................... 217 21.4. Guas de programadores ................................................................................................................. 217 21.5. El sistema operativo por dentro ...................................................................................................... 218 21.6. Referencia de seguridad.................................................................................................................. 218 21.7. Referencia de hardware .................................................................................................................. 218 21.8. Historia de UNIX............................................................................................................................ 219 21.9. Diarios y revistas ............................................................................................................................ 219 A. Recursos en Internet ..................................................................................................................................... 220 A.1. Listas de Correo ............................................................................................................................... 220 A.2. Grupos de Noticias de Usenet.......................................................................................................... 231 A.3. Servidores WWW ............................................................................................................................ 232 A.4. Direcciones de Correo Electrnico .................................................................................................. 234 A.5. Cuentas Shell ................................................................................................................................... 234 22. PGP keys ..................................................................................................................................................... 235 22.1. Responsables................................................................................................................................... 235 22.2. Miembros del Core Team ............................................................................................................... 236 Colofn....................................................................................................................................................................... 244
vi
Lista de ejemplos
4-1. Descarga de un Paquete e Instalacin en nuestro sistema ..................................................................................... 30 6-1. Pantalla boot0....................................................................................................................................................... 49 6-2. Pantalla de boot2 .................................................................................................................................................. 50 6-3. Una Consola Insegura en /etc/ttys ......................................................................................................................... 54 7-1. Conguracin de adduser ...................................................................................................................................... 59 7-2. Eliminacin interactiva de cuenta con rmuser....................................................................................................... 61 7-3. chpass interactivo ejecutado por el superusuario................................................................................................... 61 7-4. chpass interactivo ejecutado por un usuario normal.............................................................................................. 62 7-5. Cambio de tu contrasea........................................................................................................................................ 62 7-6. Cambio de la contrasea de otro usuario como superusuario ............................................................................... 62 7-7. Aadir un grupo usando pw(8).............................................................................................................................. 66 7-8. Aadir a alguien a un grupo usando pw(8)............................................................................................................ 66 7-9. Determinar pertenencia a grupos con id(1) ........................................................................................................... 66
vii
I. Primeros pasos
Esta parte del manual de FreeBSD es para usuarios y administradores nuevos en FreeBSD. Estos captulos:
Realizan una introduccin a FreeBSD. Guan a travs de una instalacin de FreeBSD. Explican informacin bsica sobre Unix. Explican como instalar la gran cantidad de software de terceros disponible para FreeBSD. Introducen en el manejo de X Window, el sistema de ventanas de UNIX y detallan como congurar un entorno de escritorio ms productivo.
Se ha intentado minimizar el nmero de referencias a otras secciones de este documento para evitar el salto entre pginas y facilitar la lectura continuada.
Captulo 1. Introduccin
Restructured, reorganized, and parts rewritten by Jim Mock.
1.1. Sinpsis
Gracias por tu inters en FreeBSD! El siguiente captulo trata varios temas relativos al Proyecto FreeBSD, como su historia, objetivos, modelo de desarrollo, etc. Despus de leer este captulo sabrs:
Qu relacin guarda FreeBSD con otros sistemas operativos. La historia del Proyecto FreeBSD. Los objetivos del Proyecto FreeBSD. Los fundamentos del modelo de desarrollo de cdigo abierto de FreeBSD. Y por supuesto: de dnde procede el nombre "FreeBSD".
Multitarea expropiativa con prioridades dinmicamente ajustadas para asegurar que distintas aplicaciones y usuarios compartan el ordenador de un modo equitativo, incluso bajo la mayor de las cargas. Servicios multiusuario que permiten a mucha gente usar un sistema FreeBSD simultneamente para distintas cosas. sto signica, por ejemplo, que los perifricos del sistema como impresoras y dispositivos de cinta son compartidos adecuadamente por varios usuarios del sistema o la red, y que pueden establecerse lmites sobre recursos concretos para usuarios o grupos de usuarios, protegiendo de este modo al sistema de posibles abusos. Conexin de redes TCP/IP muy robusta, con soporte para estndares industriales como SLIP, PPP, NFS, DHCP, y NIS. Esto quiere decir que tu mquina FreeBSD puede interoperar fcilmente con otros sistemas y hacer de servidor en una empresa, proporcionando importantes funciones como NFS (acceso a cheros remotos) y servicios de correo electrnico, o poniendo a tu organizacin en Internet con WWW, FTP, servicios de enrutado y cortafuegos. La proteccin de memoria garantiza que las aplicaciones (o los usuarios) no pueden interferirse. Un error fatal en una aplicacin no afecta al resto. FreeBSD es un sistema operativo de 32-bits (de 64-bits sobre Alpha) y fue diseado como tal desde el comienzo.
Captulo 1. Introduccin
X Window System (X11R6), estndar de la industria, provee a los usuarios de una interfaz grca (GUI) por el coste de una tarjeta VGA y un monitor comunes, y viene con los fuentes completos. Compatibilidad binaria con muchos programas nativos de Linux, SCO, SVR4, BSDI y NetBSD. Miles de aplicaciones listas para ser usadas se hallan disponibles en la coleccin de ports y paquetes. Para qu buscar en la red si puedes encontrarlo todo aqu mismo? Miles de aplicaciones fciles de portar se encuentran disponibles en Internet. FreeBSD tiene un cdigo fuente compatible con el de los ms populares sistemas Unix comerciales y por ello la mayora de las aplicaciones tan slo necesitan unos pocos cambios, si es que necesitan alguno, para compilar. El diseo de la memoria virtual con paginacin bajo demanda y de la cach unicada de VM/buffer satisface a aplicaciones que requieren grandes cantidades de memoria de forma eciente aun dando respuestas interactivas a otros usuarios. Soporte para SMP en mquinas con mltiples CPUs. Una coleccin completa de herramientas de desarrollo en C, C++, Fortran, y Perl. Muchos ms lenguajes adicionales para investigacin y desarrollo avanzados se encuentran tambin disponibles en la coleccin de ports y paquetes. Disponer del cdigo fuente del sistema entero signica contar con el mayor nivel de control posible sobre tu entorno. Para qu ligarte a una solucin propietaria a la merced de un fabricante cuando puedes tener un verdadero sistema abierto? Extensa documentacin en lnea. Y mucho ms!
FreeBSD est basado en la versin 4.4BSD-Lite del Computer Systems Research Group (CSRG) de la Universidad de California en Berkeley, y contina la distinguida tradicin de desarrollo de sistemas BSD. Adems del excelente trabajo del CSRG, el Proyecto FreeBSD ha invertido miles de horas en ajustar el sistema para conseguir un rendimiento y una abilidad mximos en situaciones de carga reales. Mientras que muchos de los gigantes comerciales se esfuerzan en dotar a los sistemas operativos para PCs de esas caractersticas, rendimiento y abilidad, FreeBSD puede ofrecerlas ya! Las posibles aplicaciones en las que puede usarse FreeBSD estn en verdad limitadas tan slo por tu imaginacin. Desde desarrollo de programas hasta automatizacin de fbricas, desde control de inventarios hasta correccin de azimut de antenas de satlites remotos; si puede realizarse con un UNIX comercial lo ms seguro es que tambin pueda llevarse a cabo con FreeBSD. FreeBSD tambin se benecia de las literalmente miles de aplicaciones de alta calidad desarrolladas en centros de investigacin y universidades de todo el mundo, frecuentemente disponibles por poco o ningn coste. Tambin se dispone de aplicaciones comerciales, cuyo nmero aumenta cada da. Dado que el cdigo fuente de FreeBSD est disponible, el sistema puede ser tambin personalizado en un grado nunca visto para aplicaciones o proyectos especiales, y de maneras generalmente no posibles con los sistemas operativos de la mayora de los fabricantes comerciales. Aqu damos tan slo una muestra de aplicaciones en las que se est actualmente usando FreeBSD:
Servicios de Internet: La robusta conectividad TCP/IP integrada en FreeBSD hace de este sistema una plataforma ideal para servicios Internet como:
servidores FTP Servidores web (estndares o seguros [SSL]) Cortafuegos y pasarelas NAT (enmascaramiento IP).
Captulo 1. Introduccin
Con FreeBSD puedes empezar fcilmente con un econmico 386 e ir actualizando tu equipo hasta un tetraprocesador Xeon con almacenamiento RAID a medida que tu proyecto crezca.
Educacin: Eres estudiante de informtica o de algn campo relacionado con la ingeniera? No hay mejor modo de estudiar sistemas operativos, arquitectura de computadores y redes que la experiencia a bajo nivel que FreeBSD puede aportar. Para aqullos cuyo principal inters en los ordenadores no es otro que el de poder realizar su trabajo existe una serie de paquetes gratuitos de CAD, matemticas, diseo grco, etc., que hacen de FreeBSD un sistema verdaderamente til. Investigacin: Encontrndose disponible el cdigo fuente del sistema entero, FreeBSD es una excelente plataforma para la investigacin en sistemas operativos y otras ramas de la informtica. El hecho de que FreeBSD est disponible gratutamente hace posible que grupos remotos puedan colaborar con ideas o compartan desarrollos sin tener que preocuparse de acuerdos en licencias especiales o de limitaciones acerca de lo que puede discutirse en foros pblicos. Redes: Necesitas un nuevo enrutador? Un servidor de nombres (DNS)? Un cortafuegos para mantener a la gente fuera de tu red interna? FreeBSD puede convertir aquel 386 o 486 arrinconado en un enrutador avanzado con sosticadas capacidades de ltrado de paquetes fcilmente. Estacin de trabajo X: FreeBSD es una magnca eleccin como terminal X de bajo coste, ya sea usando el libremente disponible servidor XFree86 o uno de los excelentes servidores comerciales de X Inside. A diferencia de las terminales X, FreeBSD permite ejecutar muchas aplicaciones localmente, si as se quiere, aligerando de este modo la carga soportada por un servidor central. FreeBSD puede incluso arrancar sin disco, permitiendo que las estaciones sean an ms econmicas y fciles de administrar. Desarrollo de software: El sistema base de FreeBSD viene con una completa coleccin de herramientas de desarrollo que incluyen el famoso compilador y depurador de C/C++ de GNU.
Los fuentes y binarios de FreeBSD se hallan disponibles en CDROM y por FTP anmimo. Por favor, consulte Captulo 20 para ms informacin sobre cmo conseguir FreeBSD.
Yahoo! (http://www.yahoo.com/) Apache (http://www.apache.org/) Blue Mountain Arts (http://www.bluemountain.com/) Pair Networks (http://www.pair.com/) Sony Japn (http://www.sony.co.jp/) Netcraft (http://www.netcraft.com/) Weathernews (http://www.wni.com/)
Captulo 1. Introduccin
Supervalu (http://www.supervalu.com/) TELEHOUSE America (http://www.telehouse.com/) Sophos Anti-Virus (http://www.sophos.com/) JMA Wired (http://www.jmawired.com/)
y muchos ms.
Captulo 1. Introduccin trminos de aquel acuerdo se le permita al proyecto sacar una ltima versin antes de la fecha lmite: esa versin fue FreeBSD 1.1.5.1. FreeBSD tuvo entonces que acometer la rdua tarea de literalmente reinventarse a s mismo a partir de trozos nuevos y bastante incompletos de 4.4BSD-Lite. Las versiones Lite eran ligeras en parte porque el CSRG de Berkeley quit grandes partes del cdigo necesario para construir un sistema que pudiera arrancar (debido a diversos requisitos legales) y porque la versin del 4.4 para Intel era muy incompleta. No fue hasta noviembre de 1994 que el proyecto realiz esa transicin, en ese punto sac FreeBSD 2.0 en la red y en CDROM (a nales de diciembre). A pesar de no estar sucientemente pulida, esta distribucin fue un xito signicativo y le sigui el ms robusto y fcil de instalar FreeBSD 2.0.5 en junio de 1995. Sacamos FreeBSD 2.1.5 en agosto de 1996, y pareci ser sucientemente popular entre ISPs y otras comunidades comerciales como para que mereciera otra versin de la rama 2.1-STABLE. sa fue FreeBSD 2.1.7.1, publicada en febrero de 1997, que marc el nal de la lnea principal de desarrollo en 2.1-STABLE. Una vez en modo mantenimiento, en esa rama (RELENG_2_1_0) slo se haran ya mejoras en seguridad y correcciones de errores crticos. FreeBSD se ramic desde la lnea principal de desarrollo (-CURRENT) en noviembre de 1996 como la rama RELENG_2_2, y la primera versin completa (2.2.1) sali en abril de 1997. Se hicieron ms versiones de la rama 2.2 en verano y otoo de 1997, la ltima de las cuales (2.2.8) apareci en noviembre de 1998. La primera versin 3.0 ocial sali en octubre de 1998 y marc el inicio del n de la rama 2.2. El rbol se ramic de nuevo el 20 de enero de 1999, dando lugar a las ramas 4.0-CURRENT y 3.X-STABLE. De la 3.X-STABLE, 3.1 sali el 15 de febrero de 1999, 3.2 el 15 de mayo de 1999, 3.3 el 16 de septiembre de 1999, 3.4 el 20 de diciembre de 1999, y 3.5 el 24 de junio de 2000, a la que sigui pocos das despus una actualizacin menor, la 3.5.1, que incorporaba mejoras de seguridad de ltima hora para Kerberos. sa fue la ltima versin de la rama 3.X. Hubo otra ramicacin el 13 de marzo de 2000, que di lugar a la rama 4.X-STABLE, considerada ahora la "actual rama -stable". Han habido varias versiones de la misma desde entonces: 4.0-RELEASE sali en marzo de 2000, 4.3 en abril de 2001, y 4.4 en septiembre de 2001. Habr ms versiones de la rama 4.X-STABLE (RELENG_4) entrado 2002. Proyectos a largo plazo siguen teniendo lugar en la rama (principal) 5.0-CURRENT, e instantneas de la 5.0 en CDROM (y, naturalmente, en la red) se hallan contnuamente disponibles desde el servidor de instantneas (ftp://current.FreeBSD.org/pub/FreeBSD/snapshots/) a medida que el trabajo progresa.
Captulo 1. Introduccin software con licencia GPL, preferimos que el software contribudo lo sea bajo la licencia BSD, menos estricta, cuando sa sea una opcin razonable.
Captulo 1. Introduccin
Nota: La mayora de los miembros del core team son voluntarios a la hora de desarrollar FreeBSD y no se benecian econmicamente del proyecto, por ello compromiso no debera confundirse con soporte garantizado. La anterior analoga de la junta directiva en realidad no es del todo exacta, quiz fuera ms acertado decir que sa es la gente que dedica su vida a FreeBSD en contra de lo que les aconseja su propio juicio!
Contribuidores externos Por ltimo, y no por ello menos importante, el mayor grupo de desarrolladores est formado por los mismos usuarios, quienes constantemente aportan feedback y correccin de errores. La principal manera de estar en contacto con el ms descentralizado desarrollo de FreeBSD es suscribirse a Lista de discusiones tcnicas en FreeBSD <freebsd-hackers@FreeBSD.org> (ver informacin sobre listas de distribucin) donde se discuten ese tipo de cosas. La lista de contribuidores (../../articles/contributors/article.html) es larga y no cesa de crecer, as que por qu no te apuntas y contribuyes a FreeBSD hoy mismo? Aportar cdigo no es la nica manera de contribuir al proyecto; tienes un lista ms completa de cosas que hay que hacer en el sitio web del Proyecto FreeBSD (../../../../index.html).
En resumen, nuestro modelo de desarrollo est organizado como un conjunto de crculos concntricos. El modelo centralizado est diseado para conveniencia de los usuarios de FreeBSD, que as tienen un modo sencillo de estar al da con una base de cdigo central, no para excluir a contribuidores potenciales!. Nuestro deseo es presentar un sistema operativo estable con un gran conjunto de aplicaciones coherentes que los usuarios puedan instalar y usar fcilmente, y este modelo funciona bien para lograrlo. Lo nico que pedimos a quienes quisieran unirse a nosotros como desarrolladores de FreeBSD es la misma dedicacin que los integrantes actuales tienen para mantener su xito.
Captulo 1. Introduccin Tambin hemos considerado los comentarios y sugerencias de muchos de nuestros usuarios y hemos intentado ofrecer lo que esperamos sea un proceso de instalacin ms sensato y fcil de entender. Tu feedback sobre este proceso (en constante evolucin) es especialmente bienvenido! Adems de las distribuciones base, FreeBSD ofrece una coleccin de software con miles de programas comnmente solicitados. En el momento de escribir esto hay unos 10,500 ports! La lista de ports comprende desde servidores HTTP (WWW), hasta juegos, lenguages, editores, y prcticamente cualquier cosa intermedia. La coleccin de ports completa requiere un espacio de aproximadamente 100MB, todos ellos expresados como deltas de sus fuentes originales. Esto hace que nos sea mucho ms fcil actualizar ports, y reduce de un modo importante el espacio en disco que necesitaba la anterior coleccin de ports 1.0. Para compilar un port uno simplemente se sita bajo el directorio del programa que desea instalar, escribe make install, y deja que el sistema se encargue del resto. La distribucin original completa de cada port que construyes se recupera dinmicamente de un CDROM o un sitio FTP, de modo que slo necesitas el espacio usado para construir los ports que tu quieras. La mayora de los ports tambin estn disponibles precompilados en paquetes, que pueden instalarse con un simple comando ( pkg_add) para aqullos que no quieran compilar sus propios ports a partir de los fuentes. Algunos documentos que pueden ser de ayuda en el proceso de instalacin y al utilizar FreeBSD pueden tambin encontrarse en el directorio /usr/share/doc de cualquier mquina bajo FreeBSD 2.1 o posterior. Puedes ver los manuales que estn instalados en local con cualquier navegador que pueda mostrar HTML va las siguientes URLs: El manual de FreeBSD /usr/share/doc/handbook/index.html Las FAQ de FreeBSD /usr/share/doc/faq/index.html Tambin puedes ver la copia original (y ms frecuentemente actualizada) en http://www.FreeBSD.org/ (../../../../index.html).
2.
Si el CD ha sido grabado con el soporte de arranque El Torito, y su sistema soporta arranque directo desde CDROM (muchos sistemas antiguos no), simplemente inserte el CD en el lector y arranque directamente desde l. Si est ejecutando DOS y tiene los controladores adecuados para acceder al lector de CDROM, ejecute el chero install.bat includo en el CD. ste intentar arrancar la instalacin de FreeBSD desde DOS.
Nota: Debe hacer esto desde el DOS y no desde una mquina Windows.
Si quiere instalar FreeBSD desde una particin DOS (por ejemplo, porque FreeBSD no soporta su lector de CDROM), ejecute primero el programa setup para copiar los cheros adecuados del CD a la particin. A continuacin ejecute el programa de instalacin.
Si cualquiera de los dos mtodos anteriores funciona, puede pasar por alto el resto de esta seccin, en caso contrario, su opcin nal es crear un disco de arranque con la imgen floppies\boot.flp. Salte al paso 4 para instrucciones sobre como hacerlo.
3.
Si no tiene una distribucin en CDROM, simplemente bjese los discos de instalacin y arranque (ftp://ftp.FreeBSD.ORG/pub/FreeBSD/5.2.1-RELEASE/oppies/boot.p) a tu disco duro, asegurndose de que su navegador grabe el chero en lugar de mostrarlo.
Nota: Estas imgenes slo se pueden usar con discos de 1,44Mb.
Captulo 2. Instalacin de FreeBSD 4. Haga el disco de instalacin a partir del chero imgen:
Si est usando MS-DOS o Windows bjese el programa fdimage.exe (ftp://ftp.FreeBSD.ORG/pub/FreeBSD/tools/fdimage.exe) o cgelo de tools\fdimage.exe en el CDROM y ejectelo de la siguiente manera:
E:\> tools\fdimage
floppies\boot.flp a:
El programa fdimage formatear el disco A: y copiar la imgen boot.flp en l (asumiendo que est en el nivel superior de la distribuci de FreeBSD y que las imgenes estn en el subdirectorio floppies, tal y como suele ser habitual).
disk_device es el dispositivo /dev para la disquetera. En sistemas FreeBSD, ste es /dev/fd0 para el disco A: y /dev/fd0 para el disco B:.
5.
Con el disco de instalacin en el disco A:, rearranque su sistema. Debera obtener un prompt de arranque como este:
>> FreeBSD BOOT ... Usage: [[[0:][wd](0,a)]/kernel][-abcCdhrsv] Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1 Use ? for file list or press Enter for defaults Boot:
Si no teclea nada, FreeBSD arrancar automticamente con su conguracin por defecto, despus de una pausa de 5 segundos. Cuando FreeBSD arranca, comprueba su ordenador para determinar el hardware instalado. El resultado de estas comprobaciones se muestra en pantalla. 6. Cuando el proceso de arranque naliza, el men principal de instalacin de FreeBSD se muestra en pantalla.
Si algo va mal... Debido a limitaciones en la arquitectura de los PCs, es imposible para el programa de prueba de hardware ser 100 por 100 able. En el caso de que su hardware sea identicado incorrectamente, o que el proceso de prueba cuelgue la mquina, primero mire la seccin conguraciones soportadas en esta gua de instalacin para asegurar que su hardware es soportado por FreeBSD. Si su hardware est soportado, resete el ordenador y cuando aparezca el prompt Boot: tecle -c. Esto har que FreeBSD entre en modo de conguracin de hardware. El kernel de FreeBSD en el disco de intalacin est congurado asumiendo que la mayor de dispositivos hardware estn congurados tal y como viene de fbrica en lo referente a IRQs, direcciones de memoria, canales DMA, etc. Si su hardware ha sido recongurado, necesitar usar la opcin -c en el arranque para indicarle a FreeBSD dnde se encuentra cada cosa. Tambin es posible que la prueba de un dispositivo no existente provoque una correcta deteccin de un dispositivo que s est presente. En este caso, la prueba para ese controlador conictivo deber ser desactivada.
10
Listar los controladores de dispositivos presentes en el kernel. Desactivar los controladores de hardware no instalado en tu sistema. Cambiar la IRQ, DRQ y direcciones IO usadas por los controladores de dispositivo.
Mientras aparece el prompt config>, tecle help para ms informacin sobre los comandos disponibles. Despus de ajustar los parmetros del kernel con el hardware que tiene instalado, tecle quit en el prompt config> para continuar el arranque con la nueva instalacin. Una vez FreeBSD est instalado, los cambios hechos en el modo de conguracin sern guardados permanentemente para que no tenga que recongurar el sistema cada vez que arranque. An as, es aconsejable que cre un kernel personalizado para optimizar el sistema. Mire en Conguracin del kernel para crear un kernel personalizado.
WD1003 (any generic MFM/RLL) WD1007 (any generic IDE/ESDI) IDE ATA Adaptec 1505 ISA SCSI controller Adaptec 152x series ISA SCSI controllers Adaptec 1535 ISA SCSI controllers Adaptec 154x series ISA SCSI controllers Adaptec 174x series EISA SCSI controller in standard and enhanced mode. Adaptec 274x/284x/2940/2940U/3940 (Narrow/Wide/Twin) series EISA/VLB/PCI SCSI controllers Adaptec AIC7850 on-board SCSI controllers
11
Adaptec AIC-6360 based boards, which includes the AHA-152x and SoundBlaster SCSI cards.
Nota: No puede arrancar desde tarjeta SounBlaster ya que no tienen BIOS, la cual es necesaria para mapear el dispositivo de arranque en los vectores de Entrada/Salida. Son perfectamente usables para cintas externas, CDROMs, etc. Lo mismo se aplica a cualquier otra tarjeta basada en la AIC-6x60 sin ROM de arranque. Algunos sistemas tienen una ROM de arranque, la cual es mostrada de alguna manera cuando el sistema arranca. Revise la conguracin de tu sistema/placa para ms detalles.
Buslogic 445S/445c VLB SCSI controller Buslogic 742A/747S/747c EISA SCSI controller. Buslogic 946c PCI SCSI controller Buslogic 956c PCI SCSI controller NCR 53C810/53C815/53C825/53C860/53C875 PCI SCSI controller. NCR5380/NCR53400 (ProAudio Spectrum) SCSI controller. DTC 3290 EISA SCSI controller in 1542 emulation mode. UltraStor 14F/24F/34F SCSI controllers. Seagate ST01/02 SCSI controllers. Future Domain 8xx/950 series SCSI controllers. WD7000 SCSI controllers.
Con todas las controladoras SCSI soportadas, se consigue ofrecer soporte completo para perifricos SCSI-I & SCSI-II, incluyendo discos, cintas, DAT, y lectores de CDROM. Los siguientes tipos de CDROM son soportados actualmente:
SoundBlaster SCSI and ProAudio Spectrum SCSI (cd) Mitsumi (all models) proprietary interface (mcd) Matsushita/Panasonic (Creative) CR-562/CR-563 proprietary interface ( matcd) Sony proprietary interface (scd) ATAPI IDE interface (experimental and should be considered ALPHA quality!) ( wcd)
12
Allied-Telesis AT1700 and RE2000 cards SMC Elite 16 WD8013 Ethernet interface, and most other WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT based clones. SMC Elite Ultra and 9432TX based cards are also supported. DEC EtherWORKS III NICs (DE203, DE204, and DE205) DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422) DEC DC21040/DC21041/DC21140 based NICs:
ASUS PCI-L101-TB Accton ENI1203 Cogent EM960PCI Compex CPXPCI/32C D-Link DE-530 DEC DE435 Danpex EN-9400P3 JCIS Condor JC1260 Kingston KNE100TX Linksys EtherPCI Mylex LNP101 SMC EtherPower 10/100 (Model 9332) SMC EtherPower (Model 8432) SMC EtherPower (2) Zynx ZX314 Zynx ZX342
DEC FDDI (DEFPA/DEFEA) NICs Fujitsu FMV-181 and FMV-182 Fujitsu MB86960A/MB86965A Intel EtherExpress Intel EtherExpress Pro/100B 100Mbit. Isolan AT 4141-0 (16 bit) Isolink 4110 (8 bit) Lucent WaveLAN wireless networking interface. Novell NE1000, NE2000, and NE2100 ethernet interface.
13
3Com 3C501 cards 3Com 3C503 Etherlink II 3Com 3c505 Etherlink/+ 3Com 3C507 Etherlink 16/TP 3Com 3C509, 3C579, 3C589 (PCMCIA) Etherlink III 3Com 3C590, 3C595 Etherlink III 3Com 3C90x cards. HP PC Lan Plus (27247B and 27252A) Toshiba ethernet cards PCMCIA ethernet cards from IBM and National Semiconductor are also supported.
Nota: Actualmente FreeBSD no soporta las caractersticas PnP (plug-n-play) de algunas tarjetas. Si su tarjeta tiene PnP y le est dando problemas, intente desactivarle el PnP.
AST 4 port serial card using shared IRQ. ARNET 8 port serial card using shared IRQ. BOCA IOAT66 6 port serial card using shared IRQ. BOCA 2016 16 port serial card using shared IRQ. Cyclades Cyclom-y Serial Board. STB 4 port card using shared IRQ. SDL Communications Riscom/8 Serial Board. SDL Communications RISCom/N2 and N2pci sync serial cards. Digiboard Sync/570i high-speed sync serial card. Decision-Computer Intl. Eight-Serial 8 port serial cards using shared IRQ. Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX and Roland MPU-401 sound cards. Matrox Meteor video frame grabber. Creative Labs Video spigot frame grabber. Omnimedia Talisman frame grabber. Brooktree BT848 chip based frame grabbers. X-10 power controllers. PC joystick and speaker.
14
Para acceder al interface ms sencillo de todos (desde DOS), ejecute el comando view. Aparecer una utilidad DOS con un men a travs del cual puede accederse a todas las opciones de instalacin disponibles. Si est creando el disco de arranque desde un sistema UNIX, mira el principio de esta gua . Una vez haya arrancado desde DOS o oppy, deber poder seleccionar el CDROM como el soporte de instalacin en el men Media y cargar la distribucin completa desde el CDROM. No se requiere nings soporte adicional para la instalacin. Despus de instalar por completo el sistema y arrancar desde el disco duro, puede montar el CDROM en cualquier momento tecleando: mount /cdrom Antes de poder quitar el CDROM, es necesario teclear: umount /cdrom.
Nota: Antes de ejecutar el programa de instalacin asegrase de tener el CDROM en el lector para que ste pueda ser detectado durante la fase de pruebas de hardware. Esto es necesario tambin si quiere que el CDROM sea aadido automticamente a la conguracin inicial del sistema.
Finalmente, si quiere que sus usuarios puedan instalar FreeBSD va FTP directamente desde el CDROM de su mquina, lo puede hacer de manera muy sencilla. Una vez tiene la mquina completamente instalada, slo tiene que adir la siguiente lnea al chero de passwords (usando el comando vipw):
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
Cualquiera con conectividad en su red (y permisos para acceder a ella) puede seleccionar ahora como soporte de la instalacin el tipo FTP y teclear: ftp://su_maquina despus de seleccionar Other en el men de servidores FTP.
15
Ahora puede montar los disquettes y escribir en ellos como en cualquier otro sistema de cheros. Despus de formatear los disquettes, necesitar copiar los cheros en ellos. Los cheros de la distribucin estn convenientemente distribuidos para que quepan 5 de ellos en cada disquette de 1.44Mb. Utilice todos los discos necesarios para incluir en ellos todas las distribuciones que quiera instalar. Cada distribucin debe estar en un subdirectorio del oppy, por ejemplo: a:\bin\bin.aa, a:\bin\bin.ab, y as hasta completar la distribucin. Una vez llegue a la pantalla de seleccin del soporte de la instalacin, seleccione Floppy , siendo preguntado por el resto de parmetros necesarios.
Asumiendo que C: es donde tiene espacio libre y E: es la unidad de su lector de CDROM. Tiene que copiar cada distribucin que quiera instalar desde MS-DOS, bajo C:\FREEBSD la distribucin BIN es slo la mnima requerida.
16
Cuando ejecuta la instalacin, deber asegurarse de dejar suciente espacio libre en algn directorio temporal (el cual podr elegir), para que el programa de instalacin pueda recuperar todo el contenido de la cinta. Dado al acceso no aleatorio de las cintas, este mtodo exige un poco de espacio temporal. Necesitar tanto espacio temporal como contenidos hayan en la cinta.
Nota: Es imprescindible que la cinta est en el lector antes de arrancar con el disco de instalacin.
17
Captulo 2. Instalacin de FreeBSD PCMCIA soportadas, asegrese de tener la tarjeta insertada antes de encender el porttil. Por desgracia actualmente FreeBSD no soporta la "insercin en caliente" de tarjetas PCMCIA durante el proceso de instalacin. Tambin necesitar saber tu direccin IP en la red, el valor de la mscara de tu clase de direcciones y el nombre de tu mquina. Su administrador de sistemas puede darle todos los valores adecuados a la conguracin de su red. Si va a acceder a otras mquinas por nombre en lugar de direccin IP, necesitar la direccin de un servidor de nombres y posiblemente la direccin de un gateway (si usa PPP es la direccin IP de tu proveedor). Si no conoce las respuestas a la mayora de estas preguntas denitivamente tendr que hablar con su administrador de sistemas antes de intentar ste tipo de instalacin. Una vez tiene una conexin de red de cualquier tipo funcionando la instalacin puede continuar sobre NFS o FTP. 2.2.5.1. Preparando la instalacin sobre NFS La instalacin sobre NFS es muy sencilla: simplemente copie los cheros de las distribuciones de FreeBSD que necesite en algn lugar del servidor, y apunte el soporte de instalacin de NFS hacia l. Si este servidor slo soporta accesos a puertos seleccionados (como ocurre generalmente con las estaciones de trabajo SUN), necesitar activar esta opcin en el men Options antes de proceder con la instalacin. Si tiene una conexin de red de poca calidad, con ratios de transferencia muy pobres, tambin debera activar el ag apropiado en el men Options. Para que la instalacin por NFS funcione el servidor debe soportar el acceso a subdirectorios exportados; por ejemplo, si el directorio de su distribucin de FreeBSD 5.2.1 reside en: ziggy:/usr/archive/stuff/FreeBSD Entonces ziggy debe permitir montar directamente /usr/archive/stuff/FreeBSD, y no slo /usr o /usr/archive/stuff. En el chero /etc/exports de FreeBSD, esto es controlado por la opcin -alldirs . Otros servidores NFS pueden usar opciones diferentes. Si obtienes el mensaje Permission Denied por parte del servidor, signica que no tiene esta opcin activada de manera adecuada.
2.2.5.2. Preparando una instalacin por FTP La instalacin por FTP se puede realizar desde cualquiera de los servidores mirror que contengan una versin razonablemente actualizada de FreeBSD 5.2.1. Un completo men de elecciones razonables para prcticamente cualquier parte del mundo est disponible en el men de instalacin FTP. Si est instalando desde cualquier otro servidor no listado en ese men o tiene problemas con la conguracin del servidor de nombres o la resolucin correcta puede especicar su propia URL seleccionando la opcin Other en el men. Una URL tambin puede ser una direccin IP, de manera que lo siguiente funcionara en ausencia de un servidor de nombres:
ftp://165.113.121.81/pub/FreeBSD/5.2.1;-RELEASE
Hay dos modos de instalacin FTP que puede usar: FTP Activo Para todas las transferencias FTP use el modo Activo. sto no funcionar a travs de cortafuegos, pero funcionar sin problemas con servidores FTP antguos que no soportan el modo pasivo. Si su conexin se cuelga con el modo pasivo intntelo con el modo activo!.
18
Captulo 2. Instalacin de FreeBSD FTP Pasivo Para todas las transferencias FTP usa el modo Pasivo. Esto permite al usuario conectar a travs de cortafuegos que no aceptan conexiones entrantes en direcciones de puertos aleatorias.
Nota: Los modos Activos y Pasivos no son lo mismo que una conexin a travs de proxy, donde un servidor proxy FTP est escuchando y reenviando las peticiones FTP!.
Para un servidor proxy FTP, normalmente debera darle el nombre del servidor real al que quiere conectar como parte del nombre de usuario despus de una @-sign. El servidor proxy reenviar la peticin al servidor adecuado. Un ejemplo: digamos que quiere realizar la instalacin desde ftp.freebsd.org usando el servidor proxy FTP foo.bar.com, que est escuchando en el puerto 1234. En este caso, tiene que ir al men de opciones y poner el nombre de usuario de FTP como ftp@ftp.freebsd.org, y su direccin de correo como password. Como medio de instalacin especique FTP (o FTP pasivo, si el proxy lo soporta) y la URL ftp://foo.bar.com:1234/pub/FreeBSD
/pub/FreeBSD de ftp.freebsd.org es "cacheado" bajo foo.bar.com, permitindole realizar la instalacin desde esa mquina (la cual coge los cheros de ftp.freebsd.org a medida que la instalacin los necesita).
19
Captulo 2. Instalacin de FreeBSD 4. Seleccione la instalacin Novice, Custom o Express, dependiendo de la ayuda que quiera recibir del programa de instalacin durante todo el proceso. Si nunca ha usado FreeBSD anteriormente, la instalacin Novice es la ms recomendable. 5. El men de conguracin nal le permite congurar su instalacin de FreeBSD a travs de un sistema guiado por mens. Algunas secciones, como la de red, pueden ser importantes si ha hecho la instalacin desde CDROM/Cinta/Floppy y no ha congurado todava sus interfaces de red (asumiendo que exista alguno). Congurando adecuadamente en este momento los interfaces permitira que FreeBSD estuviera activo en la red cuando reinicie por primera vez desde el disco duro.
Puedo ejecutar binarios MS-DOS bajo FreeBSD? BSDI ha donado su emulador DOS al mundo BSD y ste ha sido portado a FreeBSD. Hay tambin una (tcnicamente) buena aplicacin disponible en la Coleccin de Ports llamada pcemu, la cual permite ejecutar muchos binarios en modo texto emulando por completo una CPU 8088.
20
3.1. Sinpsis
El siguiente captulo cubre la funcionalidad y rdenes bsicas del sistema operativo FreeBSD. Mucho de este material es relevante para cualquier sistema operativo tipo UNIX. Si es nuevo en FreeBSD, seguramente querr leer este captulo cuidadosamente. Despus de leer este captulo, usted sabr:
Cmo usar la consola virtual de FreeBSD. Cmo trabajan los permisos de cheros en UNIX. La disposicin de archivos de sistema en FreeBSD por defecto. Cmo montar y desmontar archivos de sistema. Qu son los procesos, demonios y seales. Qu es una cnsola (shell) y como cambiar el ambiente de su entorno (login). Cmo usar editores de texto basicos. Qu son los dispositivos y nodos de dispositivos. Qu formato binario se utiliza en FreeBSD. Cmo leer los manuales para ms informacin.
3.2. Permisos
FreeBSD, cuya raiz histrica es el UNIX BSD, tiene sus fundamentos basados en varios conceptos clave de UNIX. El primero, y ms remarcado, es que FreeBSD es un sistema operativo multi-usuario. El sistema puede manejar varios usuarios trabajando todos simultneamente y en tareas que no guardan relacin entre s. El sistema es el responsable de compartir y administrar peticiones de dispositivos de hardware, perifricos, memoria y tiempo de Unidad Central de Proceso (CPU) de manera equitativa para cada usuario. Debido a que el sistema es capaz de soportar mltiples usuarios, todo lo que el sistema administra tiene un conjunto de permisos que gobiernan quin puede leer, escribir y ejecutar el elemento. Estos permisos se guardan como octetos divididos en tres partes: una para el propietario del archivo, otra para el grupo al que el archivo pertenece, y otra para cualquier otro. Esta representacin numrica funciona as: Valor 0 1 2 3 4 Permiso No leer, no escribir, no ejecutar No leer, no escribir, ejecutar No leer, escribir, no ejecutar No leer, escribir, ejecutar Leer, no escribir, no ejecutar Listado de Directorio
----x -w-wx r--
21
Captulo 3. Conceptos Bsicos de Unix Valor 5 6 7 Permiso Leer, no escribir, ejecutar Leer, escribir, no ejecutar Leer, escribir, ejecutar Listado de Directorio
r-x rwrwx
Si se muestra un listado expandido de directorio mediante ls -l, se mostrarn en una columna los permisos de chero para el propietario, grupo y todos los dems. Veamos como se descompone:
-rw-r--r--
El primer carcter, de izquierda a derecha, es un carcter especial que indica si se trata de un archivo normal, un directorio, un dispositivo especial de tipo carcter o bloque, un socket, o cualquier otro dispositivo de pseudo-archivo. Los siguientes tres caracteres, expresados como rw- muestran los permisos para el propietario del archivo. Los siguientes tres caracteres, r-- muestran los permisos para el grupo al que el archivo pertenece. Los ltimos tres caracteres, r--, muestran los permisos para el resto del mundo. Un guin indica que el permiso est desactivado. En el caso de este archivo, los permisos estn asignados de tal manera que el propietario puede leer y escribir en el archivo, el grupo puede leer el archivo, y el resto del mundo slo puede leer el archivo. De acuerdo con la tabla que se muestra ms arriba, los permisos para este archivo seran 644, donde cada cifra representa las tres partes de los permisos del archivo. Todo sto est muy bien, pero cmo controla el sistema los permisos de los dispositivos? FreeBSD en realidad trata la mayora de los dispositivos hardware como un archivo que los programas pueden abrir, leer y en los que pueden escribir datos como si de cualquier otro archivo se tratara. Estos archivos especiales de dispositivos se encuentran en el directorio /dev. Los directorios tambin son tratados como archivos. Tienen permisos de lectura, escritura y ejecucin. El bit de ejecucin en un directorio tiene un signicado ligramente distinto que para los archivos. Cuando un directorio est marcado como ejecutable signica que se puede mirar dentro, por ejemplo, se podra hacer un listado de ese directorio. Hay ms permisos, pero se usan principalmente en circunstancias especiales como los binarios ejecutables de tipo "setuid" y los los directorios de tipo "sticky". Si desea ms informacin acerca de los permisos de archivos y cmo establecerlos, asegrese de mirar la pgina de manual de chmod(1).
22
Captulo 3. Conceptos Bsicos de Unix el guin de rdenes (script) rc(8) a no ser que contengan la opcin noauto. Consltese la pgina del manual fstab(5) para ms informacin acerca del formato del archivo /etc/fstab y de las opciones que se pueden especicar.
Descripcin Nombre de usuario con el que se ha entrado al sistema. Lista de directorios, separada por puntos y coma, en los que se busca ejecutables. Nombre en la red de la pantalla de X11 a la que conectarse, si se encuentra disponible. El shell actual. El nombre del terminal del usuario. Se usa para determinar las posibilidades del terminal de datos. Base de datos donde encontrar los cdigos de escape necesarios para realizar diferentes funciones en el terminal. Tipo de sistema operativo. Por ejemplo, FreeBSD.
OSTYPE
23
Descripcin Arquitectura de la CPU en la que el sistema se est ejecutando. El editor de texto preferido por el usuario. El paginador de texto preferido por el usuario. Lista de directorios en los que se busca pginas de manual, separados por puntos y coma.
Visualizar o establecer una variable de entorno diere ligeramente de shell a shell. Por ejemplo, en los shells al estilo C como tcsh y csh, se usara setenv para establecer y visualizar las variables de entorno actuales. Siguiendo el ejemplo, para establecer o modicar el valor de EDITOR, bajo csh o tcsh una orden como la siguiente establecera el valor de EDITOR a /usr/local/bin/emacs:
% setenv EDITOR /usr/local/bin/emacs
Tambin se puede hacer que la mayora de los shells muestren el contenido de una variable de entorno situando el carcter $ delante del nombre de la variable desde la lnea de rdenes. Por ejemplo, echo $TERM mostrar cualquiera que sea el valor que se le haya establecido a TERM, porque el shell expande el valor de TERM y se lo pasa al programa echo. Los shells manejan muchos caracteres especiales, llamados meta-caracteres, como representaciones especiales de datos. El mas comn es el carcter *, que representa cualquier nmero de caracteres en un nombre de archivo. Estos meta-caracteres especiales se pueden usar para la expansin de nombres de archivos. Por ejemplo, teclear echo * es casi lo mismo que introducir ls porque el shell recoge todos los archivos que coinciden con * y se los pone en la lnea de rdenes a echo para que los vea. Para evitar que el shell interprete estos caracteres especiales, se pueden salvar poniendo el carcter contrabarra ( \) delante de ellos. echo $TERM muestra cualquiera que sea el valor establecido para el terminal que estamos usando. echo \$TERM muestra $TERM tal cual.
Ejecutar chsh sin parmetros y cambiar el shell desde all tambien funcionara.
Nota: El shell que se desee usar debe gurar en el archivo /etc/shells. Si se ha instalado un shell desde la coleccin de ports, entonces esto ya se habr realizado. Si se ha instalado manualmente el shell, se debe realizar el cambio pertinente.
24
command es el nombre del programa del que se quiere saber algo. Por ejemplo, para saber algo acerca del programa ls teclese:
% man ls
25
Captulo 3. Conceptos Bsicos de Unix 1. rdenes/programas de usuario. 2. LLamadas de sistema y cdigos numricos de error. 3. Funciones de las libreras de C. 4. Manejadores de Dispositivos. 5. Formatos de Archivos. 6. Juegos y otros divertimentos. 7. Informacin miscelnea. 8. Programas relativos al mantenimiento y operacin del sistema. 9. Desarrolladores del Kernel. En algunos casos, el mismo epgrafe puede aparecer en ms de una seccin del manual en lnea. Hay, por ejemplo, un programa de usuario llamado chmod y una llamada de sistema chmod(). En este caso se le puede especicar a man cul se desea especicando la seccin:
% man 1 chmod
Esto nos mostrar la pgina del manual en lnea del programa de usuario chmod. Las referencias a una seccin concreta del manual en lnea se sitan tradicionalmente entre parntesis en la documentacin impresa, de tal manera que chmod(1) se reere al programa de usuario chmod y chmod(2) se reere a la llamada de sistema. Esto est muy bien si se conoce el nombre del programa y simplemente se quiere saber cmo usarlo. Pero, qu si se recuerda el nombre del programa? Se puede usar man para que realice una bsqueda mediante palabras clave en las descripciones de programas usando el argumento -k:
% man -k mail
Con esta orden se nos mostrar una lista de programas que contienen la palabra clave mail en sus descripciones. sto equivale a usar el programa apropos. Si se est mirando todos esos curiosos programas que residen en /usr/bin y no se tiene ni puetera idea de que narices hacen realmente, hgase un sencillo:
% cd /usr/bin % man -f *
o
% cd /usr/bin % whatis *
26
Para una descripcin breve, teclese h. Para una referencia rpida de un programa, teclese ?.
27
Como instalar paquetes binarios de software de terceros. Como compilar software de terceros desde la Coleccin de Ports. Como eliminar paquetes o ports instalados previamente.
Y esto solamente si todo marcha bien. Si usted esta instalando un software que no ha sido creado especcamente para FreeBSD, puede que sea necesario editar el cdigo para que trabaje correctamente. Si usted lo desea, puede continuar instalando software de la forma tradicional bajo FreeBSD. Aunque FreeBSD le provee de dos tecnologs que le pueden ahorrar gran cantidad de tiempo y esfuerzo: los paquetes y ports. Al momento de escribir esto, existen ms de 10,500 aplicaciones de terceros, que estan disponibles de esta manera. Los paquetes de FreeBSD, para cualquier aplicacin, son un simple chero que debe descargar. Los paquetes contienen copia de binarios pre-compilados de la aplicacin, as como cualquier chero de conguracin necesario o documentacin. Los paquetes descargados, pueden ser manipulados con los comandos de manejo de paquetes de FreeBSD, tales como: pkg_add(1), pkg_delete(1), pkg_info(1), etc. El instalar una aplicacin nueva puede realizarse con un simple comando.
28
Captulo 4. Instalacin de Aplicaciones: Paquetes y Ports Por otro lado un Port de FreeBSD, es una coleccin de cheros diseados para automatizar el proceso de compilacin del software, desde el cdigo fuente. Recuerde que existen ciertos pasos que deber llevar a cabo para efecto de compilar un programa por usted mismo (desempacar, parchar, compilar e instalar). Los cheros que conforman un port, permiten automatizar esto por usted. Usted ejecuta un conjunto de comandos simples y el cdigo fuente es descargado, desempacado, parchado, compilado e instalado. De hecho, el sistema de ports tambin se puede usar para crear paquetes que posteriormente manipule con pkg_add y las otras utilidades del manejo de paquetes que veremos en breve. Tanto el sistema de ports como el de paquetes entienden las dependencias. Suponga que desea instalar una aplicacin que depende de que una librera especca este instalada. Tanto la librera como la aplicacin existen en FreeBSD como paquete o port. Si utiliza el comando pkg_add o el sistema de ports para instalar la aplicacin, ambos notaran que la librera no esta instalada, y procedern a instalar la librera en primer trmino. Dado que ambas tecnologs son similares, quizs se pregunte por que FreeBSD se toma la molesta de contar con ambas. Los Paquetes y los Ports cuentan con sus propias fortalezas, y cual utlizar depender de sus preferencias. Benecios de los Paquetes
El tpico chero tarball de un paquete, es normalmente ms pequeo que el tarball comprimido que cuenta con el cdigo fuente del software. Los paquetes no requiere de compilacin adicional. Este punto puede ser de gran importancia, principalmente en equipos lentos, cuando compila grandes aplicaciones tales como Mozilla, KDE, o GNOME. Los paquetes no requieren que usted comprenda el proceso que envuelve el compilar software bajo FreeBSD.
Normalmente los paquetes son compilados con opciones conservadoras, en virtud del gran numero de equipos donde sern instalados. Al instalar desde el port, usted puede editar las preferencias para (por ejemplo) ejecutarse bajo un procesador Pentium IV o Athlon. Algunas aplicaciones opciones relacionadas con lo que pueden y lo que no pueden hacer. Por ejemplo Apache puede ser congurado con una gran variedad de opciones. Al compilarlo desde los ports usted no tiene por que aceptar todas, puede seleccionar cuales opciones desea. En algunos casos, existen varios paquetes para la misma aplicacin con diferentes opciones. Por ejemplo, Ghostscript esta disponible como paquete ghostscript o bien como paquete ghostscript-nox11, dependiendo si usted cuenta o no con el servidor X11. En este caso decidir puede ser sencillo, pero esto se puede volver un problema si cuenta con ms de una o dos opciones al momento de la compilacin.
Las condiciones de licenciamiento de algunas aplicaciones, prohiben la distribucin de binarios. Solo permiten la distribucin del cdigo fuente. Existe gente que no cona en los binarios. Al menos con el cdigo fuente, usted puede (en teora) revisarlo y localizar problemas potenciales. Si cuenta con parches locales, necesitar el cdigo fuente para poder aplicarlos. Existe gente que le gusta contar con el cdigo fuente, para poder leerlo en ratos de ocio, modicarlo, tomar partes prestadas (si la licencia lo permite, claro esta), y tal.
29
Captulo 4. Instalacin de Aplicaciones: Paquetes y Ports Para poder estar actualizado en sus ports, suscribase a Lista de ports de FreeBSD <freebsd-ports@FreeBSD.org>. El resto de este captulo le explicar como usar los ports y paquetes para instalar software de terceros en FreeBSD.
El sitio web de FreeBSD mantiene una base actualizada de todas las aplicaciones disponibles para FreeBSD, en la direccin http://www.FreeBSD.org/ports/ (../../../../ports/index.html). Esta base esta segmentadas por categoras, y usted puede buscar por nombre (si lo sabe) o bien listas las aplicaciones disponibles en cierta categora. Dan Langille mantiene FreshPorts, en http://www.FreshPorts.org/. FreshPorts verica los cambios en las aplicaciones del rbol de ports, y le permite observar uno o ms ports, y le enviar un correo cada vez que se actualicen. Si no conoce el nombre de la aplicacin que desea, pruebe usar un sitio como FreshMeat (http://www.freshmeat.net/) para encontrar una aplicacin, posteriormente verique en el sitio de FreeBSD, para ver si la aplicacin ha sido portada a FreeBSD.
Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230230This machine is in Vienna, VA, USA, hosted by Verio. 230Questions? E-mail freebsd@vienna.verio.net. 230230230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz
30
Si usted no cuenta con una fuente local de paquetes (como pudiese ser un CDROM de FreeBSD), pudiese ser que su mejor alternativa sea usar pkg_add(1). Esto provocar que la utilidad determine automticamente el formato del objeto correcto, para que posteriormente lo descargue y lo instale desde un sitio FTP.
# pkg_add -r lsof
En el ejemplo anterior, el paquete correspondiente ser descargado e instalado sin mayor intervencin del usuario. pkg_add(1) utiliza fetch(1) para descargar los cheros, que toma como referencia varias variables de entorno, que incluyen FTP_PASSIVE_MODE, FTP_PROXY y FTP_PASSWORD. Quizs deba modicar alguna de estas, si se encuentra detrs de un rewall, o bien usar un proxy FTP/HTTP. Vea la pgina de ayuda fetch(3) para una lista completa. Tambin puede notar que en el ejemplo anterior usamos lsof en vez de lsof-4.56.4. Cuando hacemos uso de fetch de forma remota, la versin del paquete debe ser removida. El programa pkg_add(1) obtendr automticamente la versin ms reciente. Los paquetes son distribuidos en formato .tgz y .tbz. Puede encontrarlos en ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ (ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/), o bien, en el CDROM de FreeBSD. Cada CD de la distribucin de 4 CDs (y del PowerPak, etc) contiene los paquetes en el directorio /packages. El orden de dicho directorio, es similar al rbol de /usr/ports. Cada categora cuenta con su subdirectorio, y todos los paquetes estan disponibles en el directorio All. La estructura del directorio de paquetes es identica a la de ports; estos trabajan en conjunto para formar el sistema de paquetes/ports.
A general network file distribution system optimized for CV Meta-port for the different versions of the DocBook DTD
pkg_version(1) es una utilidad que resume las versiones de los paquetes instalados. Estas son comparadas con las versiones actuales del rbol de ports.
31
= =
Los smbolos de la segunda columna, nos indican la edad relativa de la versin instalada, comparada con la versin disponible en el rbol local de ports. Smbolo = < > Signicado La versin del paquete instalado es igual a la versin del rbol local de ports. La versin instalada es ms antigua a la versin del rbol local de ports. La versin instalada es ms reciente que la que se encuentra en el rbol local de ports (probablemente el rbol de ports esta desactualizado). El paquete instalado no se ha localizado en el ndice (index) de los ports. Existen multiples versiones del paquete.
? *
4.4.4. Miscelaneos
Toda la informacin relacionada con los paquetes, se guarda en el directorio /var/db/pkg. Los paquetes instalados, as como una descripcin de los mismos, puede encontrarse en este subdirectorio.
2.
32
Captulo 4. Instalacin de Aplicaciones: Paquetes y Ports 3. 4. 5. 6. 7. Seleccione la opcin Distributions, y presione Enter. Seleccione la opcin ports, y presione la Barra Espaciadora. Dirijase a la opcin Exit, y presione Enter. Seleccione el medio de instalacin deseado, tal como CDROM, FTP y tal. Siga los menus para salir de sysinstall.
El metodo alternativo para obtener y mantener actualizada la Coleccin de Ports, es usando CVSup. Lea el chero de ports para CVSup, en /usr/share/examples/cvsup/ports-supfile. Vea el captulo Usando CVSup para ver ms informacin en el uso de CVSup y del chero mencionado. Metodo por CVSup Este es un metodo rpido de obtener la Coleccin de Ports usando CVSup. Si desea mantener su rbol de ports actualizado, o bien, aprender ms acerca de CVSup, lea los documentos comentados anteriormente. 1. 2. 3. 4. 5. Instale el port net/cvsup. Vea Instalacin de CVSup para mdetalles. Como usuario root, copie el chero /usr/share/examples/cvsup/ports-supfile a una nueva ubicacin, como puede ser el directorio /root o bien su propio directorio home. Edite el chero ports-supfile. Cambie CHANGE_THIS.FreeBSD.org a un servidor CVSup cercano. Vea Mirrors de CVSup para ver una lista completa de los servidores CVSup. Ejecute cvsup:
# cvsup -g -L 2 /root/ports-supfile
6.
Un chero Makefile. Este chero contiene varias sentencias, que le indican al sistema como compilarlo y donde deber instalarlo en su sistema. Un chero distinfo. Este chero contiene informacin de los cheros que debe ser descargados para efecto de compilar el programa, as como el identicador checksum, para asegurarse se han descargado correctamente, sin corrupciones usando md5(1). Un directorio files. Este directorio contiene los parches necesarios para compilar e instalar en su sistema FreeBSD. Bsicamente, los parches son pequeos cheros, que incluyen algunos cambios. Estos son en formato de texto plano, y bsicamente dicen cosas como Remove line 10 (Remover la lnea 10) o Change line 26 to this... (Cambiar la lnea 26 por esto...). Los parches tambin son conocidos como diffs, ya que son generados por el programa del mismo nombre; diff(1). Es posible que este directorio tambi contenga algun otro chero necesario para compilar e instalar el port.
33
Un chero pkg-comment. Este es una descripcion del programa en una sola lnea. Un chero pkg-descr. Esta es una descripcion ms detallada del programa. En ocasiones multi-lnea. Un chero pkg-plist. Esta es una lista de todos los cheros que sern instalados por el port. Tambin le indica al sistema de ports qu cheros eliminar en caso de una desinstalacin.
Algunos ports cuentan con otros cheros, tal como pkg-message. El sistema de ports usa estos, para manejar situaciones especiales. Si desea saber ms detalles al respecto, o bien de ports en general, vea el libro FreeBSD Porters Handbook (../porters-handbook/index.html). Ahora que tiene sucientes antecedentes sobre que hacer con la Coleccin de Ports, esta listo para instalar su primer port. Existen dos formas de lllevar esto a cabo, y cada una de ellas se explican a continuacin. Pero, antes de que podamos proceder con la instalacin, usted necesita seleccionar un port para instalar. Existen varias formas de hacer esto, siendo el metodo ms sencillo los ports listados en el sitio web de FreeBSD (../../../../ports/index.html). Puede navegar entre los ports listados ah o bien, usar la funcin de buscar en el sitio. Cada port incluye una descripcin, para que pueda leer un poco acerca de cada port antes de decidirse a instalarlo. Otro metodo es por medio del comando whereis(1). Simplemente teclee whereis fichero, donde fichero es el programa que desea instalar. Si se encuentra en su sistema, se le indicara donde se localiza, tal como:
# whereis lsof
lsof: /usr/ports/sysutils/lsof
Esto nos indica que lsof (una utilidad de sistema) puede encontrarse en /usr/ports/sysutils/lsof. Incluso otra forma de encontrar un port en particular, es usando el mecanismo de bsqueda incluido en el sistema de ports. Para efecto de usar esta habilidad, debe estar situado en el directorio /usr/ports. Una vez que este ah, ejecute make search name=nombre-del-programa donde nombre-del-programa es el nombre del programa que desea encontrar. Por ejemplo, si busca lsof:
# cd /usr/ports # make search name=lsof
lsof-4.56.4 /usr/ports/sysutils/lsof Lists information about open files (similar to fstat(1)) obrien@FreeBSD.org sysutils
De esta informacin, la parte que debe prestar atencin es la que se reere a la ruta, esto es; la lnea Path:, en virtud de que esta le indica la ubicacin del programa. El resto de la informacin no es necesaria para la instalacin, por lo que no se ver aqui. Para una bsqueda ms profunda, puede usar el comando make search key=cadena donde cadena es algun texto a buscar. Esto busca nombres de ports, descripciones y dependencia y puede usarse para buscar ports que se relacionan a un determinado texto, si no sabe el nombre del port que esta buscando. En ambos casos, la bsqueda es indistinto el uso de maysculas o minusculas. El buscar LSOF y lsof arrojaran los mismos resultados.
Nota: Usted debe ser usuario root , para instalar ports.
34
Ahora que hemos encontrado un port que deseamos instalar, estamos listos para llevar a cabo la instalacin. El port incluye las instrucciones necesarias para compilar el cdigo fuente, pero no contiene el cdigo. Puede obtener el cdigo de un CDROM o desde Internet. El cdigo fuente es distribuido de cualquier manera que el autor del software lo desee. Frecuentemente esto es en un chero tar.gz, pero puede estar comprimido con algun otro programa o de hecho sin estar comprimido. De cualquier forma que se presente, el cdigo fuente del programa, le llamamos distle. Puede obtener los distles desde Internet o bien desde un CDROM. 4.5.2.1. Instalando Ports desde un CDROM Los CDROMs ociales del Proyecto de FreeBSD, ya no incluyen distles. Estos ocupan gran espacio, que en su lugar se ha usado para incluir paquetes precompilados. CDROMs como el PowerPak de FreeBSD, si inlcuyen distles, y puede ordenar estos de distribuidores como FreeBSD Mall (http://www.freebsdmall.com/). Esta seccin asume que usted cuenta con un juego de CDROMs de FreeBSD. Coloque su CDROM en la unidad correspondiente. Montelo en /cdrom. (Si utiliza un punto de montaje diferente la instalacin no ser exitosa). Para comenzar dirijase al directorio donde se localiza el port que desea instalar:
# cd /usr/ports/sysutils/lsof
Una vez que este en el directorio lsof, ver el esqueleto del port. El prximo paso es la compilacin del port. Esto lo hacemos, simplemente tecleando make en la lnea de comandos. Una vez que ha hecho esto, ver algo similar a lo siguiente:
# make
>> lsof_4.57D.freebsd.tar.gz doesnt seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation output snipped] ...
#
Note que una vez que ha terminado la compilacin, regresara a la lnea de comandos. El siguiente paso es instalar el port. Para efecto de instalarlo, simplemente debemos aadir una palabra al comando make, y esa palabra es install:
# make install
===> ...
35
Una vez que regrese a la lnea de comandos, le ser posible ejecutar la aplicacin que recien instalo. Dado que el programa lsof se ejecuta con privilegios, nos aparece una advertencia de seguridad. Debe tomar nota de cualquier otra advertencia que aparezca durante la compilacin e instalacin.
Nota: Puede ahorrarse algo de tiempo al ejecutar make install en un solo comando, en lugar de ejecutar make y make install en dos pasos diferentes.
Nota: Algunos shells cuentan con un cache de los comandos disponibles bajo los directorios incluidos en la variable de entorno PATH, para agilizar las operaciones de bsqueda de los ejecutables de estos cheros. Si usted esta haciendo uso de alguno de estos shells, puede usar el comando rehash una vez que ha terminado de instalar el port, para poder hacer uso de su nuevo programa. Esto es vlido para ambos shells que forman parte del sistema base (tal como tcsh) y shells que estan disponibles como ports (por ejemplo shells/zsh).
Nota: Por favor, tenga en cuenta que algunos ports cuentan con una licencia que no permite su inclusin en el CDROM. Probablemente esto es a consecuencia de un registro que se debe hacer previo a la descarga, as mismo algunos no permiten su re-distribucin, y tal. Si desea instalar un port que no se encuentra en el CDROM, deber encontrarse conectado a Internet, para poder hacerlo (vea la siguiente seccin).
4.5.2.2. Instalando Ports desde Internet Como en la seccin anterior, en este seccin se asume que usted cuenta con una conexin activa a Internet. Si no es as, deber de llevar a cabo la instalacin por medio de CDROM, o ponga una copia del distle en /usr/ports/distfiles manualmente. El instalar un port desde Internet, se hace exactamente de la misma forma que se hace desde un CDROM. La nica diferencia entre estos dos metodos, es que el chero distle es descargado de Internet, en lugar de tomarlo del CDROM. Los pasos que implica son identicos:
# make install
>> lsof_4.57D.freebsd.tar.gz doesnt seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57
36
Como puede ver, la nica diferencia es la lnea que indica de donde esta descargando el sistema el cdigo. El sistema de ports utiliza fetch(1) para descargar los cheros, que hace uso de varias variables de entorno, como son FTP_PASSIVE_MODE, FTP_PROXY, y FTP_PASSWORD. Puede ser necesario que modique una o ms de estas, si se encuentra detrs de un cortafuegos (rewall), o si requiere usar de un proxy FTP/HTTP. Vea la pgina de ayuda fetch(3) para una lista completa de las opciones. La opcin make fetch se provee para usuarios que no pueden estar conectados constantemente. Solo se tiene que ejecutar el comando en /usr/ports y los cheros requeridos sern descargados. Este comando funciona tambin en subdirectorios, por ejemplo: /usr/ports/net. Si el port tiene dependencias en librerias u otros ports, esta orden no descargar los distles de estos ports. Remplace fetch por fetch-recursive si se quiere descargar las dependencias de otro port.
Nota: Es posible compilar los ports por categoria, o todos si se desea, ejecutando la orden make en /usr/ports usando el ya descrito mtodo de makefetch . Esto puede resultar peligroso ya que algunos ports no pueden coexistir. En otros casos, algunos ports pueden instalar dos diferentes cheros bajo el mismo nombre.
Puede darse el caso que se necesite descargar los tarballs de otro sitio diferente a MASTER_SITES (de donde se descargan los cheros). Es posible renombrar la opcin MASTER_SITES de la siguiente manera:
# cd /usr/ports/directory # make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
37
Captulo 4. Instalacin de Aplicaciones: Paquetes y Ports Algunos ports permiten (o requieren) que se provea opciones de compilacin que pueden habilitar/deshabilitar partes de la aplicacin que no son necesarias, algunas opciones de seguridad y otros arreglos. Algunos ejemplos de estos son www/mozilla, security/gpgme y mail/sylpheed-claws. Se noticar con un mensaje cuando opciones como estas estan disponibles.
4.5.2.3. Rehubicando el directorio de Ports Algunas veces es til (o necesario) usar diferentes distles y directorio de ports. Las variables PORTSDIR y PREFIX pueden sustituir los recursos por defecto. Por ejemplo:
# make PORTSDIR=/usr/home/example/ports install
Combinar los dos (demasiado largo para escribirlo completamente, pere debe darle una idea general). Es posible tambin cambiar estas variables como parte su su entorno. Lea el manual de su consola (shell) para hacerlo.
4.5.2.4. Usando imake Algunos ports que usan imake (como parte del Sistema X Windows) no funcionan correctamente con PREFIX, e insistir en instalar en /usr/X11R6. Al igual, algunos ports de Perl ignoran PREFIX e instalan en el rbol de Perl. Hacer que estos ports respeten PREFIX es una tarea difcil y hasta imposible.
===>
Esto fu sencillo. Ha eliminado lsof de su sistema. Si desea reinstalarlo, lo puede hacer al ejecutar make reinstall estando en el directorio /usr/ports/sysutils/lsof.
38
Captulo 4. Instalacin de Aplicaciones: Paquetes y Ports Los comandos make deinstall y make reinstall no funcionan una vez que ha ejecutado el comando make clean. Si desea desintalar un port, una vez que ha ejecutado make clean, deber hacer uso del comando pkg_delete(1) como se describe en la seccin de Paquetes del Handbook.
Use pkg_info(1) para ver que cheros se instalaron y donde. Por ejemplo, si recien instal el paquete FooPackage 1.0.0, el siguiente comando:
# pkg_info -L foopackage-1.0.0 | less
le mostrar los cheros instalados por el paquete. Preste especial atencin a los cheros en el directorio man/ que son las pginas de ayuda y los del directorio etc/, que contiene los cheros de conguracin, y bajo el directorio doc/ podr encontrar informacin ms detallada. Si no esta seguro de cual es la versin del paquete instalado, simplemente teclee algo as
# pkg_info | grep foopackage
y le mostrara todos los paquetes que tienen como nombre foopackage. Reemplace foopackage de acuerdo a sus necesidades en la lnea de comandos.
Una vez que ha identicado donde se localizan las paginas de ayuda de la aplicacin, reviselas usando man(1). De forma similar revise los cheros de conguracin de ejemplo (N. de T. Generalmente estos cheros son aquellos que tienen la terminacin .sample), as como cualquier documentacin adicional que se incluya. Si la aplicacin cuenta con un sitio web, visitelo en busca de documentacin adicional, cheros de preguntas frecuentes (FAQ), etc. Si no esta seguro del sitio web, vea la salida del comando
# pkg_info foopackage-1.0.0
este incluye en ocasiones una lnea WWW:, que describe el sitio web de la aplicacin.
39
4. Y un checksum? Es un numero generado por la suma de los datos en el chero que desea consultar. Si alguno de los caracteres cambia, el checksum ya no ser igual al total, de tal suerte que esta simple comparacin le permite detectar una diferencia. 5. He hecho lo que se indica para compilar ports desde un CDROM y funciona de maravilla hasta que he intentado instalar el port de Kermit.
# make install
>> cku190.tar.gz doesnt seem to exist on this system. >> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.
Como se explico en la seccin Instalando Ports desde un CDROM, algunos ports no se pueden incluir en CDROM, debido a restricciones de licenciamiento. Kermit es un ejemplo de esto. Los trminos de la licencia de Kermit, no permiten su inclusin en el CDROM, as que tendr descargarlo a mano, una disculpa!. La razn por la cual obtiene esos mensajes de error, es por que no cuenta con una conexin a Internet en ese momento. Una vez que lo haya descargado de alguno de los sitios disponibles ( MASTER_SITES listados en el chero Makefile), puede continuar con el proceso de instalacin.
40
6. Ya hice esto, pero cuando intento guardarlo en el subdirectorio /usr/ports/distfiles obtengo un error diciendo algo acerca de que no cuento por los permisos. El sistema de ports, descarga los cheros tarball, en el subdirectorio /usr/ports/distfiles, pero muchos administradores de sistema crean un enlace de este directorio a un servidor remoto o a una unidad local de CDROM de solo lectura. Si esta es su situacin, entonces deber especicar un directorio diferente para guardar sus cheros distles, con el siguiente comando:
# make DISTDIR=/directorio/local/con/permisos/de/escritura install
7. El esquema de ports trabaja solamente si se tiene todo en /usr/ports? Mi administrador de sistema dice que todo lo debo tener en /u/people/guests/wurzburger, pero parece que no funciona de esta manera. Puede usar las variables PORTSDIR y PREFIX, para indicarle al mecanismo de ports que directorios utilizar. Por ejemplo;
# make PORTSDIR=/u/people/guests/wurzburger/ports install
compilar todo en /usr/ports e instalar todo bajo el directorio /u/people/guests/wurzburger/local. Y claro esta que,
# make PORTSDIR=../ports PREFIX=../local install
combinar ambos (lo cual es muy largo para escribir aqui, pero debe darnos una buena idea). Algunos ports que usan imake(1) (una parte del Sistema de Ventanas X) no trabajan bien con PREFIX, e insistiran en instalar todo bajo /usr/X11R6. De forma similar, algunos ports de Perl ignoran la variable PREFIX y proceden a instalar bajo el rbol de Perl. Hacer que estos ports respeten la variable PREFIX es una tarea difcil si no imposible. Si no le agrada estar tecleando todo esto cada vez que desea instalar un port, es una buena idea incluir estas variables en sus variables de entorno. Lea la documentacin de su shell para ver las instrucciones para hacer esto.
8. No cuento con un CDROM de FreeBSD, pero me gustara contar con todos los cheros tar a la mano en mi sistema, para no tener que descargarlos cada vez que deseo instalar un port. Hay alguna forma de obtener todos de una sola vez? Para obtener todos y cada uno de los cheros tar de la Coleccin de Ports, haga lo siguiente:
# cd /usr/ports # make fetch
41
Captulo 4. Instalacin de Aplicaciones: Paquetes y Ports y para un solo portbueno, quizs ya lo adivin.
9. Tengo conocimiento de que probablemente es ms rpido descargar los cheros tarball desde un servidor rplica (mirror) de FreeBSD, ms cercano. Existe alguna forma de indicarle al port que descargue los cheros de un servidor diferente a los listados en MASTER_SITES?. Claro. Por ejemplo, si usted sabe que ftp.FreeBSD.org esta ms prximo que los servidores listados en MASTER_SITES, haga lo siguiente:
# cd /usr/ports/directorio # make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
10. Quisiera saber cuales son los cheros que make va a necesitar antes de los descargue.
make fetch-list desplegara una lista de los cheros necesarios para la compilacin del port.
11. Existe alguna forma de detener la compilacin del port? Deseo editar un poco el cdigo, antes de instalarlo, pero es un poco cansado tener que verlo y pulsar Ctrl+C a cada momento. Puede usar el comando make extract, con el cual se detendra el proceso, una vez que se han descargado y extraido los cheros necesarios. 12. Estoy tratando de hacer mi propio port, y quiero poder detener el proceso, hasta que verique que mis parches funcionan correctamente. Existe algo similar a make extract, pero para parches? Si, make patch es lo que usted busca. Quizs la opcin PATCH_DEBUG le sea de gran utilidad. Y por cierto, gracias por su esfuerzo! 13. He escuchado que algunas opciones del compilador pueden causar errores. Es cierto? Cmo puedo asegurarme de compilar los ports con las opciones correctas? Si, con la versin 2.6.3 de gcc (que es la versin distribuida con FreeBSD 2.1.0 y 2.1.5), la opcin -O2 puede ocasionar un cdigo con errores, a menos que utilice tambin la opcin -fno-strength-reduce (la mayora de los ports no hacen uso de la opcin -O2). Usted debe poder indicarle al compilador las opciones, con algo similar a:
# make CFLAGS=-O2 -fno-strength-reduce install
o bien, editando el chero /etc/make.conf, pero desafortunadamente no todos los ports respetan esto. La mejor forma es ejecutar make configure, y despus dirijirse al directorio con el cdigo fuente e inspeccionar y editar el chero Makefile, pero esto puede ser tedioso si se cuenta con muchos subdirectorios, y en cada uno su propio chero Makefile. Lac opciones que por default utiliza el compilador de FreeBSD son muy conservadoras, por lo que si no las ha modicado, no debe tener problemas.
14. Existen muchos ports y es difcil encontrar el que quiero. Existe en algn lado una lista de los ports disponibles? Vea el chero INDEX, localizado en /usr/ports. Si desea, tambin puede buscar en la Coleccin de Ports por medio de una palabra clave. Por ejemplo, puede encontrar ports relevantes al lenguaje de programacin LISP usando:
42
15. Deseo instalar el port foo pero de repente el sistema se detuvo y comenzo a compilar el port bar. Qu esta pasando? El port foo necesita algo del port bar por ejemplo, si foo utiliza grcos, es posible que bar cuente con libreras con rutinas para procesar grcos. O bien bar puede ser una herramienta necesaria para compilar el port foo. 16. He instalado el programa grizzle desde los ports y francamente es un desperdicio de espacio en disco. Quiero eliminarlo, pero no se donde se instalaron sus cheros. Alguna pista? No hay problema, simplemente teclee:
# pkg_delete grizzle-6.5
17. Aguarda un momento, Se supone que uno debe saber el numero de versin para usar este comando? Hablando en serio, no esperas que recuerde todo esto, o si? No del todo, lo puede saber haciendo:
# pkg_info -I grizzle* Information for grizzle-6.5: grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot em up arcade game.
El numero de versin se puede saber usando el comando pkg_info o bien al teclear: ls /var/db/pkg
18. Hablando de espacio en disco, el directorio de ports parece que ocupa mucho espacio. Es seguro eliminar algo de este directorio? Asi es, si ha instalado un programa y esta seguro de que ya no necesita el cdigo fuente, no hay una razn para contar con l. La forma ms segura de hacer esto es:
# cd /usr/ports # make clean
este comando revisar todos los subdirectorios, y proceder a eliminar todo lo que encuentre, salvo los esqueletos del port.
Sugerencia: Es posible que obtengamos el mismo efecto, pero sin que necesariamente se llame de forma recursiva a cada Makefile. Por ejemplo, puede eliminar directamente todos los subdirectorios work/ con el comando:
43
19. He intentado eso y aun cuento con los tarballs o como se llamen, en el directorio distfiles. Puedo eliminarlos tambin? Si, si esta totalmente seguro de que ha terminado con ellos, tambin los puede eliminar. Estos se pueden eliminar manualmente, o bien usando el comando make distclean. 20. Me gusta contar con muchos, muchos programas para jugar con ellos. Existe una forma de instalar todos los ports en un solo paso? Simplemente haga:
# cd /usr/ports # make install
Tenga cuidado, ya que algunos ports pueden instalar cheros con el mismo nombre. En el caso de que instale dos programas de grcos y que ambos instalen /usr/local/bin/plot obviamente le va ocasionar problemas.
21. OK, he intentado esto, pero como supuse que tomaria mucho tiempo, lo deje corriendo y me fui a dormir. En la maana al ver mi computadora, solo haba terminado tres ports y medio. He hecho algo incorrectamente?. No, el problema es que algunos ports requieren preguntarle cosas que no podemos contestar por usted (por ejemplo; En qu tipo de papel desea imprimir, en A4 o en Carta?), y requieren de alguien que les d respuesta. 22. Realmente no me interesa pasar todo el d frente al monitor. Alguna mejor idea? OK, haga lo siguiente antes de irse a la cama/trabajo/el parque local:
# cd /usr/ports # make -DBATCH install
Con esta opcin se instalarn todos los ports que no requieren intervencin del usuario. Una vez que regrese, haga:
# cd /usr/ports # make -DINTERACTIVE install
23. En mi trabajo usamos frobble, que se encuentra la Coleccin de Ports, pero lo hemos editado un poco, para que se ajuste a nuestras necesidades. Existe alguna forma de hacer nuestro paquete, para poder distribuirlo ms facilmente en nuestros sitios?. No hay problema, asumiendo que usted sabe como crear los parches de sus cambios, puede hacer lo siguiente:
# cd /usr/ports/algunlugar/frobble # make extract
44
24. Esto de los ports es muy inteligente. Estoy deseperado por saber Cal es el secreto? No hay secreto, simplemente vea los cheros bsd.port.mk y bsd.port.subdir.mk que se localizan en
/usr/ports/Mk/.
(Los lectores que tiene aversin a los scripts de shell, se les aconseja abstenerse de ver los cheros de este directorio.)
45
46
Cuales son los componentes del mecanismo de arranque de FreeBSD, y como es que interactuan entre s. Las opciones que puede manejar con los componentes del mecanismo de arranque de FreeBSD, para controlar el proceso de inicio del sistema.
S x86: El presente captulo describe nicamente el proceso de inicio, para sistemas FreeBSD que corren en plataformas Intel x86.
48
Captulo 6. El Proceso de Arranque en FreeBSD Si usted cuenta con varios sistemas operativos instalados en su disco, entonces puede hacer uso de un RMA diferente, uno que despliegue una lista de los diferentes sistemas operativos, y le permita escoger cual de ellos desea que se cargue. FreeBSD cuenta con un RMA de este tipo que puede ser instalado, as como otros distribuidores de sistemas operativos cuentan con RMAs alternativos. En el caso de FreeBSD, el resto del mecanismo de arranque, est dividido en tres etapas. La primer etapa es ejecutada por al RMA, que sabe lo suciente como para poner a la computadora en un estado especco y ejecutar la segunda etapa. La segunda etapa puede hacer un poco ms que esto, antes de ejecutar la tercer etapa. La tercer etapa naliza el trabajo de carga del sistema operativo. El trabajo es dividido en tres etapas, debido a las limitantes que tiene una PC, en cuanto al tamao de los programas a ejecutar, durante las etapas uno y dos. El encadenar estas tareas, le permiten a FreeBSD contar con un arrancador ms exible. Posteriormente el kernel es inicializado y comienza con la comprobacin de dispositivos, y prepararlos para su uso. Una vez que el proceso de arranque del kernel ha nalizado, el kernel transere el control al proceso de usuario init(8), quien se asegura de que los discos se encuentren en buen estado para su uso. Posteriormente init(8) inicia la conguracin fuente a nivel de usuario, que monta los sistemas de cheros, congura las tarjetas de red para que pueden comunicarse en la red, y comunmente inicia todos los procesos que normalmente son ejecutados en un sistema FreeBSD al arrancar el mismo.
Default: F2
Es sabido que otros sistemas, en particular Windows 95, sobreescriben el RMA con el suyo. Si esto le sucede, o bien desea reemplazar su RMA actual con el RMA de FreeBSD, entonces puede utilizar los siguientes comandos.
# fdisk -B -b /boot/boot0 dispositivo
Donde dispositivo es aquel, desde el cual usted pretende arrancar el sistema, tal como ad0 para el disco conectado al primer IDE, ad2 para el disco maestro conectado al IDE secundario, da0 para el primer disco SCSI, y as sucesivamente.
49
Captulo 6. El Proceso de Arranque en FreeBSD Por otro lado, si usted es un usuario de Linux, y preere que la aplicacin LILO controle el proceso de arranque, puede editar el chero /etc/lilo.conf para incluir a FreeBSD, o bien seleccionar la opcin Leave The Master Boot Record Untouched durante el proceso de instalacin. Si ha instalado el gestor de arranque de FreeBSD, puede arrancar Linux y modicar el chero de conguracin de LILO, /etc/lilo.conf, aadiendo la siguiente opcin:
other=/dev/hdXY table=/dev/hdb loader=/boot/chain.b label=FreeBSD
lo que permitir el arranque de FreeBSD y Linux, por medio de LILO. En nuestro ejemplo hemos utilizado XY para especicar el disco utilizado y su particin. Si usted utiliza un sistema SCSI, deber cambiar /dev/hdXY por algo similar a /dev/sdXY , que nuevamente utiliza la sintxis XY . La opcin loader=/boot/chain.b puede omitirse si usted cuenta con ambos sistemas operativos en el mismo disco. Una vez que esto se ha completado, puede ejecutar /sbin/lilo -v para que se actualicen los cambios en el sistema, lo cual deber vericarse con los mensajes que aparezcan en pantalla.
Nota: N de T: La opcin mencionada como; Leave The Master Boot Record Untouched, se mostrar tal cual aparece en este documento, una vez que ha terminado la fase de particin del disco duro.
Si alguna vez requiere reemplazar los cheros boot1 y boot2 instalados, utilice disklabel(8).
50
Donde particin es el disco y particin del cual pretende arrancar el sistema, tal como ad0s1 para la primer particin del disco MastroPrimario.
Modo Peligrosamente DedicadoSi slo utiliza el nombre del disco, tal como ad0, al usar el comando disklabel(8) crear un disco peligrosamente dedicado, sin particin alguna. Seguramente esto no es lo que desea hacer, as que asegurese dos veces antes de presionar la tecla Return cuando utilice disklabel(8).
6.3.3.2. Comandos Internos del Cargador A continuacin se presentan los comandos ms comunes del cargador. Para ver una descripcin detallada de los mismos, por favor consulte la pgina de ayuda loader(8) autoboot segundos Procede a iniciar el arranque del sistema, si es que no es interrumpido el periodo dado, en segundos. Despliega una cuenta regresiva, y el tiempo dado es de 10 segundos. boot [-opciones] [nombre_del_kernel] Procede a iniciar el kernel de manera inmediata, con las opciones dadas, si es que fuera el caso y el kernel especicado, si es que se especica alguno.
51
Captulo 6. El Proceso de Arranque en FreeBSD boot-conf Rehace la conguracin automtica de modulos en funcin a las variables denidas, como sucede al arrancar. Esta opcin slo tiene sentido utilizarla, si en primer lugar hemos usado el comando unload, y hemos modicado alguna variable, siendo lo ms comn el kernel. help [tema] Muestra la ayuda de un tema especco, que lee del chero /boot/loader.help. Si el tema que se indica es index, entonces se mostrar una lista de todos los temas disponibles. include fichero . . . Procesa el chero que se ha especicado. El chero es leido e interpretado lnea por lnea. Cualquier error detendr inmediatamente al comando include. load [-t tipo] fichero Carga el kernel, modulo del kernel, o el chero del tipo dado, en base al chero especicado. Cualquier argumento que se aada, ser pasado al chero. ls [-l] [ruta] Despliega un listado de todos los cheros que se localizan en la ruta especicada, o en el directorio raz, si es que no se le especica ruta alguna. Si se utiliza la opcin -l, tambin se mostrara el tamao de los cheros. lsdev [-v] Nos muestra una lista de todos los dispositivos desde los cuales puede ser posible cargar modulos. Si se incluye la opcin -v, el listado que se obtiene cuenta con ms detalle. lsmod [-v] Despliega los mdulos cargados. Si se utiliza la opcin -v, se mostraran ms detalles. more fichero Despliega el contenido del chero especicado, haciendo una pausa a cada numero determinado de LINEAS mostradas. reboot Reinicia el sistema de forma inmediata. set variable set variable=valor Especica los valores de las variables de entorno del cargador. unload Remueve todos los mdulos cargados.
6.3.3.3. Ejemplos de Uso del Cargador He aqui unos ejemplos prcticos sobre el uso correcto del cargador.
52
Para arrancar simplemente su kernel usual, pero en modo mono-usuario, deber hacer lo siguiente:
boot -s
Para descargar su kernel usual y sus mdulos correspondientes, y posteriormente cargar su kernel anterior (o cualquier otro):
unload load kernel.old
Puede utilizar kernel.GENERIC para referirse al kernel generico actual que viene con la instalacin, o bien puede utilizar kernel.old para hacer referencia al kernel anterior (por ejemplo, cuando ha actualizado su sistema o ha recompilado su propio kernel).
Nota: Utilice lo siguiente para cargar sus mdulos actuales con otro kernel:
unload set kernel="kernel.old " boot-conf
Para cargar un escrito de conguracin (script que de forma automtica har todo lo que normalmente hace usted de forma manual al momento de ejecutarse el congurador de arranque):
load -t escrito_de_configuracin /boot/kernel.conf
durante la inicializacin del kernel, pregunta por los dispositivos a utilizar, para montar el sistema de cheros raz.
-C
53
Nota: Una consola insegura signica que usted considera como insegura fsicamente su consola, por lo que desea asegurarse de que slo quien conoce la contrasea del superusuario puede ingresar al sistema en modo mono-usuario, y no que desea ejecutar la consola inseguramente. Esto es, si desea contar con seguridad escoja la opcin insecure, y no secure.
54
55
7.1. Sinpsis
FreeBSD permite que varios usuarios usen el mismo ordenador. Obviamente, slo uno de estos usuarios puede sentarse frente al monitor y al teclado en un momento dado 1 , pero cualquier nmero de usuarios puede entrar por la red para hacer su trabajo. Para usar el sistema cada usuario ha de tener una cuenta. Despus de leer este captulo sabrs:
Cules son las diferencias entre las distintas cuentas de usuario en sistemas FreeBSD. Cmo aadir cuentas. Cmo eliminar cuentas. Cmo cambiar detalles de las cuentas, como el nombre completo del usuario, o su shell preferida. Cmo establecer lmites por cuenta, para controlar los recursos como memoria o tiempo de CPU que las cuentas y grupos de cuentas pueden emplear. Cmo usar grupos para facilitar la administracin de cuentas.
7.2. Introduccin
Todos los accesos al sistema se consiguen va cuentas, y todos los procesos son ejecutados por usuarios, por ello la administracin de usuarios y cuentas es de una gran importancia en sistemas FreeBSD. Cada cuenta en un sistema FreeBSD tiene cierta informacin asociada que la identica. Nombre de usuario El nombre de usuario como se le entrara al prompt login:. Los nombres de usuario han de ser nicos en la computadora; no puede haber dos usuarios con el mismo nombre de usuario. Existen algunas reglas para la creacin de nombres de usuario vlidos documentadas en passwd(5); tpicamente se usaran nombres de usuario de a lo sumo ocho caracteres, todos ellos en minscula. Contrasea Cada cuenta tiene una contrasea asociada. La contrasea puede ser vaca, en cuyo caso no se requerir ninguna para acceder al sistema. Esto normalmente es una mala idea; cada cuenta debera tener una constrasea no vaca.
56
Captulo 7. Usuarios y administracin bsica de cuentas Identicador de usuario (UID) El UID es un numero entre 0 y 65536 que sirve para identicar unvocamente al usuario en el sistema. Internamente, FreeBSD usa el UID para identicar usuarios y cualquier comando de FreeBSD que permita especicar un nombre de usuario convertir ste al UID antes de trabajar con l. Esto signica que puedes tener varias cuentas con nombres de usuario distintos pero con el mismo UID. En lo que a FreeBSD respecta, tales cuentas son un solo usuario. Es improbable que alguna vez tengas que hacer algo as. Identicador de grupo (GID) El GID es un nmero entre 0 y 65536 que sirve para identicar unvocamente el grupo principal al cual pertenece un usuario. Los grupos son un mecanismo para controlar el acceso a recursos del sistema en base al GID, en vez del UID. Esto puede reducir signicativamente el tamao de algunos cheros de conguracin. Un usuario puede pertencer a ms de un grupo. Clase de login Las clases de login son una extensin al mecanismo de grupos que ofrecen una mayor exibilidad a la hora de adaptar el sistema a distintos usuarios. Tiempo de cambio de contrasea Por defecto FreeBSD no obliga a los usuarios a cambiar su contrasea peridicamente. Se puede requerir esto a determinados usuarios, haciendo que algunos o todos deban cambiar sus contraseas al cabo de cierto periodo de tiempo. Tiempo de expiracin de cuentas Por defecto las cuentas en FreeBSD no expiran. Si ests creando cuentas que sabes que van a tener un tiempo limitado de vida, por ejemplo, las cuentas de los estudiantes de una escuela, entonces puedes especicar cundo expiran. Una vez vencido su tiempo de expiracin una cuenta no puede ser usada para entrar en el sistema, si bien sus directorios y archivos sern conservados. Nombre completo de usuario El nombre de usuario identica unvocamente a una cuenta para FreeBSD, pero no reeja su verdadero nombre necesariamente. Esta informacin puede ser asociada a la cuenta. Directorio home El directorio home es el camino completo de un directorio en el sistema en el que el usuario se hallar cuando entre. Una convencin usual consiste en poner todos los directorios home en /home/nombre_de_usuario o en /usr/home/nombre_de_usuario. Los usuarios guardaran sus archivos personales en sus directorios home, y en cualquier directorio que creasen all. Shell de usuario La shell provee el entorno por defecto mediante el cual los usuarios interactan con el sistema. Existen varios tipos de shell y los usuarios experimentados tendrn sus propias preferencias, que pueden expresarse en la conguracin de su cuenta. Existen principalmente tres tipos de cuentas; la cuenta de superusuario, las cuentas de usuarios del sistema, y las de usuarios. La cuenta de superusuario, normalmente llamada root, se usa para administrar el sistema sin limitaciones en los privilegios. Los usuarios del sistema utilizan servicios del mismo. Finalmente, las cuentas de usuarios son usadas por gente real, aquellos que entran, leen correo, etctera.
57
privilegiado ser.
58
Resumen La aplicacin de lnea de comandos recomendada para aadir nuevos usuarios. La aplicacin de lnea de comandos recomendada para eliminar usuarios. Una herramienta exible para modicar la base de datos de usuarios. Una herramienta de lnea de comandos simple para cambiar contraseas de usuario. Una herramienta potente y exible para modicar cualquier aspecto de las cuentas de usuario.
7.6.1. adduser
adduser es un programa simple para aadir usuarios. Crea entradas en los archivos de sistema passwd y group. Tambin crea un directorio home para el nuevo usuario, copia all cheros de conguracin por defecto (dotles) de /usr/share/skel, y opcionalmente puede enviar al usuario un mensaje de bienvenida.
Para crear el chero inicial de conguracin usa adduser -s -config_create. 2 A continuacin conguramos valores por defecto para adduser y creamos nuestra primera cuenta de usuario, dado que utilizar root para uso normal del sistema es pernicioso y peligroso. Ejemplo 7-1. Conguracin de adduser
# adduser -v
Use option -silent if you dont want to see all warnings and questions. Check /etc/shells Check /etc/master.passwd Check /etc/group Enter your default shell: csh date no sh tcsh zsh [sh]: zsh Your default shell is: zsh -> /usr/local/bin/zsh Enter your default HOME partition: [/home]: Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: Send message from file: /etc/adduser.message no [/etc/adduser.message]: no Do not send message Use passwords (y/n) [y]: y Write your changes to /etc/adduser.conf? (y/n) [n]: y Ok, lets go. Dont worry about mistakes. I will give you the chance later to correct any input. Enter username [a-z0-9_-]: jru Enter full name []: J. Random User Enter shell csh date no sh tcsh zsh [zsh]: Enter home directory (full path) [/home/jru]: Uid [1001]: Enter login class: default []: Login group jru [jru]: Login group is jru. Invite jru into other groups: guest no
59
En resumen, cambiamos la shell por defecto a zsh (una shell alternativa incluida en la coleccin de ports), y deshabilitamos el envo de un mensaje de bienvenida a nuevos usuarios. Luego grabamos la conguracin, creamos una cuenta para jru, y nos aseguramos de que jru est en el grupo wheel (de modo que puede asumir el papel de root va el comando su).
Nota: La contrasea que escribes no se muestra, tampoco se muestran asteriscos. Asegrate de no entrar dos veces una contrasea equivocada.
Nota: Usa adduser sin argumentos en adelante, no necesitars cambiar las opciones por defecto. Si el programa te pide modicarlas sal y prueba con la opcin -s.
7.6.2. rmuser
Puedes usar rmuser para eliminar completamente del sistema a un usuario. rmuser efecta los siguientes pasos: 1. 2. 3. 4. 5. 6. 7. 8. Elimina la entrada del usuario en crontab(1) (si tiene alguna). Elimina las tareas at(1) pertenecientes al usuario. Mata todos los procesos pertenecientes al usuario. Elimina al usuario del chero local de contraseas del sistema. Borra el directorio home del usuario (si le pertenece). Elimina los archivos de correo entrante del usuario de /var/mail. Borra todos los cheros del usuario de reas en las que se guardan archivos temporales como /tmp. Finalmente, elimina el nombre de usuario de todos aquellos grupos a los que pertenece en /etc/group.
60
rmuser no puede ser usado para eliminar cuentas de superusuario, dado que algo as es casi siempre seal de masiva
destruccin. Por defecto existe un modo interactivo que intenta asegurar que uno sabe lo que hace. Ejemplo 7-2. Eliminacin interactiva de cuenta con rmuser
# rmuser jru
Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh Is this the entry you wish to remove? y Remove users home directory (/home/jru)? y Updating password file, updating databases, done. Updating group file: trusted (removing group jru -- personal group is empty) done. Removing users incoming mail file /var/mail/jru: done. Removing files belonging to jru from /tmp: done. Removing files belonging to jru from /var/tmp: done. Removing files belonging to jru from /var/tmp/vi.recover: done.
#
7.6.3. chpass
chpass cambia informacin de los usuarios en base de datos como contraseas, shells y datos personales.
Los administradores del sistema, como el superusuario, son los nicos que pueden modicar la informacin y contraseas de otros usuarios con chpass. Cuando no le pasamos ms opciones, salvo un nombre de usuario opcional, chpass muestra un editor con informacin de usuario. Cuando se sale del editor la base de datos de usuarios se actualiza con la nueva informacin. Ejemplo 7-3. chpass interactivo ejecutado por el superusuario
#Changing user database information for jru. Login: jru Password: * Uid [#]: 1000 Gid [# or name]: 1000 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/tcsh Full Name: J. Random User Office Location: Office Phone:
61
Un usuario normal puede modicar un pequeo subconjunto de esta informacin, y slo para s mismo. Ejemplo 7-4. chpass interactivo ejecutado por un usuario normal
#Changing user database information for jru. Shell: /usr/local/bin/tcsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
Nota: chfn y chsh son enlaces a chpass, como tambin lo son ypchpass, ypchfn, e ypchsh. El soporte para NIS es automtico, por lo que no es necesario especicar el yp antes del comando. Si esto te resulta algo confuso no te preocupes, NIS ser tratado en el Captulo 16.
7.6.4. passwd
passwd es el comando que se usa normalmente para cambiar tu propia contrasea como usuario o, como superusuario, la de otros usuarios. Nota: Los usuarios han de introducir su contrasea original antes de cambiarla para prevenir que gente no autorizada pueda hacerlo cuando no se encuentren en la consola.
Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done
Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done
62
7.6.5. pw
pw(8) es una utilidad de lnea de comandos para crear, eliminar, modicar, y mostrar usuarios y grupos. Hace de interfaz a los archivos del sistema de usuarios y grupos. pw tiene un conjunto de opciones de lnea de comandos bastante potente que lo hacen adecuado para su uso en scripts de shell, aunque los nuevos usuarios puede que lo encuentren algo ms complicado que el resto de comandos que presentamos aqu.
El tamao de un chero core generado por un programa est, por razones obvias, subordinado a otros lmites sobre uso de disco (p. ej., filesize, o cuotas de disco). Aun y as, se usa frecuentemente como un mtodo menos severo de controlar consumo de espacio de disco, dado que los usuarios no generan cheros core por ellos mismos, y a menudo no los borran, activar este lmite puede evitar que agoten el espacio de disco de que disponen si algn programa grande (p. ej., emacs) deja de funcionar abruptamente.
63
cputime
sta es la mxima cantidad de tiempo de CPU que los procesos de un usuario pueden consumir.
Nota: ste es un lmite sobre el tiempo de CPU consumido, no el porcentaje de uso de CPU que se muestra en algunos campos de top(1) y ps(1). Un lmite de ese tipo no es posible a da de hoy, y sera bastante intil: un compilador probablemente una tarea legtima puede usar prcticamente el 100% de la CPU durante algn tiempo con facilidad.
filesize
ste es el tamao mximo que puede llegar a tener un chero del usuario. A diferencia de las cuotas de disco, este lmite se especica para cheros individuales, no para el conjunto de todos los archivos que posee.
maxproc
ste es el mximo nmero de procesos que un usuario puede ejecutar a la vez, incluidos tanto los procesos en primer plano como los procesos en segundo plano. Por razones obvias, este lmite no puede ser mayor que el lmite de sistema especicado por kern.maxproc sysctl. Obsrvese tambin que si asignamos un valor demasiado bajo a este lmite podemos mermar la productividad de un usuario: frecuentemente es til entrar mltiples veces en el sistema o ejecutar pipelines. Algunas tareas, como compilar largos programas, lanzan mltiples procesos (p. ej., make(1), cc(1), y dems preprocesadores intermedios).
memorylocked
sta es la mxima cantidad de memoria que un proceso puede haber solicitado tener bloqueada en memoria principal (p. ej., ver mlock(2)). Algunos programas crticos para el sistema, como amd(8), se quedan bloqueados en la memoria principal de manera que en caso de ser llevados a swap no contribuyan a la basura del sistema si hay algn problema.
memoryuse
sta es la mayor cantidad de memoria que un proceso puede consumir en todo momento. Incluye tanto memoria normal como uso de swap. No se trata de un lmite para restringir el consumo de memoria en general, pero es un buen comienzo.
64
openfiles
sta es la mxima cantidad de archivos que un proceso puede tener abiertos. En FreeBSD, los archivos se usan tambien para representar sockets y canales IPC; as, cuida de no poner este lmite demasiado bajo. A nivel de sistema, el lmite para esto lo dene kern.maxfiles sysctl.
sbsize
ste es el lmite de cantidad de memoria de red, y por lo tanto mbufs, que un usuario puede consumir. Se origin como respuesta a un viejo ataque DoS que creaba muchos sockets, pero puede ser usado en general para limitar las comunicaciones por red.
stacksize
ste es el tamao mximo que puede alcanzar la pila de un proceso. Por s solo no es suciente para limitar la cantidad de memoria que puede usar un programa; en consecuencia, debera ser usado junto con otros lmites.
Hay unas pocas cosas ms a recordar cuando establecemos lmites de recursos. A continuacin vienen algunas recomendaciones, sugerencias, y comentarios varios.
Los procesos que se ponen en marcha cuando arranca el sistema por /etc/rc estn asignados a la clase de login
daemon.
Aunque el /etc/login.conf que viene con el sistema tiene valores razonables para la mayora de los lmites, slo t, el administrador, puedes saber lo que es apropiado para tu sistema. A los usuarios del X Window System (X11) probablemente se les debera conceder ms recursos que al resto. X11 de por s consume muchos recursos, pero adems contribuye a que los usuarios ejecuten ms programas simultneamente. Recuerda que hay muchos lmites que aplican a procesos individuales, no al usuario en general. Por ejemplo, poner openfiles a 50 signica que cada uno de los procesos que ejecute un usuario puede abrir a lo mximo 50 cheros. As, la cantidad de cheros que un usuario puede abrir es el valor de openfiles multiplicado por el valor de maxproc. Esto tambin aplica al uso de memoria.
Para ms informacin acerca de lmites de recursos y clases y capacidades de login en general, consulta las pginas de manual relevantes: cap_mkdb(1), getrlimit(2), login.conf(5).
65
7.9. Grupos
Un grupo es simplemente una lista de usuarios. Los grupos se identican por su nombre de grupo y gid (ID de grupo). En FreeBSD (y en la mayora de sistemas Unix), los dos factores que tiene en cuenta el ncleo para decidir si un proceso puede hacer algo es su ID de usuario y la lista de grupos a los que pertenece. A diferencia del ID de usuario, un proceso tiene una lista de grupos asociados. En ocasiones encontrars menciones al "ID de grupo" de un usuario o de un proceso; la mayora de las veces referirn simplemente al primero de los grupos de la lista. La correspondencia entre nombres e IDs de grupo est en /etc/group. Se trata de un chero de texto plano con cuatro campos separados por el signo dos puntos. El primer campo es el nombre de grupo, el segundo la contrasea encriptada, el tercero el ID de grupo, y el cuarto la lista de miembros separados por comas. Puede ser editado a mano sin peligro (suponiendo, por supuesto, que no se cometan errores de sintaxis!). Para una descripcin ms completa de la sintaxis, ver la pgina de manual group(5). Si no quieres editar /etc/group manualmente, puedes usar el comando pw(8) para aadir y modicar grupos. Por ejemplo, para aadir un grupo llamado teamtwo y luego conrmar que existe puedes usar: Ejemplo 7-7. Aadir un grupo usando pw(8)
# pw groupadd teamtwo # pw groupshow teamtwo
teamtwo:*:1100:
El nmero 1100 en el ejemplo anterior es el ID de grupo del grupo teamtwo. Ahora mismo teamtwo no tiene miembros, y es por tanto bastante intil. Cambiemos eso invitando a jru a formar parte del grupo teamtwo. Ejemplo 7-8. Aadir a alguien a un grupo usando pw(8)
# pw groupmod teamtwo -M jru # pw groupshow teamtwo
teamtwo:*:1100:jru
El argumento de la opcin -M es una lista con los usuarios que son miembros del grupo separados por comas. Sabemos de secciones anteriores que el chero de contraseas tambin contiene un grupo para cada usuario. El usuario es automticamente aadido a la lista de grupos por el sistema; no constar como miembro cuando usemos el comando groupshow con pw(8), pero s cuando la informacin se consulte con id(1) u otra herramienta similar. En otras palabras, pw(8) slo manipula el chero /etc/group; nunca tratar de leer datos adicionales de /etc/passwd. Ejemplo 7-9. Determinar pertenencia a grupos con id(1)
% id jru
Como puedes ver, jru es miembro de los grupos jru y teamtwo. Para ms informacin acerca de pw(8), consulta su pgina de manual, y para ms informacin acerca del formato de /etc/group, consulta la pgina de manual de group(5).
66
Notas
1. Bueno, a menos que conectes mltiples terminales, pero dejaremos ese tema para el Captulo 14. 2. La -s hace que adduser sea silencioso por defecto. Ms tarde usamos -v cuando queremos cambiar valores por defecto.
67
8.1. Sinpsis
El kernel de FreeBSD es el corazn del sistema operativo. Es responsable del manejo y control de la memoria, reforzamiento de los controles de seguridad, manejo de redes, acceso a dispositivos, y mucho ms. Mientras que FreeBSD se torna a un sistema ms dinmico y congurable, en ocasiones es an necesario recongurar y recompilar un kernel hecho a la medida de nuestras necesidades. Al trmino de este captulo, usted sabr:
Por que puede ser necesario que compile un kernel personalizado. Como crear un chero de conguracin del kernel, o bien, editar un chero existente. Como utilizar el chero de conguracin, para crear y compilar un nuevo kernel. Como instalar un kernel nuevo. Como crear los cheros en /dev que pudiesen ser necesarios. Como resolver algunos problemas, si algo sale mal.
68
Mayor rapidez en el arranque del sistema. En virtud de que el kernel solo tiene que probar el hardware que realmente esta en su sistema, el tiempo que toma a su sistema arrancar, se reducir dramticamente. Menor uso de memoria. Generalmente un kernel personalizado utiliza menos recursos de memoria que un kernel
GENERIC, lo cual es importante, ya que el kernel debe encontrarse presente en memoria real. Por esta razn, un
kernel personalizado puede ser de gran utilidad en sistemas con pequea cantidad de memoria RAM.
Soporte para hardware adicional. Un kernel personalizado le permite aadir dispositivos tal como tarjetas de sonido, las cuales no estan incluidas en el kernel GENERIC.
mount /cdrom mkdir -p /usr/src/sys ln -s /usr/src/sys /sys cat /cdrom/sys/ssys.[a-d]* | tar -xzvf
Posteriormente, dirijase al directorio arch/conf y copie el chero de conguracin GENERIC con el nombre que desee. Por ejemplo:
# cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL
Tradicionalmente, este nombre se escribe con maysuculas y, si usted cuenta con varias maquinas FreeBSD, con diferente hardware, es una buena idea nombrar el kernel, igual que el nombre de host de cada maquina. En este caso, para efectos de este ejemplo, le llamaremos MYKERNEL .
69
Nota: Todo esto deber llevarse a cabo como superusuario (root), o de lo contrario se tendra como resultado errores de negacin de permisos (permission denied).
Ahora edite el chero de conguracin MYKERNEL, con su editor de textos favorito. Si se trata de una instalacin reciente probablemente el nico editor disponible sea vi, del cual es complicado explicar su uso detallado en este documento, pero existen bastantes libros que detallan su uso, puede ver algunos en la bibliografa. De cualquier manera FreeBSD ofrece un editor de uso muy sencillo, llamado ee, el cual, si usted es principiante, ser el editor de su eleccin. Sientase en libertad de modicar los comentarios en la parte superior, para que reejen su conguracin o bien los cambios realizados, para diferenciarlo del chero GENERIC. Si ha compilado un kernel, bajo SunOS o algun otro sistema operativo BSD, seguramente la informacin de este chero le ser muy familiar. Por otro lado, si usted esta emigrando de otros sistemas operativos como DOS, el chero GENERIC puede parecerle intimidante, as que siga las instrucciones descritas en El Fichero de Conguracin detenidamente y con sumo cuidado.
Nota: Asegurese siempre de vericar el chero /usr/src/UPDATING, antes de realizar cualquier actualizacin del sistema, en el caso de que se sincronice con el source-tree, para contar con la ltima versin de FreeBSD. El chero /usr/src/UPDATING cuenta con toda la informacin importante, relacionada con actualizaciones. Al ser distribuida con FreeBSD, esta informacin deber estar ms actualizada que la provista por el handbook.
Ahora es momento de llevar a cabo la compilacin del cdigo fuente del kernel. Existen dos procedimientos para llevar esto a cabo, y el que usted utilice depender del por que esta personalizando su kernel, as como la versin de FreeBSD que este utilizando.
Si unicamente ha instalado el cdigo fuente del kernel, utilice el procedimiento 1. Si usted esta ejecutando un versin de FreeBSD anterior a 4.0, y no esta actualizando a la versin 4.0 o mayor, mediante el procedimiento make world, utilice el procedimiento 1. Si esta personalizando su kernel, sin actualizar el cdigo fuente (quizs solo para aadir una nueva opcin como
IPFIREWALL) puede utilizar cualquier de los dos procedimientos.
Si esta reconstruyendo su kernel, como parte del proceso de actualizacin por medio de make world, entonces utilice el metodo 2.
70
Captulo 8. Conguracin del Kernel de FreeBSD Procedimiento 1. Compilando el Kernel de la forma tradicional 1. Ejecute cong(8) para generar el cdigo fuente del kernel.
# /usr/sbin/config MYKERNEL
2.
3.
Compile el kernel.
# make depend # make
4.
2.
Compile el kernel.
# make buildkernel KERNCONF=MYKERNEL
3.
Nota: Para versiones de FreeBSD 4.2 y anteriores, deber reemplazar KERNCONF= con KERNEL=. Para versiones 4.2-STABLE que fueron obtenidas posterior al 2 de Febrero del 2001, si se reconoce este parmetro como KERNCONF=.
Si usted aun no ha actualizado su sistema fuente (source tree) (no ha ejecutado CVSup, CTM o bien usado anoncvs), entonces deberia utilizar la siguiente secuencia de comandos; config, make depend, make, make install. El kernel nuevo ser copiado al directorio raz como /kernel y el antiguo kernel, ser renombrado como /kernel.old. Ahora deber reiniciar su sistema, utilizando su nuevo kernel. En caso de que se presente algun problema, hay algunos consejos para la resolucin de problemas, al nal de este captulo. Asegurese de leer la seccin que explica como recuperar el sistema, en caso de que su kernel no desee bootear .
Nota: Si usted ha aadido nuevos dispositivos (tales como tarjetas de sonido) puede ser necesario que deba crear los cheros de dispositivos, bajo el directorio /dev, antes de poder utilizarlos. Para ms informacin al respecto, revise la seccin "Creacin de Ficheros de Dispositivos" ms adelante en este captulo.
71
A continuacin encontrar un ejemplo del chero GENERIC, con algunos comentarios adicionales para aclaraciones donde haya sido necesario. Este ejemplo debe ser igual, o muy simlar, a su copia localizada en /usr/src/sys/i386/conf/GENERIC . Para ver mas detalles sobre las posibles opciones del kernel, vea el chero /usr/src/sys/i386/conf/LINT.
Nota: N de T: En virtud de que el chero que usted encontrar en su sistema es un chero en ingls ;), he decidido dejar lo que corresponde al chero GENERIC, tal como usted lo ver, y slo traducir los comentarios previos de cada opcin. En caso de que algn comentario del chero sea traducido (por claridad), favor de considerarlo como un extra, que no encontrar en su chero original. Gracias por su comprensin.
# # # # # # # # # # # # # # # # # #
GENERIC -- Generic kernel configuration file for FreeBSD/i386 For more information on this file, please read the handbook section on Kernel Configuration Files: http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html The handbook is also available locally in /usr/share/doc/handbook if youve installed the doc distribution, otherwise always see the FreeBSD World Wide Web server (http://www.FreeBSD.ORG/) for the latest information. An exhaustive list of options and more detailed explanations of the device lines is also present in the ./LINT configuration file. If you are in doubt as to the purpose or necessity of a line, check first in LINT. $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246 2000/03/09 16:32:55 jlemon Exp $
Las siguientes palabras claves son obligatorias en todo kernel que se vaya a recompilar:
72
Esto se reere a la arquitectura de la maquina. La cual debe ser i386, alpha, o pc98.
cpu cpu cpu cpu I386_CPU I486_CPU I586_CPU I686_CPU
Lo anterior especifca el tipo de procesador con que cuenta su sistema. En este caso puede dejar varias opciones (por ejemplo en el caso de que no este seguro si su procesador es I586_CPU o bien I686_CPU), de cualquier forma para un kernel personalizado siempre es preferible especicar el tipo de procesador con que cuenta su sistema. Si usted no esta seguro del tipo de procesador con que cuenta su sistema, puede utilizar el comando dmesg, para ver los mensajes de envi el kernel al arrancar el sistema, y donde podr ver como detecto el CPU. La arquitectura Alpha cuenta con diferentes valores para el cpu. Los cuales incluyen:
cpu cpu EV4 EV5
Si usted utiliza un sistema Alpha, debe estar utilizando un tipo de CPU descrito en la parte superior.
ident GENERIC
Este es el identicador del kernel. Esta opcin deber cambiarla a como desee nombrar su kernel, como en el ejemplo anterior; MYKERNEL. El valor que asigne en la opcin ident, ser el nombre que aparecer en la pantalla, al momento de iniciar el kernel del sistema, de tal forma que es recomendable personalizar este parmetro, ms aun si usted piensa contar con un kernel diferente al usual (por ejemplo, en el caso de que desee contar con un kernel experimental).
maxusers n
La opcin maxusers, establece el tamao de un numero importante de tablas del sistema. Este numero supuestamente debe ser muy similar al numero de usuarios que usted espera ejecutar simultaneamente en su sistema. Comenzando con FreeBSD 4.5, el sistema automticamente congurar esta opcin para usted, si es que explicitamente le asigna el valor de 0 a esta opcin1. Si usted esta utilizando una versin de FreeBSD anterior, o bien usted desea controlar este parmetro, deber establecer cuando menos un valor de 4, especialmente si usted utiliza el Sistema de Ventanas X, o compila software. La razn de esto es que una de las tablas ms importantes que controla maxusers, es la que controla el numero mximo de procesos que se pueden ejecutar simultaneamente en el sistema, lo cual se establece como; 20 + 16 * maxusers, por lo que si establece este valor como 1, quiere decir que podr ejecutar 36 procesos simultaneamente, incuyendo los de inicio, algo as como 18, y los 15 que se ejecutaran al arrancar el Sistema de Ventanas X. Incluso una simple tarea, como leer una pagina de ayuda man, incia como nueve procesos, para efecto de ltrar, descomprimir y visualizar. Establecer un valor de 64 a maxusers, le permitira ejecutar 1044 procesos simultaneamente, que debe ser suciente para casi cualquier uso. De cualquier forma, si llega a notar su tabla de proc llena (proc table full), al tratar de iniciar algn proceso, o bien esta ejecutando un servidor con bastantes usuarios simultaneos (como ftp.FreeBSD.org), siempre puede incrementar este numero y recompilar su kernel.
Nota: La opcin maxusers no limita el numero de usuarios que pueden ingresar al sistema. Simplemente establece valores, para el tamao de varias tablas del sistema, a valores razonables, considerando el numero de usuarios que usted espera tener en su sistema y el numero de procesos que cada uno de estos usuarios
73
# Floating point support - do not disable. device npx0 at nexus? port IO_NPX irq 13
El dispositivo npx0 es la interfaz del punto otante en FreeBSD, el cual es parte del hardware como co-procesador o bien el software emulador matemtico. Este no es opcional.
# Pseudo devices - the number indicates how many units to allocate. pseudo-device loop # Network loopback
Este es el dispositivo genrico de TCP/IP, loopback. Si usted hace telnet o FTP a localhost (ej. 127.0.0.1), el enlace se realiza por medio de este pseudo-dispositivo. Este es obligatorio. Todo lo que veremos a continuacin, es ms o menos opcional. Vea las notas debajo de cada opcin, para ms informacin al respecto.
#makeoptions options DEBUG=-g MATH_EMULATE #Build kernel with gdb(1) debug symbols #Support for x87 emulation
Mediante esta lnea podemos indicarle al kernel que simule un co-procesador matemtico, si su maquina no cuenta con uno (386 o 486SX). Si usted cuenta con una 486DX, o una 387 o 486SX (con chip separado de 387 o 487), o ms actual (Pentium, Pentium II, etc.), puede comentar esta lnea sin problemas (N de T. Para comentar las lneas de este chero deber agregar el simbolo # antes de la lnea, con lo cual la lnea ser ignorada).
Nota: La rutina de emulacin del co-procesador matemtico que viene con FreeBSD, no es muy exacta. Si usted no cuenta con un co-procesador metamtico, y requiere la mayor exactitud posible, es recomendable que modique esta opcin a quedar como GPL_MATH_EMULATE, para usar el soporte de GNU, que no se incluye por omisin, por cuestiones de licencia.
options
INET
#InterNETworking
Soporte para redes. Deje esta opcin incluida, aun si no planea esta conectado a una red. La mayora de los programas requieren cuando menos conexin con el dispositivo loopback (ej. al hacer conexin con su propia maquina), asi que esto es obligatorio.
options INET6 #IPv6 communications protocols
Esto es el sistema de cheros bsico del disco duro. Incluyalo si desea arrancar su sistema del disco duro.
options UFS_DIRHASH #Improve performance on big directories
Esta opcin incluye cdigo para acelerar las operaciones del disco duro en directorios de gran tamao, aunque esto implique sacricar algo de memoria adicional. Usted normalmente dejaria esta opcin si es para un servidor grande o
74
Captulo 8. Conguracin del Kernel de FreeBSD bien una estacin de trabajo interactiva y eliminarlo si esta utilizando FreeBSD en un sistema pequeo donde es importante conservar la memoria o bien si la velocidad del disco duro no es tan importante, tal como un rewall.
options SOFTUPDATES #Enable FFS soft updates support
Esta opcin habilita soft updates en el kernel, lo cual acelera la escritura en los discos. Esta opcin se habilita por default desde la rama 4.X, pero es posible que no este habilitada. Revise la respuesta que le da mount(8) para vericar si cuenta con esta opcin. Si no ve la opcin soft-updates, deber activarla usando tunefs(8) o newfs(8) para nuevos sistemas de cheros.
options options MFS MD_ROOT #Memory Filesystem #MD is a potential root device
Este es el sistema de mapeo de memoria. Esto basicamente es el mapeo de la memoria RAM del disco para acceso rpido y almacenar cheros temporales, til si cuenta con bastante memoria swap, de la cual desee tomar ventaja. Un sitio perfecto para montar la particin MFS es el directorio /tmp, esto lo puede hacer aadiendo la siguiente lnea al chero /etc/fstab:
/dev/ad1s2b /tmp mfs rw 0 0
Ahora simplemente necesita reiniciar su sistema o bien, ejecutar el comando mount /tmp.
options options NFS NFS_ROOT #Network Filesystem #NFS usable as root device, NFS required
El sistema de cheros de red. A menos de que planee montar particiones desde un servidor Unix atravs de TCP/IP, esta lnea puede ser comentada.
options MSDOSFS #MSDOS Filesystem
El sistema de cheros de MS-DOS. A menos de que planee montar una particin con formato de DOS, al momento de arrancar el sistema, puede deshabilitar esta opcin sin problema alguno. Automticamente ser cargado la primera vez que monte una particin DOS, como se explic anteriormente. As mismo la excelente aplicacin mtools (que esta disponible de la coleccin de ports), le permite accesar a diskettes con formato DOS, sin necesidad de montarlos o desmontarlos (y no requiere para nada de MSDOSFS).
options options CD9660 CD9660_ROOT #ISO 9660 Filesystem #CD-ROM usable as root, CD9660 required
El sistema de cheros ISO 9660 para CDROMs. Comente esta opcin si usted no cuenta con una unidad de CDROM o bien slo monta CDs de datos ocasionalmente (en virtud de que ser cargado dinmicamente la primera vez que se utilice para un CD de datos). Los CDs de audio no requieren de esta opcin.
options PROCFS #Process filesystem
El sistema de cheros de procesos. Este es un sistema de cheros virtual, montado en /proc, que permite que programas como ps(1) le den mayor informacin sobre los procesos que se estn ejecutando.
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
Compatibilidad con 4.3BSD. Conserve esta opcin; algunos programas se comportaran de una forma extraa si esta opcin es comentada.
75
Esta opcin le indica al kernel hacer una pausa de 15 segundos antes de realizar una prueba en cada dispositivo SCSI de sus sistema. Si usted slo cuenta con dispositivos IDE, puede ignorar esta opcin, de otra forma quizs desee reducir el tiempo a 5 segundos, para efecto de acelerar el arranque. Claro esta, que si hace esto, y FreeBSD tiene problemas para reconocer sus dispositivos SCSI, deber incrementar este valor nuevamente.
options UCONSOLE #Allow users to grab the console
Permite el uso de la consola, que es muy til para usuarios del sistema X. Por ejemplo, puede crear una consola xterm, al teclear xterm -C, que servira para desplegar mensajes (usando talk), as como enviar (usando write) mensajes, o bien, visualizar cualquier otro mensaje enviado por el kernel, sin necesidad de salir de su entorno grco.
options USERCONFIG #boot -c editor
Esta opcin le permite ejecutar el editor visual de conguracin, desde el men de arranque.
options KTRACE #ktrace(1) support
Esta opcin habilita el proceso de rastreo del kernel, que es de utilidad para efecto de depuracin.
options SYSVSHM #SYSV-style shared memory
Esta opcin provee memoria compartida, para el System V. El uso ms comn de esto es la extensin XSHM del servidor X, del cual muchos programas de grcos-intensos, toman ventaja, para contar con mayor velocidad. Si usted utiliza el entorno grco X, denitivamente querra incluir esta opcin.
options SYSVSEM #SYSV-style semaphores
Soporte para los semaforos del System V. Con menos uso que el anterior, pero slo agregar unos cuantos cientos de bytes a su kernel.
options SYSVMSG #SYSV-style message queues
Soporte para mensajes de System V. Nuevamente, slo aadir unos cientos de bytes a su kernel.
Nota: El comando ipcs(1) le mostrar cualquier proceso que haga uso de estas componentes de System V.
options options
Extensiones de tiempo-real aadidas en POSIX en 1993. Algunas aplicaciones de la coleccin de ports, utilizan estas extensiones (tal como StarOfce).
options ICMP_BANDLIM #Rate limit bad replies
76
Captulo 8. Conguracin del Kernel de FreeBSD Esta opcin permite a ICMP manejar errores,en cuanto al lmite de ancho de banda a utilzar. Es recomendable dejar esta opcin tal cual, en virtud de que le permite protejer su sistema contra ataques de paquetes de Negacin de Servicio (Denial of Service - DoS).
# To make an SMP kernel, the next two are needed #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O
Todas las PCs soportadas por FreeBSD cuentan con uno de estos. Si usted cuenta con una IBM PS/2 (Arquitectura de Micro Canal), en este momento usted no puede ejecutar FreeBSD (se esta trabajando en este soporte).
device eisa
Incluya esta opcin, si cuenta con una tarjeta madre de tipo EISA. Esto habilita la autodeteccin y conguracin del soporte para los dispositivos que hacen uso del bus EISA.
device pci
Incluya esta opcin si cuenta con una tarjeta madre basada en PCI. Esto habilita la auto-deteccin de las tarjetas PCI y de los canales a utilizar en los buses PCI e ISA.
# Floppy drives device fdc0 device fd0 device fd1
Este es el controlador para diskettes. El dispositivo fd0 corresponde a la disquetera A: y fd1 corresponde a la disquetera B:.
device ata
Este controlador da soporte a todos los dispositivos ATA y ATAPI. Usted slo necesita incluir esta opcin una sola vez (device ata), para que el kernel detecte todos los dispositivos PCI ATA/ATAPI de sus sistema.
device atadisk # ATA disk drives
Este es necesario junto con device ata para controladores de discos ATAPI.
device atapicd # ATAPI CDROM drives
Este es necesario junto con device ata para controladores de CDROM ATAPI.
device atapifd # ATAPI floppy drives
Este es necesario junto con device ata para controladores de disqueteras ATAPI.
device atapist # ATAPI tape drives
Este es necesario junto con device ata para controladores de cintas ATAPI.
77
Esta hace que el numero de controlador sea esttico (como en el viejo controlador) o de lo contrario este numero es asignado dinmicamente.
# ATA and ATAPI devices device ata0 device ata1
# # # # # # #
EISA AHA1742 family AHA2940 and onboard AIC7xxx devices AMD 53C974 (Teckram DC-390(T)) DPT Smartcache - See LINT for options! Qlogic family NCR/Symbios Logic NCR/Symbios Logic (newer chipsets)
Controladores SCSI. Comente cualquiera que no se encuentre en su sitema. Si cuenta con un sistema unicamente IDE, puede eliminar todos.
# SCSI peripherals device scbus device da device sa device cd device pass access)
# # # # #
SCSI bus (required) Direct Access (disks) Sequential Access (tape etc) CD Passthrough device (direct SCSI
Perifricos SCSI. Nuevamente, comente todos los que no esten presentes en su sistema, si slo cuenta con hardware IDE, puede eliminarlos por completo.
# RAID controllers device ida device amr device mlx
Controladores de soporte RAID. Si su sistema no cuenta con estos, puede comentarlos o eliminarlos.
# atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc0 at isa? port IO_KBD
Este controlador (atkbdc) provee servicios de E/S a teclados AT y dispositivos de tipo PS/2. Este controlador es necesario para el teclado (atkbdc) y el dispositivo puntero (N de T: Mejor conocido como ratn) tipo PS/2 ( psm).
device atkbd0 at atkbdc? irq 1
78
Captulo 8. Conguracin del Kernel de FreeBSD El controlador atkbd, junto con el controlador atkbdc, provee acceso al teclado AT 84 o bien al teclado de tipo AT mejorado, que es conectado al controlador de teclado AT.
device psm0 at atkbdc? irq 12
El dispositivo sc0 es el controlador por defaault, que recuerda a la consola SCO. Dado que la mayora de los programas de pantallacompleta, accesan a su consola por medio de una librera de base de datos para terminales, como termcap, no debe importar si utiliza este o bien vt0, el controlador de compatibilidad de VT220. Si cuando accesa al sistema, tiene problemas para manejar programas que utilizan pantalla completa, cuando ingrese al sistema, establezca su variable TERM a scoansi.
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver #device vt0 at isa? #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor # If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines #options PCVT_SCANSET=2 # IBM keyboards are non-std
Este es el controlador de consola compatible con VT220, anteriormente compatible con VT100/102. Este sirve para algunas laptops que tienen incompatibilidad de hardware con sc0. Tambin es recomendable establecer su variable de entorno TERM como vt100 o vt220. Este controlador ha probado ser de gran utilidad en diferentes mquinas en una red, donde las entradas para termcap o terminfo para el dispositivo sc0 no estn disponibles vt100 debe estar disponible en practicamente cualquier plataforma.
# Power management support (see LINT for more options) device apm0 at nexus? disable flags 0x20 # Advanced Power Management
Soporte para tarjetas PCMCIA. Debe conservar estas si usted utiliza una laptop.
# Serial (COM) ports device sio0 device sio1
at isa? port IO_COM1 flags 0x10 irq 4 at isa? port IO_COM2 irq 3
79
Estos son los cuatro puertos seriales, conocidos en el mundo MS-DOS/Windows como COM1 a COM4.
Nota: Si usted cuenta con un mdem interno conectado al puerto COM4 y un puerto serial en COM2, deber cambiar el IRQ del mdem al 2 (por alguna obscura razn el IRQ 2 = IRQ 9), de manera que pueda accederlo desde FreeBSD. Si usted cuenta con una tarjeta serial de puertos mltiples, verique la pgina de ayuda sio(4) para ms informacin sobre los valores que debe utilizar en estas lneas. Algunas tarjetas de video (principalmente aquellas basadas en chips S3) utilizan direcciones de E/S de la forma 0x*2e8, y dado que muchos chips no decodican completamente el espacio de direccin de E/S de 16-bit, se congelan con estas tarjetas, haciendo que el uso del puerto COM4 sea prcticamente imposible. Es necesario que cada puerto serial cuente con su propia direccin IRQ (a menos que este utilizando una tarjeta de puertos mltiples, donde se permite el compartir IRQs), as que los IRQs que por default manejan los puertos COM3 y COM4, no pueden ser utilizados.
at isa? irq 7
device
plip
Este es para la unidad Iomega Zip. Que requiere soporte scbus y da. Se tiene conocimiento de un mejor desempeo con puertos en modo EPP 1.9.
# PCI Ethernet NICs. device de device fxp device tx device vx
# # # #
DEC/Intel DC21x4x (Tulip) Intel EtherExpress PRO/100B (82557, 82558) SMC 9432TX (83c170 EPIC) 3Com 3c590, 3c595 (Vortex)
80
Varios controladores de tarjetas de red PCI. Puede comentar o eliminar todas aquellas que no esten presentes en su sistema.
# PCI Ethernet NICs that use the common MII bus controller code. device miibus # MII bus support
El soporte del bus MII, es requerido por algunas tarjetas de red Ethernet PCI 10/100, especcamente aquellas con transistores dependientes de MII o bien aquellos con transistores que operan igual que MII. El aadir el soporte device miibus al chero de conguracin del kernel nos permite contar con soporte para todos los dispositivos API genericos de MII y controladores de PHY, incluyendo los genricos de PHY para los cuales no hay un controlador especco.
device device device device device device device device device dc rl sf sis ste tl vr wb xl # # # # # # # # # DEC/Intel 21143 and various workalikes RealTek 8129/8139 Adaptec AIC-6915 (Starfire) Silicon Integrated Systems SiS 900/SiS 7016 Sundance ST201 (D-Link DFE-550TX) Texas Instruments ThunderLAN VIA Rhine, Rhine II Winbond W89C840F 3Com 3c90x (Boomerang, Cyclone)
Controladores para tarjetas Ethernet ISA. Vea el chero /usr/src/sys/i386/conf/LINT para ver que tarjetas estn soportadas, y por cuales controladores.
81
El soporte ether slo es necesario si cuenta con una tarjeta Ethernet. Este incluye el soporte genrico para el cdigo Ethernet.
pseudo-device sl 1 # Kernel SLIP
El dispositivo sl es el soporte para SLIP. El cual casi ha sido suplantado por PPP, que es ms sencillo de congurar, ms adecuado para conexiones de mdem a mdem y ms poderoso. El numero posterior a sl, especifca cuantas sesiones simultaneas se pueden soportar por SLIP.
pseudo-device ppp 1 # Kernel PPP
Este es el soporte del kernel para conexiones PPP, por medio de telfono. Existe tambin una versin de PPP como aplicacin ( userland), que utiliza el dispositivo tun y ofrece mayor exibilidad y funciones, tal como el marcado a peticin. El numero posterior a ppp especifca cuantas conexiones PPP se pueden mantener de manera simultanea.
pseudo-device tun # Packet tunnel.
Este dispositivo es utilizado por la aplicacin PPP userland. El numero posterior a tun, especifca el soporte mximo de sesiones PPP simultaneas. Vea la seccin PPP de este libro, para mayor informacin al respecto.
pseudo-device pty # Pseudo-ttys (telnet etc)
Esta es una pseudo-terminal o bien un puerto de acceso simulado. Es utilizado para conexiones por medio de telnet y sesiones rlogin, xterm, y algunas otras aplicaciones tal como emacs. Un numero despus de pty indica el numero de ptys a crear. Si usted requiere de ms de las 16 xterm y/o logins remotos que se crean por default, asegurese de incrementar el numero de acuerdo a sus necesidades, sin exceder el mximo de 256.
pseudo-device md # Memory disks
o
pseudo-device gif 4 # IPv6 and IPv4 tunneling
Esto permite el envo de IPv6 sobre IPv4, IPv4 sobre IPv6, IPv4 sobre IPv4 e IPv6 sobre IPv6. Desde la versin 4.4 de FreeBSD, el dispositivo gif es auto-clonable, y usted debiese utilizar el primer ejemplo (sin el numero despus de gif). Versiones anteriores de FreeBSD requieren de este numero.
pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
Este pseudo-dispositivo captura los paquetes que han sido enviados y los redirecciona hacia el demonio traductor de IPv4/IPv6.
# The bpf pseudo-device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! pseudo-device bpf # Berkeley packet filter
82
Captulo 8. Conguracin del Kernel de FreeBSD Este es el Filtro de Paquetes de Berkeley. Este pseudo-dispositivo permite a las interfaces de red colocarse en modo promiscuo, capturando cada paquete en una transmisin de red (ej. una Ethernet). Estos paquetes pueden ser capturados y examinados por medio del programa tcpdump(1).
Nota: La opcin bpf pseudo-device tambin es utilizada por dhclient(8) para obtener la direccin IP del ruteador por default (gateway). Si usted utiliza DHCP, deje esta opcin habilitada.
# USB support #device #device #device #device #device #device #device #device #device # USB Ethernet, #device #device #device
uhci ohci usb ugen uhid ukbd ulpt umass ums requires mii aue cue kue
# # # # # # # # #
UHCI PCI->USB interface OHCI PCI->USB interface USB Bus (required) Generic Human Interface Devices Keyboard Printer Disks/Mass storage - Requires scbus and da Mouse
# ADMtek USB ethernet # CATC USB ethernet # Kawasaki LSI USB ethernet
Soporte para varios dispositivos USB. Para ms informacin y para ver todos los dispositivos soportados por FreeBSD, favor de consultar el chero
/usr/src/sys/i386/conf/LINT.
Esto signica que debe buscar alguna entrada que comience con acd0 en el directorio /dev, posiblemente seguido de una letra, tal como c, o bien precedido de una letra como r, que signica que es el dispositivo raw . Resulta que esos cheros no existen en el directorio /dev, as que debe dirijirse a este directorio y teclear lo siguiente:
# sh MAKEDEV acd0
Cuando este script termine, encontrar que ahora existen los cheros acd0c y racd0c en el directorio /dev, de tal forma que sabr que se ha ejecutado con exito. Para tarjetas de sonido, debe ejecutar el siguiente comando para crear las entradas correspondientes:
83
Nota: Si existen otras personas con acceso a su sistema, cuando cree cheros-nodo para dispositivos tales como tarjetas de sonido, es recomendable proteger estos dispositivos, aadiendolos al chero /etc/fbtab. Vea la pgina de ayuda fbtab(5) para ms informacin al respecto.
El procedimiento mencionado puede servirle para aadir cualquier otro dispositivo no-generico o bien que no exista en el chero /usr/src/sys/i386/conf/GENERIC, para el cual no existan las entradas apropiadas.
Nota: Todos los controladores SCSI utilizan las mismas entradas en /dev, as que no es necesario crearlas. As mismo, las tarjetas de red y pseudo-dispositivos de tipo SLIP/PPP, no cuentan con entradas en el directorio /dev, por lo que tampoco tiene por que preocuparse de estas.
Puede ir directamente al problema en vi, al teclear 17G en el modo de comando. Asegurese de que la palabra clave ha sido escrita correctamente, al compararla con la que corresponde al chero GENERIC o alguna otra referencia.
Cuando el comando make falla: Cuando el comando make da como resultado un error, generalmente es indicio de que el chero de conguracin tiene un error, pero que este error no es tan grave como para que config lo detecte. Revise nuevamente su chero y si aun as no puede detectar el error, enve un correo a Lista de preguntas generales de FreeBSD <freebsd-questions@FreeBSD.org> adjuntando el chero personalizado de su kernel, y debiese ser diagnosticado rpidamente. Al instalar el nuevo kernel se presenta una falla Si el kernel termino de compilarse correctamente, pero presenta una falla al instalarlo (esto es cuando el comando make install o make installkernel da como resultado un Error), lo primero que es necesario revisar, es si su sistema esta ejecutandose en securelevel 1 o mayor (vea init(8)). Aqui lo que sucede es que la instalacin del kernel intenta remover la marca (ag) de inmutable del kernel actual y colocar dicha marca al
84
Captulo 8. Conguracin del Kernel de FreeBSD nuevo kernel. Y en virtud de que securelevel 1 o mayor evita que dicha marca sea removida de cualquier chero del sistema, la instalacin del nuevo kernel debe ser realizada en securelevel 0 o menor. El nuevo kernel no arranca: Si su nuevo kernel no se ejecuta correctamente al arrancar el sistema, o bien falla en reconocer sus dispositivos, no entre en pnico! Afortunadamente BSD cuenta con un excelente mecanismo para recuperarse de un kernel recien instalado que presenta este tipo de errores. Simplemente seleccione el kernel que desea arrancar, al momento que se esta incializado en su sistema FreeBSD, el cargador de arranque (boot loader). Puede accesar a este cuando su sistema se encuentra en cuenta regresiva desde 10. Pulse cualquier tecla excepto la tecla enter, posteriormente teclee unload y posteriormente teclee boot kernel.old , o bien el nombre de chero de cualquier otro kernel que usted sabe que arranacar correctamente. Cuand personalice un kernel, siempre es buena idea contar con un kernel que sabemos que su funcionamiento es correcto, a la mano.
Nota: Recuerde que si tiene problemas para personalizar su kernel, es recomendable asegurarse de contar con un kernel de tipo GENERIC, o algn otro que tenga la seguridad de su funcionamiento y que tenga un nombre que no ser borrado en la siguiente compilacin de kernel. No puede conar en el kernel.old, ya que en cada instalacin de un nuevo kernel, este se sustituye con el ltimo kernel instalado, que pudiese se un kernel no funcional. Tambin recuerde que, en cuanto le sea posible, debe mover el kernel funcional a la ubicacin correcta del kernel, o bien, comandos como ps(1) no trabajarn correctamente. El comando para desbloquear el chero del kernel que instala el comando make (para efecto de usar permanentemente otro kernel) es:
# chflags noschg /kernel
Si no puede ejecutar esto, probablemente su sistema se este ejecutando en un valor mayor a cero de securelevel(8). Edite la lnea kern_securelevel del chero /etc/rc.conf y establezca este valor como -1, y reinicie su sistema. Posteriormente puede regresar este al valor original, cuando este contento con su nuevo kernel. Y si usted desea bloquear su nuevo kernel en su ubicacin, o cualquier otro chero, de tal forma que no pueda ser movido o modicado, puede hacerlo con el comando:
# chflags schg /kernel
El kernel funciona, pero ps ha dejado de funcionar!: Si usted ha instalado un kernel que pertenece a una versin diferente a la del sistema en cuestin, por ejemplo, un kernel 4.X sobre un sistema 3.X, gran variedad de comandos de sistema, como son: ps(1) y vmstat(8) ya no van a funcionar. Deber recompilar la librera libkvm, as como sus utilidades. Es por esta razn, que no es una buena idea utilizar un kernel de una versin diferente al resto del sistema operativo.
Notas
1. El algoritmo de auto-conguracin, establece para maxusers la cantidad igual a la cantidad de memoria en el sistema, con mnimo de 32 y un mximo de 384.
85
Captulo 9. Seguridad
Gran parte de este captulo ha sido tomado del manual de security(7) por Matthew Dillon.
9.1. Sinpsis
Este captulo proveera una introduccin bsica a los conceptos de seguridad de sistema y algunos temas avanzados en FreeBSD. Muchos de los temas se pueden aplicar a la seguridad del sistema asi como tambin a la de Internet en general. Internet ya no es un lugar amistoso en el cual cada quin desea ser un buen vecino. Asegurar su sistema es imprecindible para proteger sus datos, caracterstica intelectual, tiempo, y mucho mas de las manos de hackers y similares. FreeBSD proporciona un arcenal de utilidades y mecanisimos para asegurar la integridad y la seguridad de su sistema y red. Despus de leer este captulo, usted sabr:
Conceptos bsicos de seguridad, con respecto a FreeBSD. Sobre algunos mecanisimos de encriptacin disponibles en FreeBSD, como DES y MD5. Como instalar KerberosIV en versiones anteriores a 5.0. Como instalar Kerberos5 en versiones posteriores a 5.0. Como crear cortafuegos usando IPFW. Como congurar IPsec y crear un VPN entre computadoras FreeBSD/Windows. Como congurar y usar OpenSSH, implementacin de SSH en FreeBSD. Como congurar y cargar los modulos de extensin de control de acceso usando TrustedBSD MAC Framework. Que sistema de archivos ACLs son y como usarlos. Como utilizar las publicaciones de advertencias de seguridad en FreeBSD.
9.2. Introduccin
La seguridad es una funcin que comienza y termina con el administrador de sistema. Mientras que los sistemas multi-usuario BSD UNIX tienen una inherente seguridad, el trabajo de construir y mantener mecanismos de seguridad adicionales para mantener a los usuarios de manera honesta es probablemente una de las unicas tareas del administrador del sistema. Los sistemas son tan seguros como uno los haga, los problemas de seguridad compiten con la necesidad humana de conveniencia. Los sistemas UNIX en general, son capaces de correr una gran cantidad de procesos simultneos, de los cuales muchos de estos son servidores lo que signica que entidades externas pueden conectarse y hablar con ellos. Asi como las mini-computadoras del ayer se convirtieron en los ahora escritorios de trabajo, y las computadoras se interconectaron, la seguridad cada ves se hace un problema mas grande.
86
Captulo 9. Seguridad La seguridad es mejor implementada como cebolla en capas. Basicamente, lo que se quiere hacer es crear la mayor cantidad posible de convenientes capas de seguridad para luego cuidadosamente monitorear el sistema para detectar intrusos. No es conveniente sobreconstruir la seguridad, ya que esta interferira con el aspecto de deteccin, y la deteccin es uno de los mas importantes aspectos de cualquier mecanismo de seguridad. Por ejemplo, no tiene mucho sentido usar los ags de schg (ver chags(1)) en cada sistema binario, ya que mientras este puede protejer los binarios temporalmente, hace que el algun cambio hecho por un atacante sea difcil de detectar y puede resultar que el mecanismo de seguridad no detecte al atacante en lo absoluto. La seguridad del sistema depende tambin de estar preparado para diferentes formas de ataque, incluyendo intentos de quebrar el sistema, o hacer un sistema inservible, pero no intentos de comprometer al usuario root (quebrar root). Los problemas de seguridad estan separados en diferentes categorias: 1. Ataques de Negacin de servicio (DoS). 2. Compromisos en cuentas de usuarios. 3. Compromisos de root por medio de servidores accesibles. 4. Compromisos de root por medio de cuentas de usuarios. 5. Creacin de puertas de entrada. Un ataque de negacin de servicio es una accin que priva al sistema de los recursos requeridos. Generalmente, los ataques DoS son mecanismos de fuerza bruta que intentan quebrar el sistema forzando sus servidores. Algunos ataques DoS intentan aprovecharse de bugs en la red para quebrar el sistema con un solo paquete. Esto puede ser solucionado aplicando en el kernel una actualizacin que arregle el bug. Los ataques en servidores muchas veces pueden ser solucionados aplicando opciones apropiadas para limitar la carga del sistema en condiciones adversas. Los ataques de fuerza bruta en redes son mas complicados. Los ataques con paquetes enmascarados, por ejemplo, son casi imposible de detener, el cual puede desconectar el sistema de Internet. Pueden no quebrar el sistema, pero saturaran la conexin a Internet.
Las siguientes secciones cubrirn los mtodos para asegurar su sistema FreeBSD que fueron mencionados en la seccin anterior a este captulo.
87
Captulo 9. Seguridad directas a root estn deshabilitadas. Es posible hacer esto editando el chero /etc/ssh/sshd_config, asegurando que PermitRootLogin est jado como NO. Considere cada mtodo de acceso - Servicios como FTP puedes tener problemas de seguridad. Las conexiones directas a root deben ser slo permitidas fsicamente en la cnsola de sistema. Por supuesto, como administrador de sistema usted debe poder acceder como root, y nosotros tenemos algunas formas de conseguirlo. Nos aseguraremos de que stas formas tengan autenticacin adicional. Una de las formas de hacer root accesible es agregar cuentas apropiadas del staff al grupo wheel (en /etc/group). Se permite a los miembros del staff puestos en el grupo wheel usar el comando su para acceder root. Nunca debe dar a miembros del staff acceso nativo a wheel cuando se crea la cuenta. Las cuentas del staff deben estar colocadas en grupos de staff, para despus agregar a aquellos deseados al grupo wheel en el chero /etc/group. Solamente a aquellos que realmente se necesiten en este grupo deben ser agregados. Es tambin posible usar un mtodo de autenticacin tal como Kerberos, utilizar el chero .k5login en la cuenta root para permitir a ksu(1) que root no necesite a nadie en el grupo wheel. Esta puede ser una mejor solucin puesto que el mecanismo de wheel todava permite al intruso romper root, si el intruso ha conseguido quebrar el archivo de contraseas y el grupo del staff. Mientrs que usar el mecanismo de wheel es mejor que no tener nada en lo absoluto, no es necesariamente la opcin mas segura. Una manera indirecta de asegurar las cuentas del staff y usar el acceso a root de ultima instancia es usar un mtodo de acceso alternativo conocido como starring. Este mtodo marca las contraseas cifradas con un solo *. Este comando actualizar chero de /etc/master.passwd y la base de datos de usuario/contrasea para desabilitar los logins con autenticacin de contrasea. Una cuenta del staff como esta:
foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh
Este cambio evitar que las conexiones normales ocurran, ya que la contrasea cifrada nunca coincidir con *. Habiendo hecho esto, los miembros del staff debern usar otros mtodos de autenticacin como kerberos(1) o ssh(1), usando pares de claves pblicas/privadas. Al usar algo como Kereberos, uno debe asegurar generalmente las mquinas que corran los servidores Kereberos, asi como tambin su estacin de trabajo. Al usar pares de claves pblicas/privadas con ssh, uno debe asegurar generalmente la mquina usada para hacer el login (generalmente una estacin de trabajo). Una capa adicional de proteccin se puede agregar a los pares de claves pblicas/privadas protegiendolas con contrasea en el momento de crearlas con ssh-keygen(1). Pudiendo marcar las contraseas de las cuentas del staff tambin garantiza que los miembros del staff solamente pueden acceder al sistema por medio de un mtodo seguro. Esto fuerza a los miembros del staff a acceder al sistema usando solamente formas seguras y conexiones cifradas para todas sus sesiones, lo que protege de una de las vulnerabilidades ms usadas por los intrusos.
88
10.1. Sinpsis
FreeBSD puede ser utilizado para imprimir en una gran variedad de impresoras, desde las antiguas impresoras de matriz de punto, hasta las ms modernas impresoras laser, y todo lo que existe en medio de estas, permitiendole crear impresiones de alta calidad, desde cualquier aplicacin que este utilizando. FreeBSD tambin puede ser congurado para actuar como servidor de impresin en una red; en esta modalidad, FreeBSD puede recibir peticiones de impresin de una gran cantidad de computadoras, incluyendo computadoras corriendo FreeBSD, Windows y MacOS. FreeBSD verica que un trabajo sea impreso a la vez, y puede mantener estadsticas sobre que usuario y maquina son los que ms imprimen, insertar una pgina de aviso (titulares o pginas de encabezado), antes de cada trabajo para vericar de quien es cada impresin, y ms. Al concluir el presente captulo, usted sabr:
Como congurar la cola de impresin en FreeBSD. Como instalar ltros de impresin, para manejar diferentes trabajos especiales, incluyendo la conversin de documentos a formatos aptos para la impresora. Como habilitar encabezados, o titularess en sus impresiones. Como imprimir en impresoras conectadas a otras computadoras Como imprimir en impresoras conectadas directamente a la red. Como controlar restricciones de impresin, incluyendo limitantes en el tamao de los trabajos de impresin, y restringiendo la impresin a ciertos usuarios. Como mantener estadsticas de impresin, y cuentas para el uso de la impresora. Como solucionar problemas de impresin comunes.
10.2. Introduccin
Para efecto de poder utilizar impresoras con FreeBSD, es necesario que congure estas, para trabajar con el sistema de cola de impresin de Berkeley, tambin conocido como Sistema de Cola LPD. Este es el sistema de control de impresin estndar en FreeBSD. Este captulo introduce en el sistema LPD, llamado comunmente slo LPD, e introduce en la conguracin del mismo. Si usted esta familiarizado con el sistema de cola de impresin LPD, o bien, con algun otro sistema de impresin, puede saltar a la seccin Congurando el sistema de Cola de Impresin. La aplicacin LPD es responsable de controlar todo lo que se reere a impresin. Es responsable de un gran numero de cosas, tales como:
89
Controla el acceso a las impresoras conectadas directamente al ordenador y las impresoras conectadas a otras mquinas de la red. Habilita a usuarios, para efecto de que puedan enviar cheros a imprimir; estos envios se conocen como trabajos (jobs). Previene el hecho de que varios usuarios accesen a la impresora al mismo tiempo, al mantener un orden en la cola de impresin (queue) para cada impresora. Puede imprimir encabezados (header) (tambin conocidos como titularess o pginas de aviso), de tal forma que los usuarios identiquen fcilmente sus impresiones, de una pila de impresiones. Se ocupa de los parmetros para impresoras conectadas a puertos seriales. Puede enviar trabajos de impresin por medio de una red, a una cola LPD de una maquina remota. Puede ejecutar ltros especiales para dar formato a trabajos que requieren de un manejo de lenguaje de impresin diferente o impresoras de diferentes capacidades. Puede mantener un registro por uso de la impresora.
Por medio de un chero de conguracin (/etc/printcap), y por medio de programas especiales de ltraje, usted puede habilitar al sistema LPD para hacer todo o una parte de lo mencionado anteriormente, para una gran variedad de impresoras.
El sistema LPD opera los trabajos de impresin es segundo plano; esto es, que usted no tiene que esperar a que los datos sean pasados a la impresora para continuar trabajando. Convenientemente LPD puede ejecutar un trabajo para que sea ltrado, para aadir caracteres de da/hora o bien convertir un chero con formato especial (tal como cheros TeX DVI) a un formato que la impresora entiende. De tal manera que usted no tenga que hacer estos pasos manualmente. Muchos programas, libres y comerciales, proveen de un sistema de impresin que esta basado en el sistema de cola de impresin. Al congurar su sistema de cola de impresin, usted podr soportar otro software que instale en el futuro o el que tiene actualmente.
Vea la seccin Conguracin Simple de una Impresora, para aprender a conectar una impresora, indicarle a LPD como comunicarse con ella, e imprimir cheros de texto plano en dicha impresora.
90
Vea la seccin Conguracin Avanzada de una Impresora, para ver como imprimir gran variedad de formatos especiales, imprimir encabezados, para imprimir por medio de una red, controlar acceso a las impresoras y crear cuentas de impresin.
La seccin Instalacin Fsica, le da algunos consejos sobre como instalar su impresora a los puertos de su computadora. La seccin Instalacin de Software, le muestra como instalar y congurar el chero de conguracin de LPD (/etc/printcap).
Si usted esta instalando una impresora que utiliza protocolos de red para imprimir en lugar de una conexin directa a su puerto serial o paralelo, vea la seccin Impresoras con Interfaces de Red para Secuencia de Datos. Aun cuando esta seccin se llama Conguracin Simple de una Impresora, puede resultar un tanto complicada. Conseguir que su impresora trabaje con su ordenador y con la cola de impresin LPD es la parte ms compleja. Las opciones avanzadas, tal como imprimir encabezados y crear cuentas, son sencillas una vez que su impresora est trabajando. 10.3.1.1. Instalacin Fsica Esta seccin le informa sobre varias fomras en que puede usted conectar la impresora a su PC. Se describen los tipos de puertos y cables, as como la conguracin que debe tener en su kernel, para permitir que FreeBSD se pueda comunicar con su impresora. Si ya ha conectado su impresora y ha impreso exitosamente trabajando en otro sistema operativo, probablemente desee brincar a la seccin Conguracin del Software. 10.3.1.1.1. Puertos y Cables Practicamente cualquier impresora que adquiera hoy en da para PC, cuenta con soporte para una o ambas interfaces que se presentan a continuacin:
La interfaz serial, utiliza el puerto serial de su computadora para enviar datos a la impresora. La interfaz serial es comn en la industria de la computacin y los cables existen disponibles facilmente e incluso sencillos de hacer. En ocasiones las interfaces seriales requieren de cables especiales y posiblemente cierta conguracin compleja de opciones de comunicacin. La interfaz en paralelo utiliza el puerto paralelo de su computadora para enviar datos a la impresora. Las interfaces en paralelo son comunes en el mercado de las PCs. Los cables son fciles de conseguir, pero un poco ms complicados de hacer a mano. Normalmente no existen opciones de comunicacin, haciendo su conguracin mucho ms sencilla. En ocasiones las interfaces en paralelo son conocidas como interfaces Centronics, en virtud del tipo de conector en la impresora.
91
Captulo 10. Imprimir En trminos generales los interfaces seriales son ms lentos que las interfaces en paralelo. Por otro lado los interfaces en paralelo slo ofrecen comunicacin de una va (de la computadora a la impresora), mientras que los seriales ofrecen de dos vas. Gran cantidad de recientes impresoras y puertos paralelos, pueden comunicarse en ambas direcciones bajo FreeBSD, cuando se utiliza un cable compatible con IEEE1284. Normalmente, el nico escenario donde requiere de una comunicacin de ambas vas con la impresora, es cuando la impresora maneja PostScript. Las impresoras que manejan PostScript detallan gran cantidad de informacin. De hecho, los trabajos PostScript, son programas enviados a la impresora; los cuales no requieren de papel y pueden enviar la salida directamente a la computadora. PostScript utiliza una comunicacin de dos vas, para informar al ordenador de los problemas que se puedan presentar, tal como errores en los programas PostScript o papeles atascados. Sus usuarios pueden apreciar este tipo de informacin. Ms all de esto, la mejor forma de contabilizar con impresoras PostScript, es utilizando dos vas de comunicacin: usted solicita a la impresora el conteo de impresiones (esto es, todas las impresiones hechas en su vida), posteriormente envia el trabajo del usuario y repite la solicitud de conteo. Resta los dos valores obtenidos y sabra cuanto debe cobrar al usuario por uso de papel.
10.3.1.1.2. Puertos Paralelos Para conectar una impresora usando el puerto en paralelo, conecte el cable Centronics entre la impresora y la computadora. Las instrucciones que vienen con su impresora, con su computadora o ambas, deben ser una buena gua para llevar esto a cabo. Recuerde cual es el puerto en paralelo que utiliz en su computadora. Para FreeBSD, el primer puerto paralelo es /dev/lpt0, el segundo puerto es /dev/lpt1 y as sucesivamente.
10.3.1.1.3. Puertos Seriales Para conectar una impresora, usando el puerto serial, conecte el cable apropiado entre la impresora y el ordenador. Las instrucciones que vienen con su impresora, computadora o ambas, deben ser sucientes para llevar esto a cabo. Si usted no esta seguro de cual es el cable serial apropiado, puede intentar alguna de las siguientes alternativas:
Un cable de mdem conecta cada pin del conector de un extremo, con el conector del otro extremo, de manera directa. Este tipo de cable tambin se le conoce como cable DTE-a-DCE. Un cablde de mdem-nulo conecta de fomra directa algunos pins, algunos otros son compartidos (envia datos para recibir datos, por ejemplo), y algunos otros internamente son deshabilitados en los conectores. Este tipo de cable tambin se le conoce como cable DTE-a-DTE. Un cable de impresora serial, slo es requerido por algunas impresoras poco comunes, es similar al cable de mdem-nulo, pero este envia seales a su contraparte, en lugar de que internamente se deshabilite.
Tambin es necesario que congure los parmetros de comunicacin para la impresora, nomralmente esto lo realiza desde los controles de la misma o interruptores DIP en la impresora. Selecciones el bps (bits por segundo y en ocasiones llamado velocidad de baudio) ms alto, que tanto su ordenador como impresora soporten. Seleccione 7 u 8 bits de datos; la paridad establezcala en: ninguna, igual o aleatoria y 1 o 2 en bits de paro. Tambin seleccione un protocolo para el control de ujo, que puede ser: ninguno o XON/XOFF (tambin conocido como in-band o software). Recuerde las opciones que haya seleccionado en esta parte, para la conguracin del software, que veremos en la siguiente seccin.
92
Captulo 10. Imprimir 10.3.1.2. Conguracin del Software La presente seccin describe la conguracin necesaria para poder imprimir usando el sistema de cola LPD, bajo FreeBSD. Aqui presentamos un resumen de los pasos necesarios: 1. 2. 3. 4. Congure su kernel, si es necesario, para habilitar el uso del puerto al que esta conectado su impresora. En la seccin Conguracin del Kernel encontrar toda la informacin necesaria, para llevar esto a cabo. Establecer en modo de comunicacin el puerto en paralelo, si es que esta usando dicho puerto. La seccin Estableciendo el Modo de Comunicacin en el Puerto en Paralelo le da detalles al respecto. Compruebe si el sistema operativo puede enviar datos a la impresora. La seccin Vericando la Comunicacin con la Impresora le puede dar detalles sobre como hacer esto. Congurar LPD para su uso con la impresora, modicando el chero /etc/printcap. Posteriormente en este captulo, veremos como se lleva a cabo esto.
10.3.1.2.1. Conguracin del Kernel El kernel del sistema operativo es compilado para trabajar con ciertos dispositivos. El puerto serial o paralelo de su computadora es parte de los dispositivos que debe incluirse en la compilacin del kernel. Por lo tanto, puede que sea necesario recompilar el kernel incluyendo el soporte para el o los puertos serial y/o paralelo, si es que el kernel no cuente ya con dicho soporte. Para averiguar si el kernel que tiene instalado actualmente, cuenta con soporte para el puerto serial, teclee lo siguiente:
# dmesg | grep sioN
Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:
sio2 at 0x3e8-0x3ef irq 5 on isa sio2: type 16550A
entonces su kernel ya cuenta con soporte para el puerto. Para averiguar si su kernel cuenta con soporte para el puerto en paralelo, teclee:
# dmesg | grep lptN
Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:
lpt0 at 0x378-0x37f on isa
entonces su kernel cuenta con soporte para el puerto. Puede que sea necesario recompilar su kernel, para efecto de que su kernel cuente con el soporte para el puerto serial o paralelo que este utilizando su impresora. Para aadir soporte para el puerto serial, vea la seccin en Conguracin del Kernel. Para aadir soporte para el puerto paralelo, vea esa seccin y la siguiente seccin.
93
Captulo 10. Imprimir 10.3.1.3. Aadiendo Dispositivos de Puertos en /dev Aun cuando el kernel cuente con el soporte de comunicaciones para puertos seriales o en paralelo, aun deber de contar con las interfaces necesarias en su sistema, por medio de las cuales el sistema puede enviar y recibir los datos. En el directorio /dev es donde encontrar dichas interfaces en su sistema. Para aadir una entrada, para sus puertos, en el directorio /dev deber: 1. 2. Cambiar de usuario a root con el comando su(1). Ingresar la contrasea de root cuando le sea solicitada. Cambiar su posicin al directorio /dev de la siguiente forma:
# cd /dev
3.
Teclear:
# ./MAKEDEV PUERTO
Donde PUERTO es la entrada del dispositivo que desea crear. Puede utilizar lpt0 para el primer puerto en paralelo, lpt1 para el segundo puerto, y as sucesivamente, para el primer puerto serial puede utilizar ttyd0, y para el segundo ttyd1 y as sucesivamente. 4. Teclee:
# ls -l PUERTO
10.3.1.3.1. Congurando el modo de Comunicacin para el Puerto Paralelo Cuando utiliza el puerto paralelo, puede seleccionar si FreeBSD va a utilizar un modo de comunicacin por medio de interruptores o a peticin, con la impresora.
El mtodo por medio de interruptores es el mtodo que utiliza el kernel GENERICO de FreeBSD. Con este mtodo el sistema operativo utiliza un IRQ para determinar si la impresora esta lista para recibir datos. El mtodo a peticin le indica al sistema operativo que constantemente le pregunte a la impresora si esta lista para recibir datos. Una vez que ha obtenido respuesta, el kernel comienza a transferir los datos.
Normalmente el mtodo por medio de interruptores es ms rpido, pero nos ocupa un preciado IRQ. Se sabe que algunas impresoras nuevas de HP no funcionan muy bien con este mtodo aparentemente debido (sin que aun se entienda el por que) a un problema de tiempos. Estas impresoras necesitan el mtodo a peticin. Es conveniente que utilice el mtodo que se ajuste a sus necesidades. Algunas impresoras funcionan en ambos mtodos, pero son dolorosamente lentas usando el mtodo por medio de interruptores. Para establecer el mtodo de comunicacin, puede hacerlo de dos formas: congurando su kernel o bien, utilizando el programa lptcontrol(8). Para establecerlo congurando su kernel, deber: 1. Editar su chero de conguracin del kernel. Busque una lnea que contenga lpt0, si esta no existe aadala. Si esta congurando su segundo puerto en paralelo, use lpt1. Para un tercer puerto paralelo utilice lpt2 y as sucesivamente.
94
Captulo 10. Imprimir Donde N es el numero de IRQ del puerto paralelo de su computadora.
2.
Guarde el chero. Posteriormente termine el proceso de conguracin, recompilacin e instalacin del kernel, despus reinicie el sistema. Vea Conguracin del Kernel para ms informacin al respecto.
para establecer el modo a peticin para lptN . Estos comandos los podra incluir en su chero /etc/rc.local para que el sistema reconozca estos modos cada vez que inicia el sistema. Vea lptcontrol(8) para ms informacin al respecto.
10.3.1.3.2. Vericando la Comunicacin de la Impresora Antes de proceder a congurar el sistema de cola de impresin, es conveniente vericar que nuestro sistema operativo pueda enviar datos exitosamente a nuestra impresora. Es mucho ms sencillo detectar errores cuando se congura por separado el mtodo de comunicacin y el sistema de cola de impresin. Para probar nuestra impresora, enviaremos un poco de texto. Para impresoras que inmediatamente pueden imprimir caracteres, el programa lptest(1) es perfecto: este genera todos los 96 caracteres ASCII imprimibles en 96 lneas. Para impresoras PostScript (o de otro lenguaje de impresin), vamos a necesitar una prueba ms sosticada. Un pequeo programa PostScript, como el siguiente, ser suciente:
%!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Is this thing working?) show showpage
El cdigo PostScript descrito puede guardarse en un chero y usarse en el ejemplo que aparece en la siguiente seccin.
Nota: Cuando este documento se reere a lenguaje de impresin, se asume lenguaje como PostScript y no el PCL de Hewlett Packard. Aun cuando PCL tiene gran funcionalidad, pueden acabar mezclandose caracteres de escape con el texto plano, y ese es el tipo de lenguaje de impresin, para el cual necesitaremos realizar ajustes especiales.
95
Captulo 10. Imprimir 10.3.1.3.2.1. Vericando Impresoras en Paralelo Esta seccin le indica como comprobar la comunicacin de una impresora en paralelo, bajo FreeBSD. Para probar una impresora en paralelo: 1. 2. Cambiar a root con el comando su(1) Enviar datos a la impresora.
Si la impresora utiliza PostScript u otro lenguaje de impresin, entonces envie un pequeo programa a la impresora. Teclee:
# cat > /dev/lptN
Posteriormente, lnea por lnea teclee el programa, cuidadosamente en virtud de que no puede editar una lnea ya que presionado la tecla RETURN o ENTER. Una vez que ha terminado de introducir el programa, presiona las teclas CONTROL+D, o cualquier tecla que funcione para efecto de especicar un n de chero. Otra manera de hacer esto, es guardar el programa en un chero y teclear:
# cat fcihero > /dev/lptN
Donde fichero es el nombre del chero que le dio al programa, que desea enviar a imprimir.
En este punto debe ver alguna impresin. No se preocupe si el texto no aparece bien; es algo que arreglaremos ms adelante.
10.3.1.3.2.2. Vericando una Impresora Serial Esta seccin explica como vericar la comunicacin, bajo FreeBSD, de una impresora conectada al puerto serial. Para probar una impresora conectada el puerto serial: 1. 2. Cambiar a root usando su(1). Edite el chero /etc/remote. Aadiendo la siguiente entrada:
printer:dv=/dev/puerto:br#bps:pa=paridad
Donde puerto es el dispositivo usado por el puerto serial (ttyd0, ttyd1, etc.), bps se reere a la velocidad, en bits-por-segundo, a la que se comunica la impresora, y paridad es la paridad requerida por la impresora (ya sea even, odd, none o zero).
Nota: N de T: Las opciones de paridad se han dejado en ingls, en virtud de que as debern especicarse en la conguracin.
96
Captulo 10. Imprimir He aqui un ejemplo para una impresora conectada por medio de un puerto serial, el tercer puerto a 19200 bps, sin paridad:
printer:dv=/dev/ttyd2:br#19200:pa=none
3.
Si este paso no funciona, edite nuevamente el chero /etc/remote e intente utilizando /dev/cuaaN en lugar de utilizar /dev/ttydN . 4. Envio de datos a la impresora.
Si es una impresora PostScript o que utilice otro lenguaje, entonces envie un pequeo programa a la impresora. Teclee el programa, lnea por lnea, muy cuidadosamente ya que algunas teclas, como la de retroceso son signicativas para la impresora. Puede ser que tambin necesite un caracter especial para marcar el n-de-chero y que la impresora sepa que ha recibido el programa completo. Para impresoras PostScript, utilice las teclas CONTROL+D. Otra variante es, guardar el programa en un chero y teclear:
% >fichero
Donde fichero es el nombre del chero que contiene el programa. Una vez que tip(1) envia el programa, presione la tecla correspondiente a n de archivo.
Usted debe ver algo de impresin. No se preocupe si el texto no se ve del todo bien; posteriormente arreglaremos esto.
10.3.1.4. Habilitando la Cola de Impresin: El chero /etc/printcap En este punto, su impresora debe estar conectada, su kernel congurado con el soporte de comunicacin, y debe haber podido enviar datos a su impresora. Ahora estamos listos para congurar LPD para controlar el accesos a nuestra impresora. Para efecto de congurar LPD, es necesario editar el chero /etc/printcap. El sistema de cola de LPD lee este chero cada vez que se utiliza, de tal forma que los cambios que se realicen en este chero, surten efecto inmediatamente. El formato que mantiene el chero printcap(5) es muy concreto. Utilice su editor de texto favorito para hacer cambios en /etc/printcap. El formato es idntico al que guardan los cheros que describen capacidades, tal como /usr/share/misc/termcap y /etc/remote. Para ver mayor informacin con respecto al formato, vea la pgina de ayuda cgetent(3). De un modo simple, la conguracin de una cola consiste en los siguientes pasos:
97
Captulo 10. Imprimir 1. 2. 3. 4. Seleccione un nombre (y algunos alias convenientes) para la impresora, y especifquelos en el chero /etc/printcap ; vea la seccin Nombrando la Impresora para ms informacin al respecto. Desactive el encabezado de pginas (el cual esta activado por default), al insertar la caracterstica sh; vea la seccin Eliminando las Pginas de Encabezados para ms informacin al respecto. Cree un directorio para la cola, y especique su ubicacin con la caracterstica sd; vea la seccin Creando el Directorio de la Cola para mayor informacin. Ubique el dispositivo /dev a usar por la impresora e indiquelo en el chero /etc/printcap con la caracterstica lp; vea la seccin Identicando el Dispositivo de Impresin para mayor informacin. As mismo, si la impresora esta conectada a un dispositivo serial, utilice las caractersticas fs, fc, xs y xc para establecer los parmetros de comunicacin; esto se detalla en la seccin Congurando los Parmetros de Comunicacin de la Cola de Impresin. Instalar un ltro de entrada de texto plano; vea la seccin Instalando un Filtro de Texto para ms detalles. Probar la conguracin, al imprimir algo con el comando lpr(1). Para ms detalles vea las secciones Probando la Conguracin y Resolucin de Problemas.
Nota: Las impresoras basadas en un lenjuaje, tal como PostScript, no pueden imprimir texto plano directamente. Los pasos de conguracin mencionados anteriormente, as como las siguientes secciones, asumen que si usted cuenta con una impresora de este tipo, slo va a imprimir cheros que la impresora puede manejar.
5. 6.
Normalmente los usuarios esperan poder imprimir texto plano a cualquier impresora conectada al sistema. Los programas que usan como interfaz de impresin a LPD, asumen lo mismo. Si usted cuenta con una impresora basada en lenguaje y desea poder imprimir en el lenguaje de la impresora as como texto plano, es importante considerar que debe aadir un paso adicional a los mencionados anteriormente: instalar un programa de conversin detexto-plano-a-PostScript (u otro lenguaje). La seccin Acomodando Trabajos de Texto Plano en Impresoras PostScript le indica como debe hacerse esto. 10.3.1.4.1. Nombrando la Impresora El primer paso (sencillo) es escojer un nombre para su impresora. En realidad no importa mucho si este nombre es funcional o un tanto abstracto, en virtud de que usted podr asignar alias para la impresora. Cuando menos una de las impresoras sealadas en el chero /etc/printcap debe contar con el alias lp. Este es el nombre de la impresora por default. Si los usuarios del sistema no cuentan con la variable de entorno PRINTER o bien no especican en la lnea de comando, al ejecutar cualquier comando de LPD, el nombre de la impresora a utilizar, entonces lp ser la impresora por default a utilizar. Tambin, como prctica comn, se suele asignar el ltimo alias a la descripcin completa de la impresora, incluyendo marca y modelo. Una vez que ha seleccionado un nombre y algunos aliases, ingreselos en el chero /etc/printcap. El nombre de la impresora deber colocarse en la columna izquierda mxima. Separe cada alias con una barra vertical e incluya dos puntos despus del ltimo alias. En el siguiente ejemplo, comenzaremos con el esqueleto del chero /etc/printcap, que dene dos impresoras (una de matriz Diablo 630 y una impresora laser PostScript Panasonic KX-P4455):
# #
98
En este caso, la primer impresora se llama rattan y tiene como aliases line, diablo, lp, y Diablo 630 Line Printer. Dado que tiene el alias lp, tambi se considera la impresora por default. La segunda impresora se llama bamboo, y cuenta con los aliases ps, PS, S, panasonic, y Panasonic KX-P4455 PostScript v51.4.
10.3.1.4.2. Eliminando las Pginas de Encabezados El sistema de cola de impresin LPD, por default, imprimir una pgina de encabezado para cada trabajo. Esta pgina contiene el nombre del usuario que solicit la impresin, el host del cual se envio el trabajo y el nombre del trabajo, todo en letras grandes. Desafortunadamente, todo esta impresin extra, interere con el trabajo de depuracin de la conguracin bsica de la impresora, por lo que vamos a deshabilitar esta opcin. Para eliminar las pginas de encabezado, aada shen la entrada de la impresora del chero /etc/printcap. He aqui un ejemplo del chero /etc/printcap con sh incluida en l:
# # FIchero /etc/printcap para el host rose - sin paginas de encabezado # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:
Note como hemos utilizado el formato correcto: donde la primer lnea comienza en la primer columna de la izquierda y las lneas subsecuentes estan cuentan con sangra de un solo tabulador ( TAB). Cada lnea termina con una diagonal invertida, excepto la ltima.
10.3.1.4.3. Creando el Directorio de la Cola El siguiente paso en la conguracin de la cola, es crear el directorio de cola de impresin, un directorio en el cual residen los trabajos de impresin hasta que son llevados a cabo, y donde otros cheros de soporte se localizan. Dada la naturaleza variante de los directorios de cola, es costumbre que estos se localicen en /var/spool. No es necesario respaldar el contenido de estos directorios, ya que rehacerlos es tan simple como ejecutar mkdir(1). Tambin es una buena costumbre crear el directorio con el mismo nombre que tenga la impresora, como se muestra a continuacin:
# mkdir /var/spool/nombre-impresora
Aunque si cuenta con bastantes impresoras en su red, puede que desee crear todos los directorios de cola, bajo un slo directorio reservado para todas aquellas que imprimen usando LPD. En nuestro ejemplo haremos esto con nuestras dos impresoras de ejemplo rattan y bamboo:
# mkdir /var/spool/lpd # mkdir /var/spool/lpd/rattan # mkdir /var/spool/lpd/bamboo
99
Finalmente, debe indicar a LPD acerca de estos directorios, en el chero /etc/printcap. Esta indicacin se hace por medio de la caracterstica sd :
# # Fichero /etc/printcap para el host rose - incluyendo directorios de cola # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:
Notese que el nombre de la impresora inicia en la primer columna mientras que el resto debe contar con sangra de un tabulador y todas las lneas, excepto la ltima, terminar con una diagonal invertida. En el caso de que usted no especique directorio alguno con sd, el sistema de cola usara como default /var/spool/lpd .
10.3.1.4.4. Identicando el Dispositivo de Impresin En la seccin Aadiendo Dispositivos de Puertos en /dev, vimos que dispositivo bajo el directorio /dev iba a utilizar FreeBSD para comunicarse con la impresora. Ahora le indicaremos esto a LPD. Cuando el sistema de cola tiene un trabajo por imprimir, abrir el dispositivo especicado en nombre del programa ltro (reponsable de pasar los datos a la impresora). Para efecto de indicar esto, en la entrada de la impresora en el chero /etc/printcap, usaremos la caracterstica
lp.
En el ejemplo que hemos visto, asumiremos que rattan esta conectada al primer puerto paralelo, y bamboo en el sexto puerto serial; he aqui lo que tendriamos que aadir a /etc/printcap:
# # Fichero /etc/printcap para el host rose - identificando los dispositivos a usar # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyd5:
100
Captulo 10. Imprimir Si usted no indica la caracterstica lp en el chero /etc/printcap, LPD usar el dispositivo /dev/lp por default. El dispositivo /dev/lp actualmente no existe en FreeBSD. Si la impresora que esta instalando esta conectada a un puerto en paralelo, puede saltar la siguiente parte y dirijirse a la seccin Instalando un Filtro de Texto. De otra manera, asegurese de seguir las instrucciones de la siguiente seccin.
10.3.1.4.5. Congurando los Parmetros de Comunicacin del la Cola de Impresin Para impresoras conectadas a un puerto serial, LPD puede especicar la velocidad de bps, la paridad, y otros parmetros de comunicacin en lugar del programa ltro que manda los datos a la impresora. Esto es una ventaja dado lo siguiente:
Le permite probar diferentes parmetros de comunicacin, con el simple hecho de modicar el chero /etc/printcap; con lo cual no es necesario recompilar el programa ltro. Habilita el sistema de cola de impresin para hacer uso del mismo programa ltro, para varias impresoras que pueden contar con diferentes conguraciones de comunicacin.
Para efecto de controlar los parmetros de comunicacin por medio de un puerto serial, con la caracterstica lp, en el chero /etc/printcap, utilizarmos lo siguiente:
br#bps-velocidad
Establece la velocidad de comunicacin del dispositivo, donde bps-velocidad puede ser 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, o 38400 bits-por-segundo.
fc#limpiar-bits
Limpia la marca de bits, donde limpiar-bits afecta en la estructura de sgttyb una vez que se ha entablado la comunicacin con el dispositivo.
fs#establece-bits
Limpieza del modo bits, de forma local limpia-bits una vez que se ha abierto la comunicacin con el dispositivo.
xs#establece-bits
Establece el modo bits, de forma local establece-bits. Para mayor informacin con respecto al uso de las caractrstica de bits: fc, fs, xc, y xs, vea el chero
/usr/include/sys/ioctl_compat.h.
Cuando LPD abre el canal de comunicacin con el dispositivo especicado por lp, lee la marca de bits en la estructura sgttyb; limpia cualquier bit en la caracterstica fc y establece bits en la caracterstica fs, para posteriormente aplicar la conguracin resultante. El mismo procedimiento se sigue en el modo de bits local. Ahora aadamos la impresora de ejemplo que esta conectada al puerto serial numero seis. La velocidad de bps la estableceremos en 38400 bps. Para las marcas de bits usaremos TANDEM, ANYP, LITOUT, FLUSHO, y PASS8. Para el modo local de bits, estableceremos LITOUT y PASS8 :
101
10.3.1.4.6. Instalando un Filtro de Texto Ahora estamos listos para indicarle a LPD que ltro de texto debe utilizar para enviar los trabajos a la impresora. Un ltro de texto, tambin conocido como ltro de entrada, es un programa que ejecuta LPD cuando tiene un trabajo para imprimir. Cuando LPD ejecuta el ltro de texto para una impresora, congura de manera estandar la entrada para el trabajo a imprimir, y la salida estandar a la impresora indicada en la caracterstica lp. El ltro espera leer el trabajo de la entrada estandar, hacer el trabajo de traduccin necesario para la impresora, y enviar los resultados a la salida estandar, lo cual ser impreso. Para mayor informacin en los ltros de texto, vea la seccin Como Trabajan los Filtros. En el caso de nuestro ejemplo, el ltro de texto puede ser un pequeo script que slo ejecute /bin/cat para enviar el trabajo a la impresora. FreeBSD cuenta con otro ltro llamado lpf que controla los caracteres de regreso y subrayado en impresoras que pueden presentar problemas con dichos caracteres. Y desde luego, usted puede utilizar cualquier ltro que desee. El ltro lpf se describe a detalle en la seccin titulada lpf: un Filtro de Texto. En primer lugar hagamos del script /usr/local/libexec/if-simple un simple ltro de texto. Introduzca el siguiente texto en un chero, con su eitor de texto favorito:
#!/bin/sh # # if-simple - Filtro de texto simple para lpd # Instalado en la ruta /usr/local/libexec/if-simple # # Simplemente copia stdin a stdout. Ignora todos los argumentos del filtro. /bin/cat && exit 0 exit 2
Ahora indiquele a LPD que lo use, al aadirlo con la caracterstica if, en el chero /etc/printcap. Este ltro, lo vamos a aadir en ambas impresoras de nuestro ejemplo, en el chero /etc/printcap:
# # Fichero /etc/printcap para host rose - aadiendo el filtro de texto # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:\ :if=/usr/local/libexec/if-simple:
102
Captulo 10. Imprimir 10.3.1.4.7. Encienda LPD lpd(8) se puede correr desde /etc/rc, controlado por la variable lpd_enable. Esta variable por default esta deshabilitada con NO. Si usted no cuenta con esta lnea, aadala de la siguiente forma:
lpd_enable="YES"
10.3.1.4.8. Probando la Conguracin Usted ha llegado al n de una conguracin sencilla de LPD. Desafortunadamente, aun no es momento de una felicitacin, dado que aun debemos probar la conguracin y resolver cualquier problema que se presente. Para efecto de probar la conguracin, intente imprimir algo. Para imprimir con el sistema LPD, utilice el comando lpr(1), el cual envia el trabajo para su impresin. Puede combinar lpr(1) con el programa lptest(1), el cual se ve en la seccin Vericando la Comunicacin con la impresora, para generar un texto de prueba. Simplemente para probar la conguracin de LPD, intente: Teclee:
# lptest 20 5 | lpr -Pnombre-impresora
Donde nombre-impresora es uno de los nombres (o alias) que aparecen especicados en el chero /etc/printcap para las impresoras. Para probar con la impresora por default, teclee lpr(1) sin la opcin -P. Nuevamente, si esta probando una impresora que espera recibir PostScript, envie un programa PostScript en ese lenguaje, en lugar de usar lptest(1). Puede hacer esto poniendo el programa en un chero y tecleando lpr fichero. Para una impresora PostScript, usted debe visualizar el resultado del programa. Si esta usando lptest(1), entonces su resultado debe verse algo similar a lo siguiente:
!"#$%&()*+,-./01234 "#$%&()*+,-./012345 #$%&()*+,-./0123456 $%&()*+,-./01234567 %&()*+,-./012345678
Para ms pruebas de la impresora, intente descargar programas ms largos (para impresoras basadas en un lenguaje) o ejecutar lptest(1) con diferentes opciones. Por ejemplo lptest 80 60 producir 60 lneas de 80 caracteres cada una. Si la impresora no funcion, vea la seccin Resolucin de Problemas.
103
10.4.1. Filtros
Aun cuando LPD maneja con protocolos de red, controles de acceso, requisiciones y otros aspectos de la impresin, la mayor parte del trabajo real se lleva a cabo por los ltros. Los Filtros son programas que se comunican con la impresora y controlan las dependendcias de su dispositivo y requerimientos especiales. En el ejemplo de la impresora simple, instalamos un muy sencillo ltro de texto planoun ejemplo extremadamente sencillo que debiese trabajar con la mayora de las impresoras (en la seccin Instalando un Filtro de Texto). De cualquier manera, para tomar ventaja de la conversin de formatos, cuentas de impresin, trucos especcos de las impresoras y dems, es importante saber como trabajan los ltros. En virtud de que todos estos aspectos son la responsabilidad de estos ltros. Y la mala noticia es, que la mayor parte del tiempo usted debe proveerse de estos ltros. La buena noticia es normalmente estos ya existen disponibles; y cuando no, son sencillos de escribir. FreeBSD tambi cuenta con un /usr/libexec/lpr/lpf, que trabaja con muchas impresoras que pueden imprimir texto plano. (Maneja caracteres de regreso y tabulador en el chero, as como conteo, pero se puede decir que eso es todo). Existen tambin una gran cantidad de ltros y componentes de estos, disponibles en la Coleccin de Ports de FreeBSD. He aqui lo que encontrar en esta seccin:
La seccin Como Trabajan los Filtros intenta dar un repaso general al papel que juegan los ltros en el proceso de impresin. Es importante que lea esta seccin para ver que sucede tras bambalinas cuando LPD usa ltros. Este conocimiento puede ayudarle a anticiparse y resolver problemas que puede encontrar cuando instala ms y ms ltros en cada impresora. Normalmente LPD espera poder imprimir texto plano en todas las impresoras. Esto puede representar un problema para las impresoras PostScript (o que manejen otro lenguaje de impresin), las cuales no pueden imprimir texto plano directamente. La seccin Acomodando Trabajos de Texto Plano en Impresoras PostScript le indica que debe de hacer si se le presenta este problema. Es importante que lea esta seccin si usted cuenta con una impresora PostScript. PostScript es un formato de salida muy popular. Incluso algunas personas (yo, incluido) escriben cdigo PostScript directamente. Pero las impresoras PostScript son caras. La seccin Simulando PostScript en Impresoras No-PostScript le indica como puede hacer, para que una impresora no-PostScript, acepte e imprima datos PostScript. Es recomendable que lea esta seccin si cuenta con una impresora no-PostScript. La seccin Filtros de Conversin, le indica la forma en que puede automatizar la conversin de ciertos formatos especcos de cheros, tal como grcos o datos de un determinado tipo, a un formato que la impresora puede entender. Despus de leer esta seccin usted podr congurar su impresora de tal forma que los usuarios puedan teclear lpr -t para imprimir datos troff o lpr -d para imprimir datos de tipo TeX DVI, o bien lpr -v para imprimir datos de imagen y as sucesivamente. Recomiendo la lectura de esta seccin. La seccin Filtros de Salida explica todo acerca de las utilidades que no son muy usadas de LPD: ltros de salida. A menos que usted haya habilitado la impresin de pginas de encabezado (vea Pginas de Encabezado), puede saltar toda esta seccin.
104
La seccin lpf: Un Filtro de Texto detalla el uso de lpf, un sencillo ltro de texto, para impresoras de matriz de puntos (e impresoras laser que actuan como estas) que viene con FreeBSD. Si usted necesita una forma rpida de tener un contador de trabajos de impresin para texto plano, o bien si tiene una impresora que al ver caracteres de regreso (backspace) comienza a echar humo, denitivamente debe considerar lpf como su alternativa.
10.4.1.1. Como Trabajan los Filtros Como se menciono anteriormente, un ltro es un programa ejecutable que se inicia por LPD, para manejar el dispositivo dependiente, responsable de la comunicacin con la impresora. Cuando LPD desea imprimir un trabajo, inicia un programa ltro. Establece como entrada estandar del ltro al chero, y a la impresora como salida estandar, y como error estandard al chero log (indicado con la cracterstica lf, en el chero /etc/printcap o por default como /dev/console). Cual ltro debe ser iniciado por LPD y con que argumentos, depende en lo especicado en el chero
/etc/printcap y los argumentos que hayan sido utilizados por el usuario al momento de usar en la lnea de comandos: lpr(1). Por ejemplo, si el usuario teclea lpr -t, LPD iniciar el ltro para cheros troff, listado en las caractersticas tf para la impresora destino. Si el usuario desea imprimir texto plano iniciar el ltro if (esto casi es
as, para mayor informacin, vea la seccin Filtros de Salida). Existen tres tipos de ltros que puede declarar en el chero /etc/printcap:
El ltro de texto, erroneamente llamado ltro de entrada en la documentacin de LPD, este se encarga de manejar la impresin de texto simple. Piense en este como en el ltro por default. LPD espera que todas las impresoras puedan imprimir texto plano y es el ltro de texto, el que se encarga de manejar los caracteres de retroceso y tabulador, de tal forma que la impresora no se confunda. Si en su sistema se debe llevar un conteo de impresiones, el ltro de texto tambin debe llevar un conteo de pginas impresas, normalmente al llevar la cuenta de las lneas impresas y comparandolas con el numero de lneas soportadas por pgina. El ltro de texto se comienza con los siguientes argumentos:
donde
-c
aparece si el trabajo se envio utilizando lpr -l anchura es el valor de la caracterstica pw (ancho de pgina), indicado en /etc/printcap, por default se usa un valor de 132 longitud es el valor de la caracterstica pl (longitud de pgina), por default su valor es 66 sangrado se reere a los espacios que se considerarn para lpr -i, por default es 0.
105
Captulo 10. Imprimir login es el nombre de la cuenta del usuario que imprime el trabajo host es el nombre del host, del cual se ha enviado el trabajo de impresin fichero-act es el nombre del chero contador, de la caracterstica af.
Un ltro de conversin convierte un formato especco, a uno que la impresora puede plasmar en un papel. Por ejemplo, datos de tipo ditroff no pueden imprimirse directamente, pero puede instalar un ltro de conversin para cheros ditroff, de tal forma que los datos ditroff se conviertan a un formato que entiende la impresora. La seccin Filtros de Conversin explica todo lo que usted necesita saber sobre ellos. Los ltros de conversin tambin requieren de llevar un conteo, si usted requiere de este control. Los ltros de conversin se inicializan con estos argumentos:
donde ancho-pixel es el valor de la caracterstica px (default 0) y alto-pixel es el valor de la caracterstica py (default 0).
El ltro de salida es usado solamente si no existe un ltro de texto, o bien si las pginas de encabezado estn habilitadas. En mi experiencia, los ltros de salida raramente se utilizan. La seccin Filtros de Salida describe el uso de estos. Slo existen dos argumentos:
los cuales son idnticos a los argumentos -w y -l de los ltros de texto. La salida de los ltros debe ser con el siguiente resultado: exit 0 Esto es si el resultado de la impresin es satisfactorio. exit 1 Si el ltro fall en la impresin, pero desea que LPD intente de nuevo el trabajo de impresin. LPD reiniciar el ltro si sale con esta clave. exit 2 Si el ltro falla imprimiendo el chero y no desea que LPD lo intente de nuevo. LPD desechar el chero. El ltro de texto /usr/libexec/lpr/lpf que viene con FreeBSD, toma ventaja de los argumentos de ancho y largo, para determinar cuando alimentar la impresora y como llevar el conteo de uso de la impresora. Utiliza el host y login, as como el chero de conteo, para llevar el control de este registro. Si usted esta buscando adquirir ltros, verique que ellos son compatibles con LPD. Si lo son, deberan soportar los argumentos descritos anteriormente. Si usted planea escribir ltros para uso general, entonces creelos pensando en soportar estos argumentos y cdigos de salida.
106
Captulo 10. Imprimir 10.4.1.2. Acomodando Trabajos de Texto Plano en Impresoras PostScript Si usted es el nico usuario de su computadora e impresora PostScript (u otro lenguaje de impresoras), y promete nunca enviar texto plano a su impresora o bien hacer uso de algunos programas que probablemente envien texto plano a su impresora, entonces usted no debe preocuparse por leer esta seccin. Pero, si usted desea enviar tanto texto plano, como PostScript a su impresora, entonces es altamente recomendable que prepare la conguracin de su impresora. Para efecto de hacer esto, contamos con el ltro de texto, para detectar si los trabajos que se han mandado son de texto plano o PostScript. Todos los trabajos de tipo PostScript, deben comenzar con %! (para otros lenguajes de impresin, vea la documentacin de su impresora). Si esos son los dos primeros caracteres de su trabajo, entonces se considera PostScript y puede pasar el resto del trabajo de forma directa. Si esos no son los primeros dos caracteres, entonces el ltro har la conversin del texto a PostScript e imprimir el resultado. Cmo se hace esto? Si usted cuenta con una impresora serial, una buena forma de hacer esto es instalando lprps. lprps es un ltro de impresin PostScript que lleva a cabo una comunicacin de dos vas con la impresora. Actualiza el chero de estatus de la impresora, por medio de informacin actualizada, de tal forma que los usuarios y administradores pueden ver exactamente el estado que guarda la impresora (tal como toner bajo o papel atorado). Pero ms importante es el programa que incluye llamado psif, el cual detecta si el trabajo que se ha enviado es texto plano, con lo cual llama a textps (otro programa que viene con lprps), para convertir el texto plano a PostScript. Posteriormente utiliza lprps para enviar el trabajo a la impresora. El programa lprps es parte de la Coleccin de Ports de FreeBSD (vea la seccin La Coleccin de Ports). Claro esta, que usted puede descargar, compilar e instalarlo. Una vez que instale lprps, simplemente especique la ruta al programa psif que a su vez es parte de lprps. Si ha instalado lprps de la Coleccin de Ports, aada lo siguiente, en la parte correspondiente a su impresora Serial-PostScript, en el chero /etc/printcap:
:if=/usr/local/libexec/psif:
Tambin deber especicar la caracterstica rw; que le indica a LPD abrir la impresora en modo de lectura-escritura. Si usted cuenta con una impresora PostScript, conectada a un puerto paralelo (y por lo tanto no cuenta con la comunicacin de dos vas con la impresora, que lprps requiere), puede utilizar el siguiente script de shell como ltro de texto:
#!/bin/sh # # psif - Imprime PostScript o texto plano en impresoras PostScript # Script version; NO la version que viene con lprps # Instalado en /usr/local/libexec/psif # read first_line first_two_chars=expr "$first_line" : \(..\) if [ "$first_two_chars" = "%!" ]; then # # Trabajo PostScript, imprimirlo. # echo "$first_line" && cat && printf "\004" && exit 0 exit 2 else
107
En este script, textps es un programa que hemos instalado por separado, para convertir texto plano a PostScript. Usted puede utilizar cualquier cualquier programa de conversin de texto plano a PostScript que desee. La Coleccin de Ports de FreeBSD incluye un programa muy completo llamado a2ps que quizs desee investigar.
10.4.1.3. Simulando PostScript en Impresoras No-PostScript PostScript es el estandar por excelencia en impresiones de alta calidad. Aunque en realidad PostScript resulta ser un estandar algo caro. Afortunadamente la Empresa Alladin, cuenta con un emulador PostScript, llamado Ghostscript que corre bajo FreeBSD. Ghostscript puede leer la mayora de los cheros PostScript y volcarlos en una gran variedad de dispositivos, incluyendose gran variedad de impresoras no-PostScript. Al instalar Ghostscript y usando un ltro de texto especial para su impresora, puede hacer que su impresora no-PostScript actue como una impresora PostScript real. Ghostscript se encuentra en la Coleccin de Ports de FreeBSD por lo que puede realizar la instalacin desde este medio. Tambin puede descargarlo, compilarlo e instalarlo de una manera fcil. Para efecto de simular PostScript, contamos con el ltro de texto que detecta si se esta imprimiendo un chero PostScript. Si no es as, el ltro pasar el trabajo directamente a la impresora, de otra forma utilizar Ghostscript para convertir primero el chero a un formato que la impresora entienda. Aqui tenemos un ejemplo: el siguiente script es un ltro de texto para impresoras Hewlett Packard DeskJet 500. Para otras impresoras, substituya el argumento -sDEVICE del comando gs (Ghostscript). Teclee gs -h para obtener una lista de todos los dispositivos soportados por Ghostscript en su sistema).
#!/bin/sh # # ifhp - Impresion simulada-Ghostscript PostScript en una DeskJet 500 # Instalada en /usr/local/libexec/hpif # # Trate a LF como CR+LF: # printf "\033&k2G" || exit 2 # # Read first two characters of the file # read first_line first_two_chars=expr "$first_line" : \(..\) if [ "$first_two_chars" = "%!" ]; then # # Se trata de PostScript; use Ghostscript para convertir e imprimir. # # Note que los ficheros PostScript son , de hecho, programas interpretados,
108
Finalmente, necesita noticar a LPD de la caracterstica if, que corresponde al ltro a utilizar:
:if=/usr/local/libexec/ifhp:
Y eso es todo. Puede teclear lpr texto.plano y lpr cualquier.ps y ambos deben imprimirse exitosamente.
10.4.1.4. Filtros de Conversin Una vez que se ha completado la conguracin descrita en la seccin Conguracin Simple de una Impresora, probablemente lo primero que deba hacer es instalar ltros de conversin para su formato de chero favorito (aparte de text plano ASCII). 10.4.1.4.1. Por qu Instalar Filtros de Conversin? Los ltros de conversin sirven para instalar de una manera sencilla varios tipos de formatos especiales. Como ejemplo, suponga que requiere imprimir un buen numero de cheros desarrollados con el sistema de escritura TeX, y contamos con una impresora PostScript. Cada vez que generemos un chero DVI desde TeX, no podremos imprimirlo directamente hasta que hagamos una conversin de este a PostScript. La secuencia de comandos a seguir es algo as:
% dvips fichero-prueba.dvi % lpr fichero-prueba.ps
Al instalar un ltro de conversin, podemos omitir llevar a cabo la conversin manual, y permitir que LPD se haga cargo por nosotros. Ahora, cada vez que generemos un chero DVI, slo estaremos a un paso de su impresin:
109
Con esto le hemos indicado a LPD que haga la conversin del chero DVI. Esto se lleva a cabo por medio de la opcin -d. La seccin Opciones de Formato y Conversin enumera las opciones de conversin. Por cada una de las opciones que desea que una impresora reconozca, instale un ltro de conversin y seale su ruta en el chero /etc/printcap. Un ltro de conversin es como el ltro de texto usado en la conguracin de una impresora simple (vea la seccin Instalando un Filtro de Texto para una referencia) excepto de que en lugar de imprimir texto plano, el ltro convierte el chero a un formato que la impresora puede entender.
10.4.1.4.2. Qu Filtros de Conversin Debo Instalar? Usted debe instalar los ltros de conversin que vaya a necesitar. Si imprime gran cantidad de documentos DVI, es recomendable que instal un ltro de conversin para DVI. Si cuenta con bastantes cheros troff por imprimir, entonces un ltro troff sera una buena idea. En la siguiente tabla encontrar un resmen de los ltros con que trabaja LPD, un ejemplo de su entrada en /etc/printcap y como hacer uso de estos con el comando lpr : Tipo de Fichero cifplot DVI plot ditroff FORTRAN texto troff raster texto plano Caracterstica /etc/printcap
cf df gf nf rf rf vf if
Opcin lpr
-c -d -g -n -f -f -v
ninguna, -p, o -l
En nuestro ejemplo, el uso de lpr -d indica que la impresora requiere de la caracterstica df, en su entrada del chero /etc/printcap. A pesar de lo que otros puedan opinar, formatos como texto de FORTRAN o plot, son probablemnte obsoletos. A su gusto, usted puede encontrar nuevos usos de estos formatos, as como a cualquier otro con el simple hecho de instalar los ltros adecuados. Por ejemplo, supongamos que desea imprimir cheros de tipo Printerleaf (que son cheros generados por el programa de promocin de escritorio Interleaf) de forma directa, pero que nunca imprime cheros plot. Podra instalar un ltro de conversin de Printerleaf bajo la caracterstica gf y posteriormente educar a sus usuarios a que utilicen el comando lpr -g para llevar a cabo impresiones de cheros Printleaf.
10.4.1.4.3. Instalando Filtros de Conversin Considerando que los ltros de conversin son programas que usted instala independientemente de la instalacin base de FreeBSD, probablemente el mejor lugar para colocarlos sera bajo el directorio /usr/local. El directorio /usr/local/libexec es un lugar comn, en virtud de que estos son programas especiales que slo sern ejecutados por LPD; los usuarios comunes no necesitarn ejecutarlos nunca. Para habilitar un ltro de conversin, deber especicar su ruta bajo la caracterstica adecuada, en la entrada de la impresora correspondiente en el chero /etc/printcap.
110
Captulo 10. Imprimir En nuestro ejemplo, aadiremos el ltro de conversin DVI, para la impresora llamada bamboo. He aqui un ejemplo del chero /etc/printcap que hemos estado utilizando, con la nueva caracterstica df, para la impresora bamboo.
# # Fichero /etc/printcap para host rose - aadiendo df a bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
Este script ejecuta dvips en modo de ltro (la opcin -f) con la entrada estandar, que es el trabajo a imprimir. Posteriormente inicia el ltro de impresin PostScript lprps (vea la seccin Acomodando Trabajos de Texto Plano en Impresoras PostScript), con las opciones que LPD haya pasado al script. El comando lprps har uso de esas opciones para llevar la cuenta de las pginas impresas.
10.4.1.4.4. Ms Ejemplos de Filtros de Conversin Considerando que no existe una serie de pasos establecida, para instalar ltros de conversin, me permito mostrar algunos ejemplos ms. Puede usarlos tal como aparecen, si es que se ajustan a sus necesidades. Este ejemplo es de un ltro de conversin raster (bueno, de hecho se trata de un chero GIF), para una impresora Hewlett Packard LaserJet III-Si:
#!/bin/sh # # hpvf - Convierte ficheros GIF a HP/PCL, posteriormente los imprime # Instalado en /usr/local/libexec/hpvf PATH=/usr/X11R6/bin:$PATH; export PATH giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ && exit 0 \ || exit 2
111
Captulo 10. Imprimir Esto trabaja convirtiendo el chero GIF a cualquier tipo de chero mapa portable, y conviritendo eso a un mapa en escala de grises, y ese mapa de regreso a un chero portable de mapa de bits, y nalmente eso a datos compatibles con HP/PCL, entendible por la impresora LaserJet. Aqui esta un ejemplo del chero /etc/printcap usando el ltro anterior, con la impresora mencionada.
# # Fichero /etc/printcap para el host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:
El siguiente script es un ltro de conversin de datos de tipo troff desde un sistema groff, para la impresora PostScript denominada bamboo:
#!/bin/sh # # pstf - Convierte datos de troff tipo groff a PS, y los imprime. # Instalado en /usr/local/libexec/pstf # exec grops | /usr/local/libexec/lprps "$@"
El script de arriba, nuevamente hace uso del comando lprps, para manejar la comunicacin con la impresora. Si la impresora se encontrase en un puerto paralelo, usariamos el siguiente script:
#!/bin/sh # # pstf - Convierte datos groff a PS, y los imprime. # Instalado en /usr/local/libexec/pstf # exec grops
Eso es todo. Aqui presentamos la entrada necesaria en /etc/printcap para habilitar el ltro:
:tf=/usr/local/libexec/pstf:
Aqui presentamos un ejemplo que puede hacer que los viejos usuarios de FORTRAN se ruboricen. Es un ltro de texto para FORTRAN, usando impresoras que pueden imprimir directamente texto plano. Lo instalaremos para la impresora teak:
#!/bin/sh # # hprf - Filtro de Texto FORTRAN para LaserJet 3si: # Instalado en /usr/local/libexec/hprf # printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0 exit 2
Y aadiremos esta lnea al chero /etc/printcap para la impresora teak, para efecto de habilitar el ltro:
112
Aqui presentamos el ltimo ejemplo que puede resultar algo complicado. Vamos a aadir un ltro DVI para la impresora LaseJet teak comentada anteriormente. Primero, la parte sencilla: actualizaremos /etc/printcap con la ubicacin del ltro DVI:
:df=/usr/local/libexec/hpdf:
Ahora la parte complicada: crar el ltro. Para eso, vamos a necesitar un programa de conversin de DVI-a-LaserJet/PCL. La Coleccin de Ports de FreeBSD (vea La Coleccin de Ports) cuenta con uno, el nombre del paquete es: dvi2xx. Al instalar este programa, nos brinda la funcionalidad que buscamos, dvilj2p, el cual convierte cheros DVI a cheros compatibles con LaserJet IIp, LaserJet III y LaserJet 2000 y cdigos compatibles. El programa dvilj2p hace que el ltro hpdf sea ms complejo, en virtud de que dvilj2p no puede leer desde la entrada estandar. Este desea trabajar desde un nombre de chero. Y lo que es peor, es que el nombre del chero debe contar con la terminacin .dvi, de tal forma que usar /dev/fd/0 como entrada estandar representa un problema. Esto lo podremos solucionar, creando un enlace (simblico) de un chero temporal (uno que su tenga como extensin .dvi) a /dev/fd/0, y por tanto forzando a dvilj2p a leer la entrada estandar. El nico punto negativo que nos queda por resolver, es que no podemos utilizar /tmp para el enlace temporal. Los enlaces simblicos son propiedad del grupo y usuario bin. El ltro de ejecuta como usuario daemon. Y el directorio /tmp cuenta con el bit pegajoso activado. El ltro puede crear el enlace, pero no podr limpiarlo una vez que termine y eliminarlo, ya que pertenece a un usuario diferente. En lugar de esto, el ltro crear el enlace simblico en el directorio de trabajo actual, el cual ser el directorio de la cola de impresin (especicado en /etc/printcap por la caracterstica sd). Este lugar es perfecto para que los ltros hagan su trabajo, especialmente que aqui existe ms espacio (algunas veces) en disco duro, que bajo el directorio /tmp. Finalmente, aqui presentamos el ltro:
#!/bin/sh # # hpdf - Impresion de datos DVI en una impresora HP/PCL # Instalado en /usr/local/libexec/hpdf PATH=/usr/local/bin:$PATH; export PATH # # Definir una funcion para limpiar nuestros ficheros temporales. Estos existen # en el directorio de trabajo actual, el cual servira para la cola de impresion de # la impresora. # cleanup() { rm -f hpdf$$.dvi } # # Definir funcion para el manejo de errores fatales: imprimir un mensaje dado y salir # con codigo de salida 2. Al salir con 2, le indica a LPD que no intente la impresion # de nuevo. # fatal() { echo "$@" 1>&2
113
10.4.1.4.5. Conversin Automtica: Una Alternativa A Los Filtros De Conversin Todos estos ltros de conversin realizan una gran labor en pro de sus labores de impresin, pero con el inconveniente de que cada usuario debe especicar cual ltro es el que se debe utilizar (cuando se invoca el comando lpr(1)). Si sus usarios no son lo que podemos llamar acionados a la computacin, el especicar que ltro utilizar puede volverse algo molesto. Y lo que es peor, el uso de un ltro inadecuado puede causar que su impresora termine imprimiendo cientos de hojas de papel de manera incorrecta. En lugar de instalar ltros de conversin, quizs le interese intentar que su ltro de texto (dado que es el ltro por default) determine que tipo de chero se esta enviando a imprimir y automticamente ejecute el ltro adecuado. En este caso, herramientas como file pueden ser de mucha utilidad. Claro esta, puede que algunos tipos de cheros puede ser difcil determinar de que tipo son, pero siempre puede contar con ltros especiales para ellos.
114
Captulo 10. Imprimir La Coleccin de Ports de FreeBSD cuenta con un ltro de texto que ejecuta de forma automtica la conversin, llamado apsfilter. Este puede detectar texto plano, PostScript y cheros DVI, ejecutar la conversin adecuada e imprimir.
10.4.1.5. Filtros de Salida El sistema de cola de impresin de LPD soporta otro tipo de ltros, que aun no hemos explicado aqui: un ltro de salida. Un ltro de salida esta diseado para imprimir texto plano nicamente, como el ltro de texto, pero de una forma ms simplicada. Si usted esta usando un ltro de salida pero no ltro de texto, entonces:
LPD inicia el ltro de salida para el trabajo completo, en lugar de hacerlo para cada chero del trabajo. Para el ltro de salida, LPD no realiza un trabajo extra para identicar el comienzo o el n del trabajo. En el ltro de salida, LPD no utiliza como argumento el nombre de usuario o host, por lo tanto no esta diseado para llevar un conteo por usuario. De hecho, este slo maneja dos argumentos:
nombre-filtro -wancho -llargo
Donde ancho es tomado de la caracterstica pw y largo es tomado de la caracterstica pl, para la impresora en cuestin.
Es importante que no se deje seducir por la simplicidad del ltro de salida. Si usted desea que cada chero de un trabajo sea impreso en una pgina diferente, el ltro de salida no har este trabajo. Utilice un ltro de texto (tambin conocido como ltro de entrada); vea la seccin Instalando un Filtro de Texto . Mas all, el ltro de salida es de hecho ms complicado en ese aspecto dado que examina la cadena de bytes que se ha enviado, para buscar alguna marca especial y enviarse seas l mismo, a nombre de LPD. De cualquier forma, un ltro de salida es necesario si usted desea pginas de encabezado y requiere de enviar un secuencia de escape u otras cadenas de inicializacin para habilitar la impresin de encabezados. (Aunque tambin es trivial si desea cobrar de acuerdo a las pginas encabezado de cada usuario, dado que LPD no otorga informacin del usuario o host, al ltro de salida.) En una sola impresora, LPD permite el uso tanto del ltro de salida como el ltro de texto. En cuyo caso, LPD iniciar el ltro de salida para imprimir las pginas de encabezado (vea la seccin Pginas de Encabezado) nicamente. Posteriormente LPD espera que el ltro de salida se detenga por s mismo al enviarle dos bytes al ltro: ASCII 031 seguido de ASCII 001. Cuando un ltro de salida recibe estos dos bytes (031, 001), deber pararse, enviandose a s mismo una seal SIGSTOP. Una vez que LPD ha terminado de ejecutar otros ltros, reiniciar el ltro de salida, el enviarle una seal SIGCONT. Si existe un ltro de salida, pero no existe un ltro de texto y LPD esta trabajando con un trabajo en texto plano, LPD utilizar el ltro de salida para hacer el trabajo. Como se comento anteriormente, el ltro de salida imprimir cada chero del trabajo en secuencia, sin intervencin de alimentacin u otras ventajas con lo que al papel se reere, y seguramente que esto no es lo que usted desea. En casi todos los casos usted necesitar un ltro de texto. El programa lpf, que comentamos anteriormente como un ltro de texto, tambin es capaz de ejecutar un ltro de salida. Si desea un trabajo rpido-y-sucio del ltro de salida, pero no desea que se escriban bytes de deteccin, ni envien cdigos, puede usar lpf. Tambin puede incluir lpf en un script de shell, para que controle cualquier cdigo de inicializacin que la impresora requiera.
115
Captulo 10. Imprimir 10.4.1.6. lpf: Un Filtro de Texto El programa /usr/libexec/lpr/lpf que viene con los binarios de FreeBSD, como un ltro de texto (ltro de entrada) que puede darle sanga a los trabajos (usando la opcin lpr -i), que permite el envo literal de caracteres (con el comando lpr -l), ajusta la posicin de impresin para caracteres de retroceso y tabulador, y contabiliza las pginas impresas. Tambin puede funcionar como un ltro de salida.
lpf se ajusta a la conguracin de gran cantidad de impresoras. Y aunque no tiene la habilidad de enviar secuencias de inicializacin a la impresora, es muy sencillo escribir un script de shell para llevar a cabo la inicializacin y posteriormente ejecutar lpf.
Para efecto de que lpf lleve un conteo correcto, requiere que se tengan los valores adecuados de las caractersticas pw y pl, en el chero /etc/printcap. En base a estos, determina cuanto texto puede existir en una pgina y cuantas pginas existen en el trabajo de un usuario. Para mayor informacin al respecto, vea la seccin Contabilidad del Uso de la Impresora.
116
Especique la ruta del ltro de salida, en la caracterstica of. Vea la seccin Filtros de Salida para ms informacin al respecto. Aqui podr ver un ejemplo de un chero /etc/printcap para la impresora teak que trabajamos anteriormente; hemos aadido las pginas de encabezado, as como el ltro de salida mencionado anteriormente:
# # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:\ :of=/usr/local/libexec/hpof:
Ahora, cuando los usuarios impriman sus trabajos a la impresora teak, ellos obtendrn una pgina de encabezado por cada trabajo que manden a imprimir. Si los usuarios desean pasar un tiempo buscando sus impresiones, pueden deshabilitar la impresin de esta pgina con el comando lpr -h; para ms informacin sobre las opciones de lpr(1), vea la seccin Opciones de Pginas de Encabezado.
Nota: El sistema LPD envia a la impresora un caracter de alimentacin de pgina. Si su impresora utiliza un caracter diferente de alimentacin de pgina, especifquelo en el chero /etc/printcap, bajo la caracterstica ff.
10.4.2.2. Controlando las Pginas de Encabezado Al habilitar las pginas de encabezado, LPD produce un encabezado largo, una pgina completa con letras largas que identican el usuario, la maquina host, y el trabajo. Aqui tenemos un ejemplo (kelly ha impreso un trabajo llamado outline, desde el host rose):
k k k k k k k k k kk k k k k k ll l l l l l l l lll ll l l l l l l l lll
y y y y y y y y y yy yyy y y y y yyyy
ll l
117
oooo o o o o o o o o oooo
u u u u u u u u u uu uuu u
ii i i i i iii
n nnn nn n n n n n n n n n
r rrr rr r r r r r
oooo o o o o o o o o oooo
ssss s s ss ss s s ssss
Despus de esta pgina, LPD manda un caracter de alimentacin de pgina, para que el trabajo sea impreso en una hoja blanca nueva (a menos que cuente con sf (por sus siglas en ingls supress form feed, que es eliminacin de alimentacin de pgina) en el chero /etc/printcap). Si lo preere, LPD puede generar un encabezado pequeo; puede hacer esto, al especicar sb en el chero /etc/printcap. La pgina de encabezado que ser impresa se vera as:
rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995
Por default, LPD imprime la pgina de encabezado en primer trmino y posteriormente el trabajo. Para cambiar este comportamiento, es necesario incluir la caracterstica hl (encabezado a lo ltimo por sus siglas en ingls), en el chero /etc/printcap.
10.4.2.3. Conteo de Pginas de Encabezado Cuando se utiliza la utilidad integrada de conteo de LPD, refuerza el paradigma de que; cuando se reere al conteo de impresiones: las pginas de encabezados deben ser sin coto alguno. Por qu?
118
Captulo 10. Imprimir Por que el ltro de salida es el nico programa externo que puede llevar un conteo de las pginas impresas, cuando tiene el control, y este no es provisto con informacin de un usuario o host o algun chero contador, de tal forma que no tiene idea de a quien cargar estas impresiones. Tampoco es conveniente, simplemente cargar una impresin al total de las impresiones del ltro de texto o ltro de conversin (esos que cuentan con informacin del usuario y host), esto en virtud de que los usuarios pueden suprimir el uso de estas pginas con lpr -h. Esto implica que se le podran cobrar hojas que ellos no imprimieron. Bsicamente el comando lpr -h sera la opcin preferida de los usuarios concientes del sistema, pero usted no puede ofrecer incentivo alguno para que se utilice. Tampoco es una buena alternativa que cada ltro genere sus pginas de encabezado (y por lo tanto poder cobrar por ellas). Si los usuarios desean suprimirlas usando la opcin lpr -h, an obtendrn estas pginas y les sern cobradas, en virtud de que LPD no tiene transere la opcin -h a los ltros. As que, Qu opciones tenemos? Usted puede:
Aceptar el paradigma de LPD y no cobrar por las pginas de encabezado. Instalar una alternativa a LPD, tal como LPRng. La seccin Alternativas al Sistema de Impresin Estndar le informa sobre otros programas que puede utilizar, que sustituyan a LPD. Escribir un ltro de salida inteligente. Normalmente, un ltro de salida no esta diseado para hacer otra cosa, que no sea inicializar la impresora o bien hacer alguna conversin sencilla de caracteres. Esta diseado para pginas de encabezado y trabajos en texto plano (cuando no existe algun ltro de texto (entrada)). Pero cuando si existe un ltro de texto, para los trabajos en texto plano, entonces LPD slo har uso del ltro de salida para las pginas de encabezado. Y el ltro de salida puede pasar el texto de la pgina encabezado generado por LPD, para determinar el usuario y el host al cual se le cobrar dicha impresin. El nico problema con este metodo es que el ltro de salida an no sabe que chero usar para llevar la cuenta de las impresiones (la caracterstica af no pasa el nombre del chero), pero si usted cuenta con un chero establecido para llevar esta cuenta, puede incluirlo en el cdigo del ltro de salida. Para efecto de facilitar este paso, utilice la caracterstica sh (encabezado corto) del chero /etc/printcap. Nuevamente, todo esto podra resultar muy complicado, y los usuarios estaran muy agradecidos con el generoso administrador del sistema que genera las pginas de encabezado gratis.
10.4.2.4. Pginas de Encabezado en Impresoras PostScript Como se ha descrito anteriormente, LPD puede generar pginas encabezado en texto plano para gran cantidad de impresoras. Claro esta, que PostScript no puede imprimir texto plano directamente, de tal forma que la habilidad de imprimir estas pginas de LPD, es inservibleo casi. Una forma obvia de crear las pginas de encabezado, es hacer que cada ltro de conversin y de texto, creen sus pginas de encabezado. Los ltros debern utilizar el nombre de usuario y host, para generar esta pgina personalizada. Lo malo de este metodo es que los usuarios siempre obtendrn una pgina de encabezado, aun cuando usen en sus impresiones lpr -h. Exploremos este metodo. El siguiente script considera tres argumentos (nombre del login del usuario, nombre del host, y nombre del trabajo) y genera una pgina simple de encabezado PostScript:
#!/bin/sh # # make-ps-header - crea una pagina de encabezado PostScript a stdout # Instalado en /usr/local/libexec/make-ps-header #
119
# # Estas son unidades PostScript (72 a la pulgada). # cualquier tamano de papel que este utilizando. # page_width=612 page_height=792 border=72
Modifiquelo para A4 o
# # Verificar argumentos # if [ $# -ne 3 ]; then echo "Usage: basename $0 <user> <host> <job>" 1>&2 exit 1 fi # # Salvar estos, principalmente para lectura de PostScript, mas abajo. # user=$1 host=$2 job=$3 date=date # # Enviar el codigo PostScript a la salida estandar. # exec cat <<EOF %!PS % % Segurese de no interferir con el trabajo del usuario c continuacion % save % % Crear un grueso y poco placentero borde alrededor del borde de la pagina. % $border $border moveto $page_width $border 2 mul sub 0 rlineto 0 $page_height $border 2 mul sub rlineto currentscreen 3 -1 roll pop 100 3 1 roll setscreen $border 2 mul $page_width sub 0 rlineto closepath 0.8 setgray 10 setlinewidth stroke 0 setgray % % Desplegar nombre de login del usuario, bonito largo y prominente % /Helvetica-Bold findfont 64 scalefont setfont $page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto ($user) show
120
Ahora, cada uno de los ltros de conversin y de texto, pueden invocar este script, para en primer lugar generar esta pgina y despus imprimir el trabajo del usuario. Aqui tenemos el ltro de conversin DVI que revisamos anteriormente en este documento, modicado para generar pginas de encabezado:
#!/bin/sh # # psdf - DVI to PostScript printer filter # Installed in /usr/local/libexec/psdf # # Invoked by lpd when user runs lpr -d # orig_args="$@" fail() { echo "$@" 1>&2 exit 2 } while getopts "x:y:n:h:" option; do case $option in x|y) ;; # Ignore n) login=$OPTARG ;; h) host=$OPTARG ;; *) echo "LPD started basename $0 wrong." 1>&2 exit 2 ;; esac done [ "$login" ] || fail "No login name"
121
Note como el ltro debe pasar los argumentos en orden, para efecto de determinar el nombre de usuario y host. El procedimiento para los otros ltros de conversin es identico. El ltro de texto tiene una pequea variacin (vea la seccin Como Trabajan los Filtros). Como hemos mencionado anteriormente, este esquema simplemente nos sirve para deshabilitar la opcin eliminar encabezados (la opcin -h) de lpr. Si los usuarios desean salvar algunos arboles (o algunos centavos si usted cobra por estas pginas), no podrn deshabilitar esta opcin, ya que cada ltro imprimir una pgina de encabezado con cada trabajo impreso. Para permitir que los usuarios desactiven las pginas de encabezado en cada trabajo, ser necesario que utilice el truco del que hablamos en la seccin Conteo de Pginas de Encabezado: escribir un ltro de salida que pase la pgina generada por LPD y produzca una versin PostScript de la misma. Si el usuario utiliza lpr -h, entonces LPD no generar una pgina encabezado, y tampoco su ltro de salida. De otra forma, su ltro de salida tomar los datos de LPD y enviar el cdigo PostScript apropiado para la impresin de la pgina de encabezado. Si usted cuenta con una impresora PostScript conectada a un puerto serial, puede usar lprps, que cuenta con un ltro de salida, psof, que hace lo mencionado. Note que psof no cobra por las pginas de encabezado.
Accesando a una impresora que esta conectada a un host remoto. Esto es, una impresora que esta conectada por algun medio convencional, como puerto serial o paralelo, en un host. Y por otro lado se habilita LPD para poder imprimir desde otros hosts de la red. La seccin Impresoras Instaladas en Hosts Remotos le indica como hacer esto. Accesando a una impresora que esta conectada directamente a la red. En este caso la impresora cuenta con un dispositivo de red en adicin (o en su lugar) del convencional paralelo o serial. Esta impresora puede funcionar de la siguiente manera:
Puede comprender el protocolo de LPD e inclusive hacer consulta de trabajos en hosts remotos. En este caso, actua tal como un host normal que esta ejecutando LPD. Aplique el procedimiento revisado en Impresoras Instaladas en Hosts Remotos para efecto de congurar estas impresoras. Puede contar con soporte para envo de datos por medio de la conexin de red. En este caso, usted conecta la impresora a un host de la red, al hacer responsable, a dicho host, de la administracin de los trabajos en la cola de impresin y su envio a la impresora. La seccin Impresoras con Interfaces de Red para Secuencia de Datos le da algunos consejos y sugerencias sobre como instalar estas impresoras.
122
Captulo 10. Imprimir 10.4.3.1. Impresoras Instaladas en Hosts Remotos El sistema de cola de impresin de LPD cuenta con soporte integrado para enviar trabajos de impresin a un host remoto que cuente con LPD (o alguna sistema compatible con LPD). Esta habilidad le permite instalar una impresora en un host, y hacerla accesible desde otros hosts. Tambin es til con impresoras que cuentan con interfaces de red que comprenden el protocolo de LPD. Para habilitar la funcionalidad de impresin remota, primero instale la impresora en un host, que ser el host de impresin. Esto lo podemos hacer utilizando los pasos descritos en la seccin Conguracin Simple de una impresora. Realice cualquier conguracin adicional adicional que se requiera, de acuerdo a lo descrito en la seccin Conguracin Avanzada de una Impresora. Asegurese de probar la impresora y de que esta funcionando correctamente, as como las funciones de LPD que haya habilitado. Tambin asegurese de que el host local cuenta con autorizacin para usar el servicio de LPD en el host remoto (vea la seccin Restriccin de Trabajos de Impresoras Remotas). Si usted esta utilizando una impresora que cuenta con un dispositivo de red, compatible con LPD, entonces el host de impresin mencionado ms adelante, ser la misma impresora, y el nombre de la impresora ser el nombre que usted le haya asignado a la impresora. Vea la documentacin que incluye su impresora y/o el dispositivo de impresin en red para detalles al respecto.
Sugerencia: Si usted esta utilizando una impresora LaserJet Hewlett Packard entonces la impresora nombre automticamente har la conversin de LF a CRLF, de tal forma que no ser necesario el uso del script hpif.
Y de esta manera, para los hosts que desee que tengan acceso a la impresora, deber crear una entrada en su chero /etc/printcap, que contenga lo siguiente: 1. Nombre la entrada como desee. Para simplicar, quizs desee darle el mismo nombre y alias usado en el host de impresin. 2. La caracterstica lp dejela en blanco, de manera explcita (:lp=:). 3. Cree un directorio para la cola de impresin y especique su ruta en la caracterstica sd. LPD utilizar este directorio para almacenar los trabajos antes de que sean enviados al host de impresin. 4. Aada el nombre del host de impresin a la caracterstica rm. 5. Aada el nombre de la impresora en el host de impresin en la caracterstica rp. Eso es todo. No es necesario listar los ltros de conversin, dimensiones de la pgina, o algo adicional en el chero /etc/printcap. Aqui tenemos un ejemplo. El host rose cuenta con dos impresoras, bamboo y rattan. Vamos a habilitar a usuarios en el host orchid para que puedan imprimir en esas impresoras. Aqui tenemos el chero /etc/printcap para el host orchid (usado en la seccin Habilitando las Pginas de Encabezado). Ya cuenta con la entrada para la impresora teak; y hemos aadido las entradas para las impresoras del host rose:
# # # # # #
Fichero /etc/printcap para el host orchid - anadiendo impresoras (remotas) del host rose
123
Posteriormente, slo necesitamos crear los directorios para la cola de impresin en el host orchid:
# mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo # chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo # chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
Ahora los usuarios de orchid pueden imprimir en rattan y bamboo. Si, por ejemplo, un usuario en orchid teclea
% lpr -P bamboo -d sushi-review.dvi
el sistema de cola de LPD en el host orchid, copiar el trabajo al directorio de cola /var/spool/lpd/bamboo y notar que se trata de un trabajo DVI. Tan pronto como el host rose tenga espacio en el directorio de cola de impresin de bamboo, los dos LPDs transferirn el chero a rose. El chero quedar en espera en la cola de rose hasta que sea impreso. Este ser convertido de DVI a PostScript (dado que bamboo es una impresora PostScript), en rose.
10.4.3.2. Impresoras con Interfaces de Red para Secuencia de Datos Comunmente, cuando usted adquiere una tarjeta de red para impresoras, puede obtener dos versiones: una que emula la cola de impresin (que son las de mayor valor), o bien, otra que simplemente le permite recibir datos tal como lo hace un puerto serial o paralelo (la versi econmica). Esta seccin le explica como utilizar la versin econmica. Para el uso de la versin de mayor valor, vea la seccin Impresoras Instaladas en Hosts Remotos. El formato del chero /etc/printcap le permite especicar que puerto serial o paralelo utilizar, y (en caso de que utilice un puerto serial) la velocidad de baudio, si utiliza control de ujo, retraso en tabulador, conversin de nuevas lneas y ms. Pero no hay manera de indicar la conexin de una impresora que escucha en un puerto TCP/IP u otro puerto de red. Para efecto de enviar datos a una impresora en red, usted necesita crear un programa de comunicacin que pueda ser llamado desde un ltro de texto o de conversin. Aqui tenemos un ejemplo de dicho programa: el script netprint, que toma todos los datos de la entrada estandar y los envia a un impresora conectada a la red. Hemos especicado el nombre de host de la impresora como primer argumento y el puerto al que esta conectado como segundo argumento, en netprint. Note que este tipo de soporte slo trabaja en una va (de FreeBSD a la impresora); gran cantidad de
124
Captulo 10. Imprimir impresoras cuentan con soporte de ambas vas, y quizs desee tomar ventaja de esto (para obtener estatus de impresin, contabilidad, desempeo, etc.).
#!/usr/bin/perl # # netprint - Filtro de texto para impresoras en red # Instalado en /usr/local/libexec/netprint # $#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; $printer_host = $ARGV[0]; $printer_port = $ARGV[1]; require sys/socket.ph; ($ignore, $ignore, $protocol) = getprotobyname(tcp); ($ignore, $ignore, $ignore, $ignore, $address) = gethostbyname($printer_host); $sockaddr = pack(S n a4 x8, &AF_INET, $printer_port, $address); socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol) || die "Cant create TCP/IP stream socket: $!"; connect(PRINTER, $sockaddr) || die "Cant contact $printer_host: $!"; while (<STDIN>) { print PRINTER; } exit 0;
Una vez hecho este script, podemos utilizarlo en varios ltros. Supongamos que contamos con la impresora de lnea Diablo 750-N conectada a la red. La impresora acepta datos para impresin en el puerto 5100. El nombre de host que tiene la impresora es scrivener. El ltro de texto a usar quedara de la siguiente manera:
#!/bin/sh # # diablo-if-net - Filtro de texto para la impresora Diable en scrivener usando # el puerto 5100. Instalado en /usr/local/libexec/diablo-if-net # exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
125
Captulo 10. Imprimir Si usted siente que las copias mltiples causan trabajo inecesario a su impresora, puede deshabilitar la opcin -# de lpr(1), al incluir la caracterstica sc en su chero /etc/printcap. Cuando los usuarios utilicen la opcin -# al momento de imprimir, vern el siguiente aviso:
lpr: multiple copies are not allowed
Recuerde que si usted a congurado una impresora para su acceso de forma remota (vea la seccin Impresoras Instaladas en Hosts Remotos), ser necesario que tambin cuente con la caracterstica sc en el chero /etc/printcap del host remoto, o bien, los usuarios aun podrn hacer uso de la opcin -#, al usar un host diferente. Aqui presentamos un ejemplo. Este es un ejemplo del chero /etc/printcap, del host rose. La impresora rattan es de batalla por lo que permitiremos las copias mltiples, pero la impresora laser bamboo es ms delicada por lo que vamos a deshabilitar las copias mltiples, al aadir la caracterstica sc:
# # Fichero /etc/printcap del host rose - restringe copias multiples en bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:\ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
Ahora, tambi debemos aadir la caracterstica sc en el chero /etc/printcap del host orchid (y ya que estamos en eso, deshabiltemos las copias mltiples para la impresora teak):
# # Fichero /etc/printcap del host orchid - sin copias multiples para la # impresora local teak o impresora remota bamboo teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:
Al incluir la caracterstica sc, hemos prevenido el uso de lpr -#, pero eso no previene el uso de lpr(1) gran cantidad de veces, o el envo del mismo trabajo varias veces, tal como:
% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign
126
Captulo 10. Imprimir Existen gran cantidad de formas para prevenir este abuso (incluyendo el ignorarlo), que usted queda en libertad de explorar.
10.4.4.2. Restriccin de Acceso a Impresoras Usted puede controlar quien puede imprimir y en que impresoras, haciendo uso del mecanismo de grupos de Unix y de la caracterstica rg en el chero /etc/printcap. Simplemente aada en un grupo determinado, a los usuarios que desea puedan imprimir en cierta impresora, y despus aada el nombre del grupo a la caracterstica rg. Todos los usuarios que no pertenezcan a este grupo (incluyendo al superusuario ( root)), y que deseen imprimir en la impresora controlada, les aparecer este mensaje: lpr: Not a member of the restricted group De la misma forma que hicimos con sc (la eliminacin de copias mltiples), con rg deber indicarla en los hosts remotos que tengan acceso a sus impresoras si lo cree conveniente (vea la seccin Impresoras Instaladas en Hosts Remotos). Por ejemplo, vamos a permitir que cualquiera imprima en rattan, pero solo aquellos que forman parte del grupo artistas podrn usar la impresora bamboo. Nuevamente tenemos el chero /etc/printcap para el host rose:
# # Fichero /etc/printcap del host rose - grupo restringido para bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artistas:\ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
Vamos a dejar de lado el otro chero /etc/printcap de ejemplo (el del host orchid). Claro esta, que cualquier usuario desde orchid puede imprimir en bamboo. En este caso podriamos aceptar slo ciertos accesos desde orchid, y esto les dara acceso a la impresora. O no.
Nota: Slo puede haber un grupo restringido por impresora.
10.4.4.3. Controlando el Tamao de los Trabajos Enviados Si usted cuenta con gran cantidad de usuarios accesando sus impresoras, probablemente necesite establecer un lmite mximo en el tamao que deban tener los trabajos enviados a imprimir. Despus de todo, slo existe tanto espacio libre en el sistema de cheros como el que se tiene en los directorios de cola, y tambin usted debe asegurarse de que exista el espacio suciente para otros usuarios. El sistema de LPD, le permite especicar un monto maximo de tamao en bytes para un trabajo, con la caracterstica mx. Las unidades estn indicadas en blques BUFSIZ, que son de 1024 bytes. Si usted le agrega un cero a esta caracterstica, no habr lmite en el tamao de los trabajos que se puedan enviar a imprimir; por otro lado, si no se especica la caracterstica mx, el lmite por default ser de 1000 bloques.
127
El sistema de LPD no rehusar imprimir los trabajos que exceden el lmite, en su lugar proceder con la impresin hasta el lmite indicado. El resto del trabajo quedar descartado. El hecho de que este comportamiento sea correcto o no, aun es tema de debate. Ahora permitamonos incluir lmites a nuestras impresoras de ejemplo rattan y bamboo. En virtud de que esos artistas tienden a imprimir grandes trabajos en PostScript, los vamos a limitar a cinco megabytes. En la impresora de lnea no vamos a especicar lmite:
# # #
# # Sin limite de tamano en el trabajo: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:mx#0:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: # # Con limite de cinco megabytes: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
Nuevamente, los lmites aplican slo para los usuarios locales. Si se han congurado las impresoras para su acceso de forma remota, los usuarios que accesen remotamente no tendrn esta limitante. Para efecto de que esto sea vlido en los usuarios remotos, deber agregar la caracterstica mx en el chero /etc/printcap de los hosts remotos. Vea la seccin Impresoras Instaladas en Hosts Remotos para mayor informacin sobre la instalacin de impresoras en red. Existe otra forma especializada para limitar el tamao de los trabajos, desde impresoras remotas, vea la seccin Restriccin de Trabajos de Impresoras Remotas.
10.4.4.4. Restriccin de Trabajos de Impresoras Remotas El sistema de cola de LPD cuenta con varios metodos para restringir la impresin de trabajos enviados por hosts remotos: Restricciones del Host Haciendo uso de los cheros /etc/hosts.equiv y /etc/hosts.lpd, usted puede controlar el LPD local, para determinar de que hosts remotos se acepten conexiones. En este caso, LPD verica, en caso de una peticin, que el host remoto se encuentre listado en agluno de estos dos cheros. Si no es as, LPD rechazar la peticin.
128
Captulo 10. Imprimir El formato de estos cheros es simple: el nombre de un host por lnea. Note que el chero /etc/hosts.equiv tambin es usado por el protocolo ruserok(3), y afecta programas como rsh(1) y rcp(1), as que tenga cuidado al editarlo. Por ejemplo, este es el chero /etc/hosts.lpd del host rose:
orchid violet madrigal.fishbaum.de
Esto signica que rose aceptar peticiones de los hosts orchid, violet y madrigal.fishbaum.de. Si cualquier otro host intenta accesar el LPD de rose, el acceso ser denegado.
Restricciones de Tamao Usted puede controlar cuanto espacio libre se requiere, en el sistema de chero donde se localiza el directorio del sistema de impresin. Cree un chero llamado minfree, en el directorio local de la cola de impresin. En ese chero aada un numero que representa el numero de bloques libres que deben haber en el disco (512 bytes), para efecto de aceptar un trabajo de forma remota. Esto permite asegurarle que los usuarios remotos no llenaran su disco duro. Esto tambin puede usarse para dar cierta prioridad a los usuarios locales: ya que podr colocar sus trabajos en espera en la cola de impresin, hasta que la cantidad de espacio libre sea inferior a la indicada en el chero minfree. Por ejemplo, incluyamos a minfree en la impresora bamboo. Para esto, primero examinamos el chero /etc/printcap, para encontrar los datos de la impresora; aqui tenemos la entrada de bamboo:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:mx#5000:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
El directorio de la cola de impresin es indicado por la caracterstica sd. Vamos a dejar tres megabytes (que son 6144 bloques de disco) como espacio libre que debe existir en el sistema de cheros, para que LPD acepte trabajos remotos:
# echo 6144 > /var/spool/lpd/bamboo/minfree
Restricciones por Usuario Usted puede controlar que usuarios remotos pueden imprimir en impresoras locales, al incluir la caracterstica rs en /etc/printcap. Cuando rs aparece en la entrada de una impresora que esta conectada localmente, LPD aceptar trabajos de usuarios remotos, siempre y cuando el usuario que ha enviado el trabajo, tenga alguna cuenta, con el mismo nombre de usuario en el host local. De otra forma LPD no har el trabajo. Esta caracterstica es particularmente til en medios donde (por ejemplo) existen varias areas que comparten una red, y algunos usuarios traspasan las fronteras departamentales. Al otorgarles una cuenta en su sistema, pueden hacer uso de sus impresoras, desde su propio departamento de sistemas. Si solo desea permitirles hacer uso de sus impresoras y no de los recursos de su sistema, puede asignarles cuentas tontas (token accounts), que no cuentan con un directorio home y con un un shell inservible como /usr/bin/false.
129
El contador periodico es la forma ms comun, quizs por que es la ms sencilla. Cuando alguien envia una impresin, el ltro registra el usuario, host y numero de pginas en un chero contador. Cada mes, semestre, ao o cualquier periodo de tiempo que preera, puede revisar estos cheros, de tal forma que sepa cuantas impresiones ha realizado cada usuario y poder cobrar por las mismas. Despus de limpiar estos cheros puede empezar un nuevo periodo de cero. El contador por tiempo es menos conocido, quizs por su dicultad de uso. Este metodo hace que sus ltros cobren al usuario por sus impresiones, en cuanto hacen uso de las impresoras. Como las cuotas de disco, el conteo es inmediato. Con esto, usted puede prevenir que usuarios impriman cuando sus cuentas estn en numeros rojos, y quizs en cierto modo proveer a sus usuarios de una forma de vericar sus cuotas de impresin. Pero este metodo requiere de uso de bases de datos, para dar seguimiento a los usuarios y sus cuotas.
El sistema de cola de LPD cuenta con soporte para ambos metodos: en virtud de que usted debe proveer los ltros (bueno, casi todo el tiempo), tambin debe proveer del cdigo para el contador. Pero hay un lado positivo: usted cuenta con una enorme exibilidad en cuanto a metodos de contabilidad se reere. Por ejemplo, puede utilizar un contador periodico o por tiempo. Usted selecciona que informacin debe quedar registrada: nombre de usuario, nombre del host, tipo de trabajo, pginas impresas, medidas del papel usado, tiempo que duro en imprimir el trabajo, y as sucesivamente. Y para hacer esto, slo debe modicar sus ltros. 10.4.5.1. Contabilidad de Impresiones Rpida y Sucia FreeBSD cuenta con dos programas que pueden auxiliarlo para instalar un simple contador periodico. Ellos son; el ltro de texto lpf, descrito en la seccin lpf: un Filtro de Texto, y pac(8), un programa para reunir y totalizar la informacin de los cheros de contador de impresiones. Como se menciono en la seccin de ltros (Como Trabajan los Filtros), LPD inicia los ltros de texto y conversin con el nombre del chero contador a usar en la lnea de comando del ltro. Los ltros pueden usar este argumento para saber en donde registrar la informacin. El nombre de este chero se indica en la caracterstica af del chero /etc/printcap, y si no se indica su ruta completa, se har referencia al directorio de la cola de impresin. LPD inicia lpf con los argumentos de alto y ancho del papel (tomados de pw y pl). lpf usa estos argumentos para determinar cuanto papel ser necesario. Una vez enviado el chero a impresin, se escribe en el chero contador un registro. Este registro es as:
2.00 rose:andy
130
Deber usar un chero contador para cada impresora, dado que lpf no cuenta con una lgica de bloqueo de cheros incluida, y dos lpf escribiendo al mismo tiempo en un chero podrian corromperlo. Una forma segura para garantizar el uso de cheros distintos por impresora, es usar af=acct en el chero /etc/printcap. De esta forma contaremos con el chero contador de cada impresora por separado, en el directorio de la cola de impresin, en un chero llamado acct. Cuando sea el momento de cobrar a los usuraios, ejecute el programa pac(8). Slo dirijase al directorio de cola, del cual desea recabar la informacin y teclee pac. Usted obtendr un resumen similar al siguiente:
Login orchid:kelly orchid:mary orchid:zhang rose:andy rose:kelly rose:mary rose:root total pages/feet 5.00 31.00 9.00 2.00 177.00 87.00 26.00 337.00 runs 1 3 1 1 104 32 12 154 price 0.10 0.62 0.18 0.04 3.54 1.74 0.52 6.74
$ $ $ $ $ $ $ $
De que impresora hacer el resumen. Esta opcin funciona, solo si existe una ruta absoluta, en la caracterstcia af del chero /etc/printcap.
-c
Ignorar el nombre de host. Con esta opcin, el usuario smith del host alpha, es el mismo usuario smith del host gamma. Sin esta opcin, se consideran usuarios diferentes.
-pprecio
Computar cargos con tal precio en dlares por pgina o por pie, en lugar del precio tomado de la caracterstica pc del chero /etc/printcap, o dos centavos (precio por default). Puede indicar el precio como un numero de punto otante.
-r
131
Captulo 10. Imprimir nombre ... Imprimir la informacin del usuario nombre unicamente. En el resumen que genera pac(8) por default, podr observar el numero de pginas impresas por cada usuario desde diferentes hosts. Si en su sitio, el host no es importante (por que los usuarios pueden usar cualquier host), ejecute pac -m, para producir el siguiente resumen:
Login andy kelly mary root zhang total pages/feet 2.00 182.00 118.00 26.00 9.00 337.00 runs 1 105 35 12 1 154 price 0.04 3.64 2.36 0.52 0.18 6.74
$ $ $ $ $ $
Para calcular el monto adeudado, pac(8) utiliza la caracterstica pc del chero /etc/printcap (que por default utiliza 200, o 2 centavos por pgina). Especique en cientos de centavos el precio a cobrar por pgina o por pie, que desea cobrar, en esta caracterstica. Puede reemplazar este valor cuando ejecuta pac(8) con la opcin -p. Las unidades de esta opcin estan expresadas en dlares, y no en cientos de centavos. Por ejemplo,
# pac -p1.50
hace que cada pgina tenga un costo de un dolar con cincuenta centavos. Realmente se puede exceder en las utilidades usando esta opcin. Finalmente, ejecutando pac -s puede guardar la el resumen, en un chero, que es nombrado al igual que el chero contador de la impresora, pero con _sum al inicio del chero. Posteriormente reinicia el chero contador. Cuando ejecuta pac(8) nuevamente, lee el chero resumen, para obtener los totales y posteriormente aade la informacin del chero contador normal.
10.4.5.2. Cmo Contabilizar las Pginas Impresas? Para efecto de que pueda obtener un conteo ms cercano a la realidad, necesita poder determinar cuanto papel utiliza cada trabajo. Este es el problema esencial del conteo de impresiones. Para impresiones en texto, este problema no es tan difcil de resolver: puede contabilizar el numero de lneas que tiene un trabajo y dividirlas entre el numero de lneas totales por pgina que maneja la impresora. No olvide contabilizar los retrocesos del chero que sobreimprimen lneas, o de las largas lneas lgicas que se justican en en una o ms lneas fsicas. El ltro de texto lpf (introducido en lpf: un Filtro de Texto) toma en cuenta todas estas cosas cuando hace el conteo. Si usted esta escribiendo un ltro de texto que requiere contabilizar, quizs desee examinar el cdigo fuente del lpf. Pero, Cmo manejar otros formatos? Bueno, para conversiones DVI-a-LaserJet o DVI-a-PostScript, puede hacer que su ltro pase la informacin de salida a dvilj o dvips y ver cuantas pginas fueron convertidas. Puede hacer cosas similares con otros formatos y ltros de conversin. Pero estos metodos sufren del hecho de que la impresora puede no imprimir estas pginas. Po ejemplo, se pueden atorar, acabarse la tinta, o explotary el usuario de todas formas se le cobrar. Entonces, qu puede hacer?
132
Captulo 10. Imprimir Slo existe una forma segura de llevar un conteo conable. Adquiera una impresora que pueda indicarle cuanto papel utiliza, y conectela por medio de un puerto serial o en red. Casi todas las impresoras PostScript cuentan con soporte para esto. Existen otras marcas u modelos que tambin cuentan con el soporte (por ejemplo, las impresoras en red Imagen laser). Modique los ltros de estas impresoras para que lleven un conteo de las oginas impresas y que almacenen los registros basados en el valor only. No se requiere de un conteo de lneas o de examinar el chero de errores. Claro esta que usted puede ser muy generoso y no cobrar por las impresiones.
Lo anterior imprimir los cheros nombrados, en la impresora por default. Si no indica el nombre del chero, lpr(1) leer los datos a imprimir de la entrada estandar. Por ejemplo, este comando imprime algunos cheros importantes del sistema:
% lpr /etc/host.conf /etc/hosts.equiv
133
Este ejemplo imprime una larga lista del directorio actual, en la impresora nombrada rattan:
% ls -l | lpr -P rattan
En virtud de que no se le paso chero alguno para imprimir a lpr(1), lpr toma los datos de la entrada estandar, que en este caso es la salida del comando ls -l. EL comando lpr(1) tambin puede aceptar gran variedad de opciones para controlar el formato, aplicar conversiones a los cheros, generar copias multiples, etc.. Para mayor informacin, vea la seccin Opciones de Impresin.
le muestra los trabajos pendientes de la impresora bamboo. Aqui tenemos un ejemplo de la salida del comando lpq:
bamboo Rank active 2nd 3rd is ready Owner kelly kelly mary and printing Job Files 9 /etc/host.conf, /etc/hosts.equiv 10 (standard input) 11 ...
Esto muestra que hay tres trabajos en espera, para bamboo. El primer trabajo enviado por el usuario kelly, tiene asignado en numero de trabajo 9. Cada trabajo en una impresora, se le asigna un numero nico. La mayor parte del tiempo puede ignorar el numero de trabajo, pero este ser necesario en caso de que desee cancelar el trabajo; vea la seccin Eliminando Trabajos para mas detalles al respecto. El trabajo numero nueve consiste en dos cheros; al pasar varios trabajos a lpr(1), estos son tratados como parte de un solo trabajo. Este es el trabajo actual, activo (note la palabra active bajo la columna Rank), que quiere decir, que la impresora debe estar imprimiendo este trabajo. El segundo trabajo consiste en datos pasados al comando lpr(1) por la entrada estandar. El tercer trabajo proviene del usuario mary; que es un trabajo mucho mas grande. La ruta que esta tratando de ser descrita es muy larga, de tal forma que lpq(1) solo lo representa con tres puntos. La primer lnea de la salida de lpq(1) tambin es de utilidad: esta le indica que esta haciendo la impresora en este momento (o cuando menos, que es lo que LPD piensa que la impresora esta haciendo). El comando lpq(1) tambien cuenta con la opcin -l, para generar una salida mas detallada. Aqui tenemos un ejemplo de lpq -l:
waiting for bamboo to become ready (offline ?) kelly: 1st [job 009rose] /etc/host.conf 73 bytes /etc/hosts.equiv 15 bytes
134
1635 bytes
Para eliminar un trabajo de un a impresora especica, utilice la opcin -P. El siguiente comando elimina el trabajo numero 10 de los trabajos pendientes de la impresora bamboo:
% lprm -P bamboo 10
El comando lprm(1) cuenta con algunas opciones: lprm Elimina todos los trabajos (de la impresora por default) y que le pertenezcan a usted. lprm usuario Elimina todos los trabajos (de la impresora por default) que pertenecen a usuario. El superusuario puede eliminar trabajos de otros: usted solo puede eliminar sus trabajos. lprm Cuando no se pasa ningun nombre de usuario, o -, en la lnea de comando, lprm(1) elimina el trabajo activo de la impresora por default, si este le pertenece. El superusuario puede eliminar cualquier trabajo activo. Simplemente use la opcin -P con las opciones comentadas, para que apliquen en una impresora especica. Por ejemplo, el siguiente comando elimina todos los trabajos pendientes del usuario actual en la impresora rattan:
% lprm -P rattan -
Nota: SI usted esta trabajando en una red, el comando lprm(1), solo le permitira eliminar trabajos del host del cual se enviaron dichos trabajos, incluso si la impresora esta habilitada desde otros hosts. La siguiente secuencia de comandos demuestra esto:
% lpr -P rattan mifichero % rlogin orchid % lpq -P rattan
135
% lprm -P rattan 13
Estas opciones aplican para todos los cheros dentro del trabajo, por lo que no debe mezclar (por decir) cheros DVI y ditroff en el mismo trabajo. Para hacer esto, envie los trabajos a imprimir por separado, usando la opcin que corresponda a cada trabajo.
Nota: Todas estas opciones, excepto -p y -T requieren de ltros de conversin instalados para la impresora destino. Por ejemplo, la opcin -d requiere de un ltro para DVI. La seccin Filtros de Conversin le da ms detalles al respecto.
-c
136
Sangrar la salida con el numero de columnas indicado; si omite numero, el numero ser de 8 columnas. Esta opcin trabaja bien solo con algunos ltros de conversin.
Nota: No debe dejar espacios entre la opcin -i y el numero.
-l
Imprimir datos ditroff (troff independiente del dispositivo). -p Formatear el texto plano con pr(1) antes de imprimir. Vea pr(1) para ms informacin.
-T titulo
Use titulo en la cabecera de pr(1), en lugar del nombre del chero. Esta opcin solo tiene efecto cuando se usa con -p.
-t
Imprimir datos raster. Aqui tenemos un ejemplo: este comando imprime una bonita y formateada versin de la pgina de ayuda de ls(1), en la impresora por default:
% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t
El comando zcat(1) descomprime la fuente de la pgina de ayuda ls(1) y lo pasa al comando troff(1), que le da formato y crea la salida GNU troff, la cual es pasada a lpr(1), que envia el trabajo a la cola de LPD. Como usamos la opcin -t con lpr(1), el sistema de cola va a convertir la salida GNU troff a datos entendibles para la impresora, cuando se imprime.
10.5.4.2. Opciones para Manejar los Trabajos Las siguientes opciones de lpr(1), le indican a LPD que debe manejar el trabajo de una forma especial: -# copias Producir un numero de copias de cada chero en el trabajo, en vez de una sola copia. Un administrador puede inhabilitar esta oprcin para reducir el desgaste de la impresora y alentar el uso de la fotocopiadora. Vea la seccin Restriccn de Copias Multiples.
137
Captulo 10. Imprimir Este ejemplo imprime tres copias de parser.c seguido de tres copias de parser.h en la impresora por default:
% lpr -#3 parser.c parser.h
-m Enviar correo despus de completar el trabajo. Con esta opcin, el sistema LPD enviara un correo a su cuenta cuando termina de imprimir. En su mensaje, le informar si el trabajo termino con exito o si hubo algun error, y (normalmente) que tipo de error fu. -s No copie el chero al directorio de la cola, en su lugar crear un enlace simbolico. Si usted esta imprimiendo un trabajo de gran tamao, quizs esta es una buena opcin. Esta opcin le ahorra espacio en el directorio de cola (donde su trabajo puede terminar con el espacio libre donde reside su directorio). Esta opcin tambin le ahorra tiempo, en virtud de que LPD no tendr que copiar todos y cada uno de los bytes del trabajo al directorio. Aunque esto tiene su inconveniente: dado que LPD estar haciendo uso del chero original, no lo podr modicar o eliminar hasta que termine la impresin.
Nota: Si usted esta en un entorno de red, LPD eventualmente copiar cheros del host local al host remoto, as que la opcin -s le puede ahorrar espacio solo en el directorio del host local, no en los remotos. Aun con esto, la opcion es de gran utilidad.
-r Eliminar los cheros del trabajo, una vez que hayan sido copiados al directorio de la cola, o despus de que hayan sido impresos, cuando se use la opcin -s. Tenga cuidado con esta opcin!
10.5.4.3. Opciones de Pginas de Encabezado Cuando alguna de las siguientes opciones son pasadas a lpr(1), ajustan el texto que normalmente aparece en la pgina encabezado del trabajo. Si las pginas de encabezado son suprimidas, estas opciones no tendrn efecto alguno. Vea la seccin Pginas de Encabezado para ms informacin sobre la conguracin de las Pginas de Encabezado. -C texto Reemplazar el nombre del host del encabezado con este texto. Normalmente el nombre del host es el nombre del host del cual se esta imprimiendo. -J texto Reemplazar el nombre del trabajo en el encabezado con este texto. Normalmente el nombre del trabajo es el nombre del primer chero del trabajo, o stdin si esta imprimendo de la entrada estandar.
138
Iniciar y detener las impresoras Habilitar y deshabilitar sus trabajos pendientes Modicar el orden de los trabajos pendientes.
Primero, una nota de terminologa: si una impresora es detenida, no podr contar con una cola de trabajos pendientes. Los usuarios podrn enviar sus trabajos, que quedarn en espera hasta que la impresora se iniciada o su cola de trabajos pendientes sea purgada. Si la cola de trabajos pendientes es deshabilitada, ningun usuario (excepto root) podr enviar trabajos a la impresora. Una cola de trabajos pendientes habilitada, permitir el envio de trabajos. Una impresora puede ser iniciada para una cola de trabajos que esta deshabilitada, en cuyo caso continuar imprimiendo los trabajos de la cola de trabajos pendientes, hasta que ya no exista ninguno. En general, usted debe de contar con privilegios de root para hacer uso del comando lpc(8). Los usuarios comunes solo pueden usar lpc(8) para vericar el estatus de una impresora y para reiniciar una impresora detenida. Aqui tenemos un resumen de los comandos de lpc(8). La mayor parte de estos comandos usan el argumento nombre-impresora para indicarle en cual debe operar. Como este argumento puede usar all, para indicarle que opere en todas las impresoras listadas en el chero /etc/printcap.
abort nombre-impresora
Cancelar el trabajo actual y detener la impresora. Los usuarios podrn aun enviar sus trabajos si la cola de pendientes esta habilitada.
clean nombre-impresora
Eliminar cheros viejos del directorio de cola de impresin. Ocasionalmente, los cheros que ya han sido impresos no son eliminados correctamente por LPD, particularmente si hubo errores durante la impresin o si se realizaron otros trabajos administrativos durante la misma. Este comando localiza cheros que no pertenecen al directorio y los elimina.
139
Deshabilita la cola de pendientes para nuevos trabajos. Si la impresora esta activa, se continuan imprimiendo los trabajos en la cola de pendientes. El superusuario (root) siempre podr enviar trabajos, incluso cuando se use esta opcin. Este es un comando til cuando se esta probando una nueva impresora o instalando un ltro: deshabilitar la cola de pendientes y enviar los trabajos como root. Otros usuarios no podrn enviar trabajos, hasta que la impresora haya sido congurada correctamente y se re-habilite la cola de pendientes, con el comando enable.
Usar el comando down para una impresora, equivale a usar el comando disable seguido del comando stop. El mensaje que se ingrese, aparecer como el estatus de la impresora, cada vez que un usuario verique su estatus con lpq(1) o con lpc status.
enable nombre-impresora
Habilitar la cola de pendientes. Los usuarios pueden enviar sus trabajos pero la impresora no imprimira nada hasta que se inicializada.
help nombre-del-comando
Mostrar la ayuda del comando nombre-del-comando. Si no se indica el nombre-del-comando, se muestra un resumen de los comandos disponibles.
restart nombre-impresora
ReIniciar la impresora. Los usuarios comunes pueden usar esta opcin en caso de que por alguna razn LPD se paralice, pero no pueden iniciar una impresora detenida con algunos de los comandos stop o down. El comando restart es equivalente a ejecutar abort seguido del comando start.
start nombre-impresora
Detiene la impresora. La impresora terminar el trabajo actual y dejar de imprimir. Aun cuando la impresora esta detenida, los usuarios pueden enviar sus trabajos a la cola de pendientes de la impresora.
topq nombre-impresora trabajo-o-usuario
Modicar el orden de la cola de pendientes de la impresora nombre-impresora, colocando los trabajos con el identicador trabajo o que pertenecen al usuario usuario, en primer lugar de la cola. Para este comando no puede hacer uso de la opcin all en lugar de nombre-impresora.
up nombre-impresora
Usar el comando up en una impresora; es lo opuesto al comando down. Equivalente a start seguido del comando enable. lpc(8) acepta estos comandos desde la lnea de comandos. Si no ingresa aglun comando, lpc(8) entra en modo interactivo, donde puede ingresar los comandos hasta que teclee exit, quit o n-del-archivo (EOF).
140
141
Usted es otra vctima del efecto de escalera, causada por el conicto de interpretacin, sobre cual caracter indica la nueva lnea. Los sistemas operativos estilo-Unix, usan un caracter sencillo: cdigo ASCII 10, alimentacin de lnea (LF). MS-DOS, OS/2 y otros utilizan un par de caracteres, cdigo ASCII 10 y cdigo ASCII 13 (retorno de carrete o CR). Muchas impresoras usan la forma de MS-DOS, para representar los saltos de lneas. Cuando usted imprime con FreeBSD, su texto hace uso del caracter de nueva lnea. La impresora, una vez que detecta el caracter de nueva lnea, avanza el papel una lnea, pero manteniendo la misma posicin horizontal, para la impresin del siguiente caracter. Para eso es el caracter de retorno de carrete: para mover la posicin horizontal al borde izquierdo del papel. Aqui tenemos lo que FreeBSD desea que haga su impresora: Impresora recibe CR Impresora recibe LF Aqui tenemos algunas formas de llevar esto a cabo:
Usar los botones de conguracin de la impresora o el panel de control, para modicar su interpretacin de estos caracteres. Verique el manual de su impresora para ver como hacer esto.
Nota: Si cuenta con otro sistema operativo en su maquina, ademas de FreeBSD, quizs sea necesario recongurar la impresora, para usar la interpretacin de los caracteres de CR y LF del otro sistema operativo. Puede escoger una de las otras soluciones que se comentan ms adelante.
Puede hacer que el controlador serial de FreeBSD, automticamente convierta LF en CR+LF. Claro esta, que esta alternativa funciona solo en impresoras seriales. Para habilitar esta habilidad, establezca el bit CRMOD, en la caracterstica fs del chero /etc/printcap para la impresora. Envie un cdigo de escape a la impresora para que temporalmente de un tratamiento diferente a los caracteres LF. Consulte el manual de su impresora para ver los cdigos de escape soportados por su impresora. Una vez que localice el cdigo correcto, modique su ltro de texto, para que se envie este cdigo primero y despus el trabajo a imprimir. Aqui tenemos un ejemplo de un ltro de texto, para impresoras compatibles con PCL de Hewlett-Packard. Este ltro hace que la impresora trate a LF como LF + CR; posteriormente envia el trabajo de impresin; y por ltimo envia un caracter de alimentacin de pgina, para expulsar la ltima pgina del trabajo. Este ltro debiese funcionar con casi todas las impresoras Hewlett Packard.
#!/bin/sh # # hpif - Filtro de texto simple para lpd e impresoras compatibles con HP-PCL # Instalado en /usr/local/libexec/hpif # # Pasa la entrada estandar a la salida estandar. # Ignora todos los argumentos del filtro. # Le indica a la impresora que debe tratar a LF como si fuera CR+LF. # Expulsa la ultima pagina cuando ha terminado.
142
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0 exit 2
Aqui tenemos un ejemplo de /etc/printcap para un host llamado orchid. Solo cuenta con una impresora conectada al puerto paralelo, una Hewlett Packard LaserJet 3Si, llamada teak. Se esta usando el script anterior como ltro de texto:
# # Fichero /etc/printcap del host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:
Cada lnea se sobreescribe. La impresora no avanza ninguna lnea. Todas las lneas son impresas una sobre otra en un solo rengln. Este problema es lo opuesto al efecto de escalera, descrito anteriormente, y es poco comn. En algun lugar, los caracteres de LF, que usa FreeBSD para indicar un salto de lnea, la impresora los identica como CR, de tal forma que regresa el punto de impresin al borde del papel, pero sin saltar al siguiente rengln. Utilice los botones de la impresora o el panel de control, para forzar a que la impresora interprete de la siguiente manera los caracteres LF y CR: Impresora recibe CR LF Impresora imprime CR CR + LF
Al imprimir se pierden caracteres. Mientras imprime, algunos caracteres no son impresos en cada lnea. El problema puede agravarse conforme se usa la impresora, perdiendo ms y ms caracteres. El problema es que la impresora no puede mantener el ritmo al cual la computadora envia los datos por medio de la lnea serial (este problema no se debiese presentarse en impresoras conectadas al puerto paralelo). Existen dos formas de solucionar este problema:
Si la impresora cuenta con soporte para el control de ujo XON/XOFF, haga que FreeBSD lo utilice, al especicar el bit TANDEM en la caracterstica fs. Si la impresora cuenta con soporte para el control de ujo externo (carrier), especique el bit MDMBUF en la caracterstica fs. Asegurese de que el cable utilizado para conectar la impresora a la computadora cuenta con soporte para este tipo de control de ujo. Si la impresora no cuenta con soporte para el control de ujo, use una combinacin de los bits NLDELAY, TBDELAY, CRDELAY, VTDELAY y BSDELAY en la caracterstica fs, para aadir el retraso apropiado en la cadena de informacin enviada a la impresora.
143
Solo imprime basura. La impresora imprime lo que parece ser basura al azar, pero no el texto deseado. Esto normalmente es otro sntoma de una conguracin incorrecta en los parmetros de comunicacin de una impresora serial. Verique el rango de bps en la caracterstica br y la paridad de bits en fs y fc; asegurese de que la impresora use los mismos datos especicados en el chero /etc/printcap.
No sucede nada. Si no sucede nada, probablemente el problema es con FreeBSD y no con su hardware. Incluya un chero de registros (log), con la caracterstica lf, en la entrada de su impresora en el chero /etc/printcap. Por ejemplo, aqui esta la entrada de rattan, con la caracterstica lf :
rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple:\ :lf=/var/log/rattan.log
Posteriormente, intente imprimir de nuevo. Verique el chero de registros (en nuestro ejemplo,
/var/log/rattan.log) para buscar cualquier mensaje de error que aparezca. Basado en ese mensaje trate de
resolver el problema. Si no especica la caracterstica lf, entonces LPD utilizar /dev/console como la salida por default.
144
145
Captulo 11. Discos El editor de etiquetas (de particiones) de Sysinstall utiliza la etiqueta e para particiones que no son root ni swap. Dentro del editor de etiquetas de particiones, cree un nico sistema de archivos pulsando C. Cuando se le pregunte si ser un sistema de archivos (FS, le system) o swap, elija FS e indique un punto donde montarlo (por ejemplo, /mnt). Cuando aada un disco una vez instalado FreeBSD, Sysinstall no crear la entrada correspondiente en /etc/fstab, por lo que no resulta importante el punto que indique para montar el disco. En este momento, ya puede escribir en el disco la informacin de las particiones y sus etiquetas y crear un sistema de archivos. Para ello pulse W. Ignore cualquier error de Sysinstall que le informe de que no pudo montar la nueva particin. Ya puede salir del editor de etiquetas de particiones y de Sysinstall. El ltimo paso consiste en editar /etc/fstab para aadir una entrada para el nuevo disco.
dd if=/dev/zero of=/dev/rda1 bs=1k count=1 disklabel -Brw da1 auto disklabel -e da1 # creamos la particin e newfs -d0 /dev/rda1e mkdir -p /1 vi /etc/fstab # aadimos una entrada para /dev/da1e mount /1
dd if=/dev/zero of=/dev/rda1 count=2 disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin newfs /dev/rda1e mkdir -p /1 vi /etc/fstab # aadimos una entrada para /dev/da1e mount /1
146
147
148
13.1. Sinpsis
FreeBSD soporta una amplia variedad de tarjetas de sonido, lo que permite disfrutar de sonido de alta delidad en su sistema. sto incluye la posibilidad de grabar y reproducir archivos de audio tanto en los formatos MPEG Audio Layer 3 (MP3), WAV y Ogg Vorbis, as como muchos otros. La Coleccin de Ports de FreeBSD contiene tambin aplicaciones que le permitirn editar audio previamente grabado, aadir efectos de sonido y controlar dispositivos MIDI. Tras leer ste captulo usted debera saber:
Cmo identicar su tarjeta de sonido Cmo congurar su sistema de modo que su tarjeta de sonido sea reconocida. Conrmar el funcionamiento de su tarjeta usando herramientas de muestreo. Cmo enfrentarse a problemas de conguracin de sonido. Cmo reproducir y crear archivos MP3. Cmo convertir pistas de audio CD en archivos de datos.
Crystal 4237, 4236, 4232, 4231 Yamaha OPL-SAx OPTi931 Ensoniq AudioPCI 1370/1371 ESS Solo-1/1E NeoMagic 256AV/ZX Sound Blaster Pro, 16, 32, AWE64, AWE128, Live Creative ViBRA16 Advanced Asound 100, 110, and Logic ALS120 ES 1868, 1869, 1879, 1888
149
El driver a usar en el kernel depende del tipo de tarjeta que vaya a usar. La seccin siguiente contiene informacin sobre qu aadir a la conguracin del kernel que necesita.
a su archivo de conguracin del kernel. Si tiene una tarjeta ISA PnP tambin tendr que aadir:
device sbc
al archivo de conguracin de su kernel. Los detalles de conguracin de arriba son por defecto. Debera cambiar la IRQ u otros parmetros para hacerlos coincidir con su tarjeta. Vea la pgina sbc(4) del manual para ms informacin.
Nota: La Sound Blaster Live no est soportada en FreeBSD 4.0 salvo que se instale un parche, cosa que est fuera del cometido de sta seccin. Recomendamos que se actualice a la ltima versin -STABLE antes de intentar usar sta tarjeta.
al archivo de conguracin de su kernel. Puede necesitar cambiar la IRQ u otro tipo de datos para que ajusten con su tarjeta. Vea la pgina gusc(4) del manual para ms informacin.
150
al su archivo de conguracin de su kernel. Si tiene una tarjeta ISA non-PnP que no tenga un bridge driver tendr que aadir:
device pcm0 at isa? irq 10 drq 1 flags 0x0
a su archivo de conguracin del kernel. Puede necesitar cambiar la IRQ u otros parmetros para que ajusten con su tarjeta.
La salida que muestre su sistema puede ser diferente. Si no hay dispositivos pcm en la salida del comando hay algn error en los pasos previos. Si le sucede sto vuelva a su archivo de conguracin del kernel y asegrese de que ha elegido el dispositivo adecuado. Consulte la seccin de problemas para opciones adicionales. Si al ejecutar el comando anterior encontr pcm0 ejecute lo siguiente como root:
# cd /dev # sh MAKEDEV snd0
Si encontr pcm1 haga igual que que en el paso anterior reemplazando snd0 con snd1.
Nota: Los comandos anteriores no van a crear dispositivos /dev/snd!
151
Dispositivo
/dev/audio /dev/dsp /dev/dspW /dev/midi /dev/mixer /dev/music /dev/sequencer /dev/pss
Descripcin dispositivo de audio compatible con SPARC Dispositivo para voz digital Como /dev/dsp pero con muestreo de 16 bits Dispositivo midi de acceso Raw Dispositivo Mezclador Interfaz para secuenciador de nivel 2 Dispositivo secuenciador Interfaz para dispositivos programables
Si todo ha ido bien debera tener una tarjeta de sonido funcionando. Si no es as lea la siguiente seccin.
152
Captulo 13. Sonido XMMS puede instalarse desde el port audio/xmms o como package. El interfaz de XMMS es intuitivo e incluye lista de canciones, ecualizador grco y muchas ms cosas. Aquellos que conozcan WinAmp encontrarn XMMS fcil de usar. Existe una alternativa; el port audio/mpg123 es un reproductor MP3 en lnea de comandos. mpg123 puede usarse indicndole un dispositivo de sonido concreto y el archivo MP3 en la lnea de comandos como se muestra aqu:
# mpg123 -a /dev/dsp1.0 Grandesxitos-DeAlguno.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3. Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp. Uses code from various people. See README for more! THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from BT - Grandesxitos-DeAlguno.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo /dev/dsp1.o debe reemplazarse por el dispositivo dsp que tenga en su sistema.
La opcin -D 0,1,0 indica el dispositivo SCSI 0,1,0, que se corresponde con la salida del comando cdrecord -scanbus. Para extraer pistas individuales utilice la opcin -t como se v aqu:
# cdda2wav -D 0,1,0 -t 7
sta opcin trata la sptima pista del CD de audio. Para tratar un rango de pistas, por ejemplo las pistas de la uno a la siete, especique el rango:
# cdda2wav -D 0,1,0 -t 1+7
cdda2wav slo soporta unidades CDROM SCSI. Para unidades IDE utilice audio/cdd o alguna otra entre las variadas aplicaciones que hay en la coleccin de ports de audio.
153
Los 128 kbits pasan por ser el estndar de facto usado en el ratio de bits de los MP3 al uso. Muchos preeren mayores calidades, 160 e incluso 192. A mayor ratio de bits, mayor espacio requerido en el disco --pero la calidad tambin ser mayor--. La opcin -h utiliza el modo ms calidad pero algo ms lento. Opciones que empiezan por --t indican etiquetas ID3, que suelen inclur informacin sobre la cancin que se incluye en el archivo MP3. Puede encontrar ms opciones consultando el manual de lame.
XMMS genera un archivo en formato WAV, mientras que mpg123 convierte MP3 a datos audio raw PCM. Ambos formatos pueden usarse con cdrecord o burncd para crear un CDROM de audio. Consulte "creating-cds" para ms informacin acerca del uso de grabadoras de CD en FreeBSD.
154
155
15.1. Sinpsis
FreeBSD cuenta con un gran numero de formas para conectar una computadora a otra. Para establecer una red o una coneccin a Internet por medio de un mdem, o bien, permitir a otras computadoras conectarse por medio de este, se requiere del uso de PPP o SLIP. Este captulo describe en detalle como congurar los servicios de comunicacin para llevar esto a cabo. Una vez que haya leido este captulo, usted sabr:
Como congurar User PPP. Como congurar Kernel PPP. Como congurar PPPoE (PPP over Ethernet*). Como congurar PPPoA (PPP over ATM*). Como instalar y congurar un cliente y servidor SLIP.
N. de T.: En estricto sentido esto se reere a contar con la conexin por medio de un dispositivo Ethernet, o bien ATM, pero debido a que usted encontrar estos metodos en su sistema, como PPPoE o bien PPPoA, se han dejado los conceptos literales del documento original. Espero que no sea un problema. Antes de leer este captulo, usted debiese:
Estar familiarizado con la terminologa bsica de redes. Comprender lo bsico y el propsito de una coneccin por mdem SLIP y/o PPP.
Puede ser que usted se pregunte cual es la principal diferencia entre User PPP y kernel PPP. La respuesta es sencilla; el mtodo User PPP procesa la entrada y salida de datos en userland (ver nota siguiente) en lugar de hacerlo en el kernel. Esto es algo desgastante, en trminos del manejo de datos entre userland y el kernel, pero permite, por mucho, un mejor desempeo e implementacin de PPP. User PPP utiliza el dispositivo tun para comunicarse con el mundo exterior, mientras que kernelppp, utiliza el dispositivo ppp. En el desarrollo de este captulo, se har referencia a User PPP, simplemente como ppp, a menos de que sea necesaria hacer una distincin entre este y otro software de PPP, como es el caso de pppd. As mismo, si en el desarrollo del captulo no se seala lo contrario, todos los comandos explicados, debern ser ejecutados como root. N. de T. : Cuando se habla de "userland" se hace referencia a todo aquello que *no* forma parte del kernel y que en el caso de cdigo de programa, se ejecuta en modo usuario, ya que el cdigo del kernel se ejecuta en modo kernel, supervisor, o bien en modo privilegiado de ejecucin. En lo sucesivo este trmino ser utilizado tal cual.
156
Una cuenta activa con un Proveedor del Servicio de Internet (ISPpor sus siglas en ingles), que usted utliza para conectarse. Adicionalmente, un mdem o algn otro dispositivo, conectado a su sistema, y congurado correctamente, que le permite realizar la conexin con su ISP. El nmero telefnico de su proveedor. Su nombre de usuario y contrasea. (Ya sea un nombre de usuario y/o contrasea estilo UNIX, o bien para uso por medio de PAP o CHAP) La direccin IP de uno o ms servidores de nombres (DNS). Normalmente, estos sern provistos por su proveedor de Internet. Si su proveedor no le ha dado esta informacin, puede utilizar la opcin enable dns en su chero ppp.conf, para indicarle a ppp que congure el DNS por usted. Esta caracterstica depende del sistema de negociacin de DNS que mantenga su proveedor de Internet.
La siguiente informacin puede ser que haya sido provista por su proveedor de servicios de internet, pero no es completamente necesaria:
La direccin IP del gateway (pasarela de salida) de su PSI. El gateway es la mquina a la cual usted se conectar y ser la ruta por default. Si usted no cuenta con esta informacin, puede inventar uno y al intentar conectarse, el servidor de su PSI, este nos indicar cual es el valor correcto. Esta direccin IP, es referida por ppp como HISADDR.
La mascara de red (netmask) que debe utilizar. Si su PSI no le ha provisto de una, puede utilizar sin problema 255.255.255.255. Si su PSI, le ha provisto de una direccin de IP esttica y un nombre de host, puede capturarla. De otra forma podemos dejar que el servidor asigne cualquier IP que corresponda.
Si usted no cuenta con alguna de la informacin que hemos comentado, le recomendamos contactar con su PSI para requerirla.
Nota: En el transcurso de la presente seccin, algunos ejemplos muestran el contenido de archivos de conguracin los cuales presentan una numeracin. Estos nmeros sirven como ayuda y referencia a cada lnea, pero estos no deben de estar presentes en el archivo original. Una sangra adecuada, as como espacios adecuados, tambin son de suma importancia.
157
Captulo 15. PPP y SLIP 15.2.1.2. Preparando el Kernel Como se comento anteriormente, la aplicacin ppp utiliza el dispositivo tun. Si este dispositivo no ha sido compilado dentro del kernel, ppp lo cargar como mdulo cuando sea requerido. El dispositivo tun es dinmico, de tal forma que se generara de acuerdo a la demanda que tenga (usted no esta limitado por el kernel).
Nota: Vale la pena hacer notar que el controlador tun, crea los dispositivos de acuerdo a sus necesidades, por lo que el comando ifconfig -a, no necesariamente mostrar los dispositivos tun.
15.2.1.3. Vericando el dispositivo tun Bajo circunstancias normales, la mayora de los usuarios slo utilizaran un dispositivo tun (/dev/tun0). En lo sucesivo podemos hacer referencia a tun0 con la expresin tunN donde N es el nmero que corresponde en su sistema. Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS la existencia de tun0 debe ser vericada (esto no es necesario si se cuenta habilitada la opcin DEVFS ya que los nodos de dispositivos sen creados en funcin a las necesidades). La forma ms sencilla de vericar si el dispositivo tun0 se encuentra congurado correctamente, es la de rehacer el dispositivo. Para hacer esto simplemente siga los siguientes pasos:
# cd /dev # sh MAKEDEV tun0
Si usted necesita 16 dispositivos tun en su kernel, deber crearlos. Esto puede hacerse de la siguiente manera:
# cd /dev # sh MAKEDEV tun15
15.2.1.4. Conguracin de la Resolucin de Nombres La resolucin es la parte del sistema que busca una direccin IP en los nombres de servidores (host) y viceversa. Puede ser congurado para que busque en "mapas" que describen la IP del servidor en uno de dos lugares, el primero es un archivo llamado /etc/hosts. Lea hosts(5) para ms informacin al respecto. El segundo es el Servicio de Nombres de Dominio de Internet (DNS-Internet Domain Name Service), el cual es una base de datos de distribucin. Para mayor informacin con respecto a los DNS, referirse a dns. La resolucin de nombres es un sistema que por medio de llamadas, realiza el mapeo de nombres, pero es necesario inidicarle donde debe buscar la informacin. Para versiones de FreeBSD anteriores a la 5.0, esto es hecho al editar el archivo /etc/host.conf. La versin 5.0 de FreeBSD utiliza el archivo /etc/nsswitch.conf. 15.2.1.4.1. Edicin del archivo /etc/host.conf Para versiones de FreeBSD anteriores a la 5.0, este archivo debe contener las siguientes dos lneas (en este orden):
hosts bind
158
Captulo 15. PPP y SLIP Esto le indica a la resolucin que busque en primer trmino en el archivo /etc/hosts, y posteriormente en el DNS, si el nombre no fu localizado
15.2.1.4.2. Editando el archivo /etc/nsswitch.conf Para versiones de FreeBSD 5.0 y posteriores, este archivo debe contener, al menos, la siguiente lnea:
hosts: files, dns
Esto le indica a la resolucin de nombres, que busque en primer lugar en el archivo /etc/hosts, y en caso de que el nombre no haya sido localizado, busque en el DNS.
15.2.1.4.3. Editando el archivo /etc/hosts Este archivo puede contener direcciones IP, as como el nombre de las mquinas de su red local. Como mnimo debe contar con la informacin de la mquina que correr ppp. Asumiendo que su ordenador se llama foo.bar.com con la direccin IP 10.0.0.1, el archivo /etc/hosts debiese contener:
127.0.0.1 localhost.bar.com localhost ::1 localhost.bar.com localhost 10.0.0.1 foo.bar.com foo
Las primeras dos lneas denen el alias del localhost, como sinnimo de la maquina actual. Independientemente de su propia direccin IP, la direccin IP en estas lneas siempre debe ser 127.0.0.1 y ::1. La ltima lnea especica el nombre foo.bar.com (asi como foo para acortarlo), para la direccin 10.0.0.1.
Nota: La direccin 127.0.0.1 y el nombre localhost son conocidos como direcciones "loopback" las cuales hacen un "loopback" (salto de regreso) a la maquina local.
Si su proveedor de Internet, le asigna una direccin IP ja, asn como un nombre, y usted no lo utiliza como nombre del host, aada esto tambin al archivo /etc/hosts.
15.2.1.4.4. Editando el archivo /etc/resolv.conf El archivo /etc/resolv.conf, le indica a la resolucin de nombres, como comportarse. Normalmente deber de incluir la(s) siguiente(s) lnea(s):
domain ejemplo.com nameserver x.x.x.x nameserver y.y.y.y
Donde x.x.x.x y y.y.y.y deben reemplazarse con las direcciones IP de los servidores DNS, de su ISP. Puede ser que esta informacin se la hayan entregado al suscribirse o no, pero una rpida llamada a su ISP debe resolver esto. Tambi puede congurar su sistema, de tal forma que syslog(3) provee de un login para su coneccin por PPP. Slo aada:
!ppp
159
15.2.1.5. Conguracin Automtica de PPP Ambos, ppp as como pppd (la implementacin del kernel para PPP), utilizan la conguracin de los archivos localizados en el directorio /etc/ppp. Ejemplos para ppp, pueden encontrarse en: /usr/share/examples/ppp/. Para efecto de congurar correctamente ppp, es necesario editar varios cheros, dependiendo de sus necesidades. La manera en que edite dichos archivos, depende en la forma que utilice su PSI (Proveedor de Servicios de Internet) para brindarle conexin, ya sea por medio de una direccin IP esttica o bien una IP dinmica (ya sea que cada vez que se conecta obtiene una nueva direccin). 15.2.1.5.1. PPP y direcciones de IP estticas (jas) Ser necesario editar el archivo de conguracin; /etc/ppp/ppp.conf. Y deber quedar de una manera similar al ejemplo que se describe a continuacin.
Nota: Las lneas que terminan con :, deben comenzar en la primer columna del archivo el resto de las lneas debern utilizar sangra como se muestra, utilizando espacios o bien el tabulador. La mayor parte de la informacin que requiere ingresar aqui, se mostro en el marcado manual anterior.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
default: set log Phase Chat LCP IPCP CCP tun command ident user-ppp VERSION (built COMPILATIONDATE) set device /dev/cuaa0 set speed 115200 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" set timeout 180 enable dns provider: set phone "(123) 456 7890" set authname foo set authkey bar set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" set timeout 300 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0 add default HISADDR
Lnea 1: Identica la entrada por omisin a utilizar. Los comandos descritos en esta parte, sern ejecutados de manera automtica cuando se ejecute ppp.
160
Captulo 15. PPP y SLIP Lnea 2: Habilita los parmetros de acceso. Cuando la conguracin trabaja sin problemas, esta lnea deber quedar de la siguiente forma:
set log phase tun
para efecto de evitar avisos masivos del sistema (logs). Lnea 3: Esta lnea le indica a PPP como identicarse ante el puerto. PPP se identica, si tiene algun problema para efecto de establecer la conexin, en esta identicacin, PPP provee de cierta informacin que puede resultar util para detectar el probelma. Lnea 4: Le indica a PPP cual es el dispositivo a utilizar para realizar la conexin, o bien al que esta conectado el mdem. El dispositivo COM1 es /dev/cuaa0 y COM2 es /dev/cuaa1. Lnea 5: Establece la velocidad a utilizar en la conexin. Si la velocidad de 115200 no trabaja correctamente (la cual deberia con cualquier mdem normal), intente con una velocidad inferior, como puede ser 38400. Lneas 6 y 7: La cadena de inicializacin. El modo User PPP, utiliza y espera enviar-recibir, la informacin utilizando una sintaxis similar a la descrita en el programa chat(8). Favor de consultar la pgina de ayuda para conocer las opciones de este lenguaje. Nota: Este comando continua en la siguiente lnea, para facilitar su lectura. Cualquier comando en el archivo ppp.conf puede utilizar este formato, siempre y cuando el ltimo caracter de la lnea sea una diagonal invertida "\".
Lnea 8: Establece el tiempo de espera que debe tratar de realizar la conexin. Por omisin se establecen 180 segundos, por lo que esta lnea se deja por pura esttica. Lnea 9: Esta lnea le indica a PPP, que solicite conrmacin al puerto, sobre la conguracin de la resolucin local. Si usted esta corriendo un servidor local de nombres, deber comentar o eliminar esta lnea. Lnea 10: Una lnea en blanco, para facilitar la lectura. Las lneas en blanco son ignoradas por PPP. Lnea 11: Identica el incio de datos para un proveedor determinado, de servicios de internet. Este podr ser cambiado por el nombre de su ISP, de tal forma que en lo sucesivo utilice la opcin load ISP, para iniciar una sesin.
161
Captulo 15. PPP y SLIP Lnea 12: Indica el numero telefnico del proveedor. Pueden indicarse varios numeros a utilizar, utilizando el signo de dos puntos (:) o bien la barra (|) como separador. La diferencia entre estos dos separadores, es detallada en el ppp(8). Pero en resumen, se puede decir que si se desean utilizar varios numeros de manera aleatoria se debe utilizar los dos puntos, pero si se desea siempre utilizar el primer numero y en caso de falla el siguiente y as sucesivamente, se debe utilizar la barra. Es importante que todo lo que se reere a numeros telefonicos, este entre comillas como se muestra. Es importante que si piensa usar espacios en los numeros, haga uso de estas comillas ("). La falta de estas pueden ocasionar un simple error. Lneas 13 y 14: Identica el nombre de usuario y su contrasea. Cuando uno se conecta utilizando un login de tipo Unix, estos valores hacen referencia al comando set login, utilizando las variables \U y \P. Cuando la conexin es utilizando algn metodo como PAP o CHAP, estos valores, son utilizados al momento de la autenticacin. Lnea 15:
Si usted esta utilizando el metodo PAP o CHAP, no habr un login en este punto, y esta lnea deber ser comentada (utilizando el smbolo # al principio de la lnea) o bien eliminada por completo. Vea la parte Autenticacin con PAP y CHAP para ms detalles. La cadena de acceso (login), utiliza la misma sintxis que se utiliza en la cadena de marcado. En este ejemplo, la cadena sirve para un servicio, en el cual el inicio de sesin se ve algo as como lo siguiente:
Proveedor de servicios X login: foo password: bar protocol: ppp
Es recomendable editar el script, para que se ajuste a sus propias necesidades. Cuando cree este script por primera vez, asegurese de haber habilitado la parte que se reere a al acceso por medio de chat, para efecto de poder dar seguimiento al curso de la conexin y la resolucin de la misma.
Lnea 16: Establece el tiempo por defecto en el que se perder la conexin (en segundos). En este caso la conexin ser cortada de forma automtica, despus de 300 segundos de inactividad. Si no desea habilitar esta funcin establezca este valor en cero o bien utilice el comando en lnea -ddial. Lnea 17: Indica la direccin de la interfaz. La cadena que aparece como x.x.x.x., debe se cambiada por la direccin asignada por su PSI. La lnea que aparece como y.y.y.y., debe se substituida por la direcci IP especicada por su PSI, como servidor de salida o pasarela (gateway)(la maquina a la cual se va a conectar). Si su PSI no le ha indicado una direccin de este tipo, puede utilizar 10.0.0.2/0. Si usted necesita utilizar una direccin aleatoria, asegurese de crear el chero /etc/ppp/ppp.linkup, siguiendo las instrucciones de PPP y las direcciones de IP Dinmicas, para su llenado. Si esta lnea es omitida, ppp, no podr ejecutarse en el modo -auto.
162
Captulo 15. PPP y SLIP Lnea 18: Aade una ruta por omisin al servidor de salida de su PSI. La palabra especial HISADDR se reemplaza con la direccin del gateway indicado por su PSI, que esta en la lnea 9, de otra forma HISADDR no ser inicializado. Si no desea ejecutar ppp en modo -auto, esta lnea deber pasar al archivo ppp.linkup.
No hay necesidad de editar el archivo ppp.linkup si usted cuenta con una direccin IP esttica y se esta ejecutando ppp en modo -auto, en virtud de que para efecto de realizar la conexin sus mapas de ruteo debe estar correctas. De cualquier forma puede ser que usted desee ejecutar algun programa/comando, posterior a la conexin. Este es explicado con ms detalle posteriormente, cuando se vea el ejemplo de sendmail. Ejemplo de los archivos de conguracin, se pueden encontrar en el directorio; /usr/share/examples/ppp.
15.2.1.5.2. PPP y direcciones de IP Dinmicas (Variables) Si su proveedor de servicios, no le asigna una direccin de IP ja, ser necesario congurar a ppp, de tal forma que al momento de realizar la conexin, negocie tanto la direccin local, como la remota. Esto se lleva a cabo al adivinar una direccin IP y permitiendo a ppp que la establezca correctamente, usando el Protocolo de Conguracin de IP (IPCP), una vez que se ha conectado. La conguracin que debe tener el archivo ppp.conf, es la misma que la utilizada en PPP y direcciones de IP jas, salvo el siguiente cambio:
17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255
Una vez ms, no debe incluir el numero de lnea, este slo es una referencia. As mismo deber existir sangrado, de cuando menos 1 espacio. Lnea 17: El numero siguiente a la diagonal (/), es el numero de bits de la direccin en la cual ppp insistir en conectarse. Puede ser que usted desee utilizar numeros de IP que sean ms apropiados, para ajustar a sus necesiadades, pero el ejemplo descrito anteriormente siempre podr utilizarse. El ltimo argumento (0.0.0.0), le indica a PPP, que inicie las negociaciones, utilizando como direccin 0.0.0.0, en lugar de que utilice 10.0.0.1, lo cual es necesario con algunos proveedores. No utilice la direccin 0.0.0.0 como el primer argumento, para el comando set ifaddr, ya que impide que PPP congure de forma correcta el sistema, cuando se utiliza en modo -auto.
Si usted no esta ejecutando PPP en modo -auto, deber editar su archivo /etc/ppp/ppp.linkup. El archivo ppp.linkup, es utilizado una vez que se ha realizado la conexin. En este punto, ppp habr negociado una direccin de interfaz, y ser posible ahora, aadir las entradas para la las tablas de ruteo:
1 2 provider: add default HISADDR
Lnea 1: Al establecer (ppp) una conexin, buscar en ppp.linkup una entrada, de acuerdo a las siguientes reglas. Primero, tratar de encontrar una entrada que sea igual a la utilizada en el archivo ppp.conf. Si esto falla,
163
Captulo 15. PPP y SLIP buscar una IP con la direccin de nuestro gateway. Esta entrada es una etiqueta de tipo IP, de cuatro-octetos. Si aun despus de esto no se ha detectado la entrada correcta, buscar la entrada MYADDR. Lnea 2: Esta lnea le indica a ppp que aada una ruta por omisin, que este dirigida hacia HISADDR. HISADDR ser reemplazada, con la IP del gateway, como se negocio por IPCP. Para ver un detalle ms preciso de esto, puede consultar la entrada de pmdemand en los archivos de ejemplo /usr/share/examples/ppp/ppp.conf.sample as como /usr/share/examples/ppp/ppp.linkup.sample.
15.2.1.5.3. Recibiendo Llamadas Externas Cuando se congure ppp, para recibir llamadas externas, en una maquina conectada a un LAN (Red de Area Local), debe decidir si se va a permitir el envo de paquetes a la LAN. Si es as, debe asignar un numero de IP de su red local y utilizar el comando enable proxy en el archivo de conguracion /etc/ppp/ppp.conf. Tambin deber asegurarse que en su archivo /etc/rc.conf cuente con la lnea:
gateway_enable="YES"
15.2.1.5.3.1. Qu getty utilizar? El enlace Congurando FreeBSD para Servicios de Marcado provee de una buena descripci, sobre la conguracin de estos servicios, basado en getty(8). Una alternativa para el comando getty es mgetty (http://www.leo.org/~doering/mgetty/index.html), el cual es una versin ms inteligente de getty diseada para servicios de marcado telefonico. Una de las principales ventajas de mgetty es que, de hecho platica con los modems, esto es, signicativo, ya que si el puerto esta desactivado en su /etc/ttys el modem no responder el llamado. Las ltimas versiones de mgetty (de la 0.99beta y sucesivas), tambin cuentan con soporte para la deteccin automtica de llamados de PPP, permitiendo el acceso a servidores de una manera ms sencilla (sin uso de tanto scripts). Puede referirse a Mgetty y AutoPPP para ms informacin con respecto al comando mgetty.
15.2.1.5.3.2. Permisos de PPP El comando ppp normalmente debe ser ejecutado por root (superusuario). Si de cualquier forma, usted desea permitir que ppp pueda ser ejecutado en modo servidor, por un usuario regular, como se describe a continuacin, deber otorgar los permisos necesarios a ese usuario al aadirlo al grupo network, en el chero /etc/groups. Tambin ser necesario darle acceso a una o ms partes del archivo de conguracin, haciendo uso del comando
allow, como se ve a continuacin: allow users fred mary
Si el comando es utilizado en la seccin default, esto le dar a el(los) usuario(s) especicado(s), acceso a todo.
164
Captulo 15. PPP y SLIP 15.2.1.5.3.3. Shells de PPP para Usuarios de IP Dinmica Cree un chero llamado: /etc/ppp/ppp-shell y que contenga lo siguiente:
#!/bin/sh IDENT=echo $0 | sed -e s/^.*-\(.*\)$/\1/ CALLEDAS="$IDENT" TTY=tty if [ x$IDENT = xdialup ]; then IDENT=basename $TTY fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT
Este script deber ser ejecutable. Ahora cree un enlce simblico llamado ppp-dialup a este script, utilizando los siguientes comandos:
# ln -s ppp-shell /etc/ppp/ppp-dialup
Deber utilizar este script como shell para todos los usuarios que realicen conexin. Este es un ejemplo del chero /etc/password para un usuario con acceso a PPP, con nombre de usuario pchilds (recuerde no editar directamente el chero password, utilice vipw).
pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup
Cree un directorio llamado /home/ppp que contenga los siguentes archivos de 0 bytes:
-r--r--r--r--r--r-1 root 1 root wheel wheel 0 May 27 02:23 .hushlogin 0 May 27 02:22 .rhosts
15.2.1.5.3.4. Shells de PPP para Usuarios de IP Esttica Cree el chero ppp-shell al igual que el mencionado con anterioridad, y por cada cuenta donde se tenga asignada una IP esttica, cree un enlace simblico al chero ppp-shell. Por ejemplo, si usted cuenta con tres usuarios que utilicen este servicio; fred, sam y mary, los cuales redirecciona a una red de clase C, habria que hacer lo siguiente:
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary
Cada uno de los usuarios sealados, debern de contar con el enlace a su shell-script como se indic (por ejemplo, el usuario mary, debe contar con su enlace al chero /etc/ppp/ppp-mary).
165
Captulo 15. PPP y SLIP 15.2.1.5.3.5. Congurando ppp.conf para Usuarios de IP-Dinmica El archivo /etc/ppp/ppp.conf deber contener algo similar a lo siguiente:
default: set debug phase lcp chat set timeout 0 ttyd0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyd1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy
La seccin default: es cargada para cada sesin. Para cada lnea que exista y habilite el marcado, en el chero /etc/ttys, se deber crear una entrada similar a la lnea ttyd0: mencionada arriba. Cada lnea debera contar con su propia direccin IP, de sus direcciones IP disponibles para asignar dinmicamente.
15.2.1.5.3.6. Congurando ppp.conf para Usuarios de IP Esttica Junto con el contenido del chero de ejemplo /usr/share/examples/ppp/ppp.conf mencionado anteriormente, deber agregar una seccin para cada usuario asignado estticamente. Continuaremos con nuestro ejemplo con los usuarios fred, sam y mary.
fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255
El archivo /etc/ppp/ppp.linkup deber de contener tambin informacin del ruteo, para cada IP esttica, si es necesario. Las lneas a continuacin aadirn una ruta a la direccin 203.14.101.0 de clase C, por medio del ppp link del cliente.
fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR
166
Captulo 15. PPP y SLIP 15.2.1.5.4. Algo ms de mgetty , AutoPPP, y Extensiones MS 15.2.1.5.4.1. mgetty y AutoPPP Congurando y compilando mgetty con la opcin AUTO_PPP habilitada, permite a mgetty detectar la fase LCP de conexiones PPP y automticamente enviarlo a un shel de ppp. Aun con esto, y debido a que no se ingresa el nombre de usuario y contrasea, es necesario autnticarse por medio de PAP o CHAP. Esta seccin asume que el usuaio ha congurado, compilado e instalado correctamente una versin de mgetty, con la opcin Auto_PPP (v0.99beta o posterior). Asegurese de que su chero /usr/local/etc/mgetty+sendfax/login.conf contiene la siguiente lnea en l:
/AutoPPP/ /etc/ppp/ppp-pap-dialup
Esto le indicar a mgetty que ejecute el script ppp-pap-dialup, para efecto de detectar conexiones de tipo PPP. Cree un chero llamado /etc/ppp/ppp-pap-dialup que contenga las siguientes lneas (el chero deber ser ejecutable):
#!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT
Para cada lnea de marcado habilitada en /etc/ttys, cree la entrada correspondiente en /etc/ppp/ppp.conf. Esto co-existir paccamente con las deniciaones que se hayan hecho, de acuerdo a lo mostrado en la parte de arriba.
pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy
Cada usuario que ingrese al sistema utilizando este metodo, deber de contar con su clave de usuario, as como su contrasea, en el archivo /etc/ppp/ppp.secret, o bien agrege la siguiente opcin, para efecto de que se pueda realizar la autenticacin por medio de PAP, directamente del chero /etc/password.
enable passwdauth
Si desea asignar una direccin IP ja a algunos usuarios, puede especicar el nmero como un tercer argumento en el chero /etc/ppp/ppp.secrets. Vea el archivo /usr/share/examples/ppp/ppp.secret.sample para obtener ejemplos ms detallados de esto.
15.2.1.5.4.2. Extensiones de MS Es posible congurar PPP, para efecto de que brinde a DNS y a NetBIOS, direcciones de servidores de nombres de forma automtica. Para efecto de habilitar estas extensiones con PPP versin 1.x, las siguientes lneas debern aadirse a la seccin relevante de /etc/ppp/ppp.conf.
enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5
167
Esto le indicar a los clientes, las direcciones del servidor primario y secundario y el servidor-host para NetBIOS. Si la lnea set dns, es omitida en versiones 2 y posteriores, PPP utilizar los valores que encuentre en /etc/resolv.conf.
15.2.1.5.5. Autenticacin por medio de PAP y CHAP Algunos proveedores de internet tienen su sistema congurado para que cada usuario al conecatrse sean autenticados por medio de PAP o CHAP. Si este es el caso, al momento de realizar la conexion, no aparecer un login:, sino que comenzar a comunicarse PPP inmediatamente. El metodo PAP es menos seguro que CHAP, pero la seguridad normalmente no se toma mucho en cuenta en este tipo de conexiones, en funcion de que al enviarse la informacin de contrasea en texto plano, por medio de una lnea serial, no deja mucho espacio para que los crackers husmeen. Haciendo referencia a lo que vimos de PPP y Direcciones de IP Fijas o bien PPP y Direcciones de IP Dinmicas, habra que aplicar los siguientes cambios:
7 ... 12 13 set login set authname MiNombreDeUsuario set authkey MiContrasea
Lnea 7: Su PSI normalmente requerir que usted ingrese al sistema, cuando se utiliza PAP o CHAP. Por esta razn debemos deshabilitar la lnea que corresponde a set login. Lnea 12: Esta lnea especifca a PAP/CHAP su nombre de usuario. Usted deber cambiar el valor a quedar el nombre correcto en el campo; MiNombreDeUsuario. Lnea 13: Esta lnea especifca su contrasea de PAP/CHAP. Es necesario que usted cambie el valor a quedar el dato correcto, en el campo; MiContrasea. Quizs sea recomendable que aada una lnea a quedar:
15 accept PAP
o
15 accept CHAP
la intencin de esto es para hacerlo obvio, aunque en realidad PAP y CHAP son aceptadas por omisin.
168
Captulo 15. PPP y SLIP 15.2.1.5.6. Cambiando la conguracin de ppp sobre la marcha (al vuelo) Es posible hablar con el programa ppp mientras se esta ejecutando en segundo plano, pero slo si se ha habilitado un puerto de diagnstico. Para hacer esto, aada lo siguiente a su conguracin:
set server /var/run/ppp-tun%d DiagnosticPassword 0177
Esto le indicar a PPP que preste atencin al socket del dominio-Unix, solicitando a los usuarios su contrasea, antes de permitir el acceso. La variable %d deber ser reemplazada por el numero de dispositivo tun que este utilizando (ej. tun0). Una vez que se a congurado el socket, se puede utilizar pppctl(8) en scripts que deseen manipular el programa.
15.2.1.6. Conguracin Final del Sistema Ahora usted cuenta con un ppp congurado, pero es necesario hacer algunas cosas, antes de que este disponible para trabajar. Todas ellas giran entorno a la edicin del chero /etc/rc.conf. En primer lugar es importante que se asegure que ha asignado un nombre a su maquina. Esto se hace asignandolo en la lnea de hostname=, por ejemplo:
hostname="foo.ejemplo.com"
Si su Proveedor de Servicios de Internet (PSI), le ha provisto de una direccin ja y un nombre de host, es recomendable que utilice este como su hostname. Localice la lnea que se reera a sus dispositivos de red, la cual es network_interfaces. Si desea congurar su sistema para marcar a su PSI a peticin, asegurese de que el dispositivo tun0 este en la lista, de otra forma eliminelo.
network_interfaces="lo0 tun0" ifconfig_tun0=
Nota: La variable ifconfig_tun0 debe permanecer en blanco (vacia), y deber crearse un chero llamado /etc/start_if.tun0 que contenga la siguiente lnea:
ppp -auto MiSistema
Este script se ejecuta cuando se esta congurando la red, inicializando el demonio de ppp de modo automtico. Si usted cuenta con una LAN (red de rea local), de la cual esta maquina sea la pasarela (gateway), es tambien recomendable que utilice la opcin -alias. Referirse a la pgina de ayuda (man) para mayores detalles.
Es importante que el demonio routed no se inicialice por default, en virtud de que routed tiende a eliminar las variables creadas por ppp. Probablemente valga la pena asegurarse de que la lnea sendmail_flags, no incluya la opcin -q, ya que de ser as sendmail intentar localizar los parmetros de la red de vex en cuando, ocasionando que realice llamados al exterior. Puede intentar esto:
sendmail_flags="-bd"
169
Captulo 15. PPP y SLIP La parte negativa de esta conifguracin es que tiene que forzar a sendmail a re-examinar los llamados del servidor de correo, cada vez que ppp realiza una conexin, con el siguiente comando:
# /usr/sbin/sendmail -q
Puede utilizar el comando !bg en el chero ppp.linkup para hacer esto de manera automtica:
1 2 3 4 provider: delete ALL add 0 0 HISADDR !bg sendmail -bd -q30m
Si usted no desea hacer esto, es posible establecer un dlter (ltro), para bloquear el trco al servidor de salida de correo (SMTP). Favor de referirse a los archivos de ejemplos para mayor detalle al respecto. Ahora lo nico que queda pendiente de hacerse es reiniciar el equipo. Una vez reiniciado el equipo, puede teclear:
# ppp
y posteriormente dial proveedor para iniciar la sesin, o bien si desea que ppp inicie la sesin automticamente, cuando haya una peticin de salida (y no haya creado el chero start_if.tun0), puede teclear:
# ppp -auto proveedor
15.2.1.7. Summario A manera de recapitulacin, podemos decir que para congurar ppp por primera ocasin, debemos: Por parte del Cliente: 1. 2. 3. 4. 5. 6. Asegurese de que existe el dispositivo tun dentro de su kernel. Asegurses de que el dispositivo tunX , se encuentra disponible, bajo el directorio /dev. Cree una entrada en su chero /etc/ppp/ppp.conf. Con el chero de ejemplo pmdemand debe ser suciente para la mayoria de proveedores. Si cuenta con una direccin de IP dinmica, cree una entrada en el chero /etc/ppp/ppp.linkup . Actualice su chero /etc/rc.conf. Cree un archivo script llamado start_if.tun0 si requiere servicio de conexin a solicitud.
Por parte del Servidor: 1. 2. 3. 4. 5. 6. Asegurese de que dentro de su kernel exista el dispositivo tun. Asegurses de que el dispositivo tunX , se encuentra disponible, bajo el directorio /dev. Cree una entrada en el chero /etc/passwd (usando el programa vipw(8)). Cree un perl en el directorio home de este usuario, que ejecute ppp -direct direct-server o algo similar. Cree una entrada en el chero /etc/ppp/ppp.conf. El chero de ejemplo direct-server debe ser suciente para darse una idea. Cree una entrada en el chero /etc/ppp/ppp.linkup.
170
1. Como un cliente cuando desea conectar su maquina al mundo exterior utilizando PPP, por medio de una conexin serial o bien una lnea de modem. 2. como un servidor cuando su maquina esta conectada a una red y es utilizada para que otras maquinas se conecten utilizando ppp. En ambos casos, ser necesario congurar un chero de opciones ( /etc/ppp/options o bien ~/.ppprc si se cuenta con ms de un usuario que utilizar ppp en la misma maquina. Tambin deber de contar con un software para hacer la conexin por medio de mdem (de preferencia kermit), de manera que pueda hacer la conexin con un host remoto.
defaultroute
Para conectarse:
171
Captulo 15. PPP y SLIP 1. 2. 3. Realice el llamado al host remoto, utilizando kermit (o cualquier otra aplicacin de este tipo), ingrese su nombre de usuario y contrasea (o cualquier info que sea necesaria para habilitar PPP en el host remoto). Salga de kermit (sin colgar la lnea). Ingrese lo siguiente:
# /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200
Asegurese de utilizar el dispositivo y la velocidad adecuados. Ahora su computadora esta conectada por medio de PPP. Si la conexin falla, puede aadir la opcin debug en el chero /etc/ppp/options de tal forma que pueda vericar la que esta ocurriendo y pueda resolver el problema. El siguiente script; /etc/ppp/pppup realizar los 3 pasos de forma automtica:
#!/bin/sh ps ax |grep pppd |grep -v grep pid=ps ax |grep pppd |grep -v grep|awk {print $1;} if [ "X${pid}" != "X" ] ; then echo killing pppd, PID= ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=ps ax |grep kermit |grep -v grep|awk {print $1;} if [ "X${pid}" != "X" ] ; then echo killing kermit, PID= ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200
El chero /etc/ppp/kermit.dial es un script de kermit, uqe realiza el marcado y negocia la autorizacin necesaria con el host remoto (un ejemplo de este script se encuentra al nal de este documento). Utilice el siguiente script, llamado /etc/ppp/pppdown para desconectar la lnea PPP:
#!/bin/sh pid=ps ax |grep pppd |grep -v grep|awk {print $1;} if [ X${pid} != "X" ] ; then echo killing pppd, PID= ${pid} kill -TERM ${pid} fi ps ax |grep kermit |grep -v grep pid=ps ax |grep kermit |grep -v grep|awk {print $1;} if [ "X${pid}" != "X" ] ; then echo killing kermit, PID= ${pid} kill -9 ${pid} fi
172
Verique que su PPP aun se esta ejecutando, por medio de /usr/etc/ppp/ppptest, que deber verse algo similar a esto:
#!/bin/sh pid=ps ax| grep pppd |grep -v grep|awk {print $1;} if [ X${pid} != "X" ] ; then echo pppd running: PID= ${pid-NONE} else echo No pppd running. fi set -x netstat -n -I ppp0 ifconfig ppp0
He aqui un metodo alterno, donde se utiliza chat en lugar de utilizar kermit. Los siguientes dos cheros deben ser suciente, para realizar una conexin por medio de pppd.
/dev/cuaa1 115200 crtscts # habilita el control de flujo por medio de hardware modem # lnea de control del mdem connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # el servidor remoto debe asignar la direccin IP. # si el servidor no asigna una IP durante la negociacin # IPCP , remueva esta lnea y espere por los passive # paquetes LCP domain <your.domain> # aqui va su dominio
173
: # escriba la IP del host remoto aqui # si no ha especificado la opcin noipdefault # cambie esta lnea a quedar <local_ip>:<remote_ip> defaultroute # escriba esto, si desea que el servidor PPP sea su # router por default /etc/ppp/login.chat.script: Nota: Lo siguiente debe ir en una sola lnea.
ABORT BUSY ABORT NO CARRIER "" AT OK ATDT<numero.de.telefono> CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <nombre.usuario> TIMEOUT 5 sword: <contrasea>
Una vez que estos cheros han sido modicados correctamente e instalados, todo lo que necesita es ejecutar el comando pppd, algo como:
# pppd
El siguiengte script, llamado /etc/ppp/pppserv habilitar pppd, para que actue como servidor:
#!/bin/sh ps ax |grep pppd |grep -v grep pid=ps ax |grep pppd |grep -v grep|awk {print $1;} if [ "X${pid}" != "X" ] ; then echo killing pppd, PID= ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=ps ax |grep kermit |grep -v grep|awk {print $1;} if [ "X${pid}" != "X" ] ; then echo killing kermit, PID= ${pid}
174
El siguiente script de kermit (/etc/ppp/kermit.ans) habilita/deshabilita el modo de autorespuesta en su mdem. Y debe verse algo similar a lo siguiente:
set set set set set set set set set set set pau out inp out inp line /dev/tty01 speed 19200 file type binary file names literal win 8 rec pack 1024 send pack 1024 block 3 term bytesize 8 command bytesize 8 flow none 1 +++ 5 OK ATH0\13 5 OK
175
Un script llamado /etc/ppp/kermit.dial es utilizado para llamar y autenticarse en un host remoto. Es necesario que edite este chero, de acuerdo a sus necesidades. Escriba su nombre de usuario (login) y contrasea (password) en este chero, tambin ser necesario cambiar su metodo de conexin, de acuerdo a lo que se ajuste a sus necesidades.
; ; ingrese el dispositivo que esta ; set line /dev/tty01 ; ; escriba la velocidad del mdem: ; set speed 19200 set file type binary ; set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; set dial display on ; set input echo on set input timeout proceed set input case ignore def \%x 0 goto slhup
apuntando a su mdem:
:slcmd ; cambio a modo de comando echo Put the modem in command mode. clear ; Limpieza del buffer de entrada pause 1 output +++ input 1 OK\13\10 ; esperar para OK if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; si el modem no responde Ok, intentar de nuevo :slhup ; colgar el telfono
176
; si no hay un OK como respuesta, poner el modem en modo de comando ; marcar el numero telefonico
:slloop increment \%x ; Conteo de segundos clear ; Limpieza del buffer de entrada output \13 ; ; escriba su login prompt aqui: ; input 1 {Username: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; intentar 10 veces para obtener un login else goto slhup ; colgar y empezar de nuevo si a la decima falla :sluid ; ; escriba su nombre de usuario:
177
local variables: mode: csh comment-start: "; " comment-start-skip: "; " end:
178
No olvide cambiar x11 por el dispositivo Ethernet que este utilizando. No olvide cambiar ISP por el nombre del perl que le fu descrito anteriormente (por lo general el nombre de su Proveedor de Servicio de Internet). Para informacin adicional consulte:
179
o bien pude hacerse desde la lnea de comandos, para un efecto inmediato, por medio del comando sysctl -w net.graph.nonstandard_pppoe=1. Desafortunadamente y dado que esto implica una conguracin general del sistema, por lo que no es posible comunicarnos con un dispositivo cliente servidor que utilice PPPoE y con un mdem casero 3Com ADSL, al mismo tiempo.
180
set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set set set set iface iface iface iface route default disable on-demand enable proxy-arp idle 0
open
El nombre de usuario para autenticar con su proveedor. La contrasea para autenticar con su proveedor.
El chero mpd.links contiene informacin a cerca de la, o las conecciones, que desee establecer. Un ejemplo de mpd.links y que sea acompaante del ejemplo anterior, se muestra a continuacin.
adsl: set set set set set
type pptp mode active enable originate incoming outcall self 10.0.0.140 peer 10.0.0.138
Usar mpd es la forma recomendada para conectarse con servicios ADSL con FreeBSD.
181
Captulo 15. PPP y SLIP muestra a continuacin. Para mayor informacin sobre las opciones de ppp.conf, consulte la pgina de ayuda de ppp; ppp(8).
adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname usuario set authkey contrasea set ifaddr 0 0 add default HISADDR
Esto abrir una sesion por medio de PPP con su ruteador DSL. Los mdems Ethernet DSL cuentan con una direccin IP de LAN precongurada a la cual se puede conectar. En el caso del Alcatel Speedtouch, esta direccin es 10.0.0.138. La documentacin de su equipo debe indicarle que direccin utiliza. Para abrir el tunel e iniciar la sesin ppp, ejecute el siguiente comando.
# pptp direccin proveedor
Sugerencia: Puede aadir un smbolo de ampersand (&) al nal de este comando, ya que pptp no retorna al shell por default.
Un dispositivo virtual tun ser creado, para interactuar con los procesos de pptp y ppp. Una vez que regrese al shell puede examinar la conexin por medio del siguiente comando.
% ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918
Si no le es posible conectarse, verique la conguracin de su ruteador, que normalmente es accesible por medio de telnet o de su navegador web. Si aun no puede conectarse examine la salida que da el comando pptp y el contenido del chero de registro (log) de ppp; /var/log/ppp.log.
182
Esta opcin esta incluida en el archivo del kernel GENERIC, as que no debe haber problema, claro esta, a menos que lo haya borrado intencionalmente. 15.6.1.1. Cosas Que Tiene Que Hacer Solo Una Vez 1. Aada el nombre de su maquina, gateway, servidores de nombre a su chero /etc/hosts. Este es un ejemplo de mi chero:
127.0.0.1 136.152.64.181 136.152.64.1 128.32.136.9 128.32.136.12 localhost loghost water.CS.Example.EDU water.CS water inr-3.CS.Example.EDU inr-3 slip-gateway ns1.Example.EDU ns1 ns2.Example.EDU ns2
2. 3.
Asegurese de que cuenta con la opcin hosts antes de la opcin bind, en su chero /etc/host.conf. De lo contrario pueden ocurrir cosas graciosas en su sistema. Edite el chero /etc/rc.conf. 1. Especique su nombre host al editar la lnea que dice:
hostname=minombre.mi.dominio
El nombre completo de su sistema para internet, debe ser escrito en este punto.
2. Aada el dispositivo sl0 a la lista de dispositivos de red, al cambiar la lnea que dice:
network_interfaces="lo0"
a quedar:
183
a quedar:
defaultrouter=slip-gateway
4.
Edite su chero /etc/resolv.conf (si no existe debe crearlo), a que contenga lo siguiente:
domain CS.Ejemplo.EDU nameserver 128.32.136.9 nameserver 128.32.136.12
Como puede ver, lo anterior dene el nombre de host, de su servidor de nombres. Claro esta, el nombre de dominio y las direcciones IP, dependen de su sistema especco. 5. 6. Establezca la contrasea del superusuario root y de su smil toor (y de cualquier otro usuario que aun no cuente con la misma). Reinicie su sistema y asegurese que cuenta con el nombre de host (hostname) correcto.
15.6.1.2. Haciendo una Conexin con SLIP 1. Marque el nmero, teclee en el signo de comando slip, ingrese el nombre y la contrasea. Lo que se requiere ingresar, depende de su sistema. Si utiliza kermit, puede utilizar un script similar al siguiente:
# kermit setup set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # El siguiente macro se encarga de llamar e ingresar al sistema define slip dial 643-9600, input 10 =>, if failure stop, output slip\x0d, input 10 Username:, if failure stop, output silvia\x0d, input 10 Password:, if failure stop, output ***\x0d, echo \x0aCONNECTED\x0a
Claro esta, que debe cambiar el nombre y contrase a quedar de acuerdo a sus necesidades. Despus de hacer esto, puede simplemente teclear slip en el smbolo de sistema (prompt) de kermit, para realizar la conexin.
Nota: El dejar su contrasea en texto plano, en cualquier parte del sistema, generalmente es una mala idea. Hgalo bajo su propio riesgo.
184
2.
Dej a kermit en ese punto trabajando (puede suspenderlo tecleando Ctrl-z) y como root, teclee:
# slattach -h -c -s 115200 /dev/modem
Si puede hacer ping a cualquier host que se encuentre del otro lado del ruteador, usted esta conectado!. Si esto no funciona, puede intentar como argumento del comando slattach, la opcin -a en lugar de utilizar la optcin -c.
esto terminara slattach. Recuerde que para hacer esto, usted debe estar rmado como superusuario (root). Posteriormente dirijase a kermit (puede hacer esto con fg si lo envio a segundo plano) y salga (tecleando q). La pgina de ayuda de slattach indica que debe utilizar el comando ifconfig sl0 down, para marcar como terminado el uso del dispositivo, pero tal parece que esto no hace una gran diferencia para mi. ( ifconfig sl0 da el mismo resultado.) En algunas ocasiones, puede que su mdem se niegue a cortar la comunicacin (el mio lo hace a veces). Si ese es el caso, simplemente inicie de nuevo kermit y vuelva a salir. Normalmente en el segundo intento hay exito.
15.6.1.4. Problemas Comunes Si esto no funciona, sientase libre de preguntarme. Lo siguiente es una recapitulacin de los problemas que ms comunmente se presentan:
El no utilizar la opcin -c o -a con el comando slattach (Esto debiera se fatal, pero algunos usuarios han reportado que esto ha solucionado sus problemas. Usar la opcin s10 en vez de usar la opcin sl0 (puede ser difcil ver la diferencia con algunos tipos de letras). Intente ifconfig sl0 para visualizar el estatus de sus dispositivos de red. Por ejemplo, puede ser que obtenga algo similiar a lo siguiente:
# ifconfig sl0
Tambin el comando netstat -r le mostrar la tabla de ruteo, en caso de que obtenga el mensaje no route to te host, al hacer ping. Un ejemplo de esto se muestra a continuacin:
# netstat -r
Gateway
Flags
Refs
Use
IfaceMTU
Rtt
Netmasks:
185
Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG localhost.Exampl localhost.Example. UH inr-3.Example.ED water.CS.Example.E UH water.CS.Example localhost.Example. UGH (root node)
0.438 0.438
Esto es despus de que el sistema ha estado conectado por un tiempo. Los numeros pueden variar en su sistema.
15.6.2.2. Echemos un Vistazo En su conguracin tpica, el desarrollo de FreeBSD como un servidor SLIP, funciona de la siguiente manera: un Usuario SLIP, se conecta del Servidor SLIP FreeBSD e ingresa al sistema con una identicacin especial, que utiliza /usr/sbin/sliplogin como shell del usuario. El programa sliplogin busca en el chero /etc/sliphome/slip.hosts la lnea que haya sido creada especialmente para el usuario, conecta la lnea serial a una interfaz SLIP disponible y posteriormente ejecuta el script /etc/sliphome/slip.login, para congurar la interfaz SLIP.
186
Captulo 15. PPP y SLIP 15.6.2.2.1. Un Ejemplo de Acceso al Servidor SLIP Por ejemplo si la clave de acceso de un usuario SLIP fuese Shelmerg, la entrada del usuario Shelmerg, en el chero /etc/master.passwd se vera algo similar a lo siguiente:
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin
Cuando Shelmerg accese al sistema, el comando sliplogin, buscar en el chero /etc/sliphome/slip.hosts, una lnea, en la cual el ID (identicacin) del usuario coincida, por ejemplo, puede ser que en el chero /etc/sliphome/slip.hosts exista una lnea simliar a la siguiente:
Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
El comando sliplogin encontrar la lnea que coincida, enganchar la lnea serial a cualquier interfaz SLIP disponible y posteriormente ejecutar /etc/sliphome/slip.login de manera similar a:
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
Si todo marcha bien, /etc/sliphome/slip.login crear una conguracin, por medio de ifconfig, para la interfaz SLIP, a la cual sliplogin se ha adjuntado (la interfaz slip 0, que era el primer parmetro dado en la lista de slip.login), para establecer la direccin local IP (dc-slip), la interfaz de la direcin IP Remota (sl-helmer), la submascara de red para la interfaz SLIP (0xfffffc00) y cualquier otra opcin adicional (autocomp). Si algo no va del todo bien, normalmente sliplogin guarda bastante informacin para depurar, por medio del demonio (daemon) syslog, que usualmente guarda dicha infomracin en /var/log/messages (vea la pgina de ayuda syslogd(8) as como syslog.conf(5) y quizas el chero /etc/syslog.conf, para ver que es lo que syslogd esta almacenando y donde es que lo almacena. OK, basta de ejemplos entremos de lleno en la conguracin del sistema.
15.6.2.3. Conguracin del Kernel El kernel de FreeBSD, por omisin, cuenta con 2 dispositivos SLIP denidos ( sl0 y sl1); usted puede utilizar netstat -i, para vericar si estos dispositivos se encuentran en el kernel de su sistema. Un ejemplo del resultado de netstat -i:
Name ed0 ed0 lo0 lo0 sl0* sl1* Mtu 1500 1500 65535 65535 296 296 Network Address <Link>0.0.c0.2c.5f.4a 138.247.224 ivory <Link> loop localhost <Link> <Link> Ipkts Ierrs 291311 0 291311 0 79 0 79 0 0 0 0 0 Opkts Oerrs Coll 174209 0 133 174209 0 133 79 0 0 79 0 0 0 0 0 0 0 0
En este ejemplo vemos que existen dos dispositivos SLIP en el kernel, que son; sl0 y sl1 (el asterisco que aparece despus de sl0 y sl1 indica que los dispositivos no estan trabajando.) Aun cuando el kernel cuente con los dispositivos, por omisin el kernel de FreeBSD, no viene congurado para enviar paquetes (de hecho su sistema FreeBSD no trabajara como ruteador, por default) esto en base a los requerimientos para Internet, establecidos por los RFCs ( vea 1009 [Requerimentos para Pasarelas (Gateway) en Internet], 1122 [Requerimientos para hosts de Internet Capas de comunicacin] y quizs 1127 [RFC sobre Una Perspectiva de los Requerimientos de Hosts]). Si usted desea que su servidor SLIP sobre FreeBSD, opere como un
187
Captulo 15. PPP y SLIP ruteador, ser necesario que edite el chero /etc/rc.conf y cambie la opcin gateway_enable, a quedar YES, esto habilitar esta funcin. Ser necesario que reinicie su sistema, para efecto de que estos cambios surtan efecto. Al vericar su chero de conguracin del kernel (/sys/i386/conf/GENERIC), podr notar que cerca del nal, hay una lnea como la siguiente:
pseudo-device sl 2
Esta lnea es la que dene el numero de dispositivos SLIP disponibles en el kernel; el numero al nal de la lnea es el numero mximo de conecciones SLIP que puede manejar el servidor simultaneamente. Para ayuda con relacin a la conguracin y compilacin del kernel en su sistema FreeBSD, por favor reerase Captulo 8 al apartado correspondiente.
15.6.2.4. Conguracin de Sliplogin Como se menciono anteriormente, existen tres cheros en el directorio /etc/sliphome, que son parte de la conguracin de /usr/sbin/sliplogin (vea la pagina de ayuda sliplogin(8) de para ver la ayuda del comando sliplogin): slip.hosts, que es el chero que dene a los usuarios SLIP, as como sus direcciones IP correspondientes; slip.login, que normalmente es utilizado para congurar la interfaz de SLIP; y (opcionalmente) slip.logout, que hace lo opuesto a slip.login, cuando la conexin serial ha terminado. 15.6.2.4.1. Conguraci de slip.hosts El chero /etc/sliphome/slip.hosts contiene lneas, que al menos cuentan con cuatro partes, separadas por espacios en blanco:
Identicador (nombre) del usuario SLIP Direccin Local (local para el servidor SLIP) de la liga a SLIP Direccin Remota de la liga a SLIP Mascara de red
Las direcciones local y remota, pueden ser nombres del host (la resolucin de los mismos, es llevada a cabo, por medio de /etc/hosts o por el servidor de nombres de dominio (DNS), dependiendo de lo que haya especicado en el chero /etc/host.conf), y la mascara de red puede ser un nombre, que puede ser resuelto revisando /etc/networks. En un sistema de ejemplo, el chero /etc/sliphome/slip.hosts, puede verse as:
# # login local-addr # # Shelmerg dc-slip
remote-addr
mask
sl-helmerg
0xfffffc00
compress
188
deshabilitar los paquetes ICMP (de tal forma que cualquier paquete enviado por ping sera rechazado, en lugar de ocupar de su ancho de banda).
La eleccin sobre la direccin local y remota depende si usted va a utilizar una conexin TCP/IP dedicada o bien si va a utilizar una conexin por medio de proxy ARP en su servidor SLIP (no es correcto proxy ARP, pero es la terminologa utilizada en esta seccin para describirlo). Si usted no esta seguro que metodo manejar o como asignar la direccin IP, por favor reerase a alguno de los libros sobre TCP/IP, que se mencionan en los Prerequisitos de SLIP (Seccin 15.6.2.1) y/o consulte al administrador de IP de su red. Si usted piensa subnetear para los diferentes clientes SLIP, ser necesario que la direccin de la subred (subnet), salga de la direccin IP que tenga asignada su red, y el numero de cada cliente, del numero que asigne a su subred. Posteriormente puede que sea necesario, o bien congurar una ruta esttica a la subred SLIP, por medio de su servidor SLIP en su ruteador ms cercano por IP. De otra forma, si usted piensa utilizar un metodo proxy ARP, ser necesario que a sus clientes SLIP, se les asigne una direccin IP, que se encuentre dentro del rango que este utilizando para su subred Ethernet, y tambi ser necesario que haga algunos ajustes en los cheros script /etc/sliphome/slip.login y en /etc/sliphome/slip.logout, para que usen arp(8), para que maneje la tabla ARP del servidor SLIP y llamados del proxy-ARP.
# # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6
This slip.login le merely runs ifconfig for the appropriate SLIP interface with the local and remote addresses and network mask of the SLIP interface. If you have decided to use the proxy ARP method (instead of using a separate subnet for your SLIP clients), your /etc/sliphome/slip.login le will need to look something like this:
#!/bin/sh # # @(#)slip.login
# # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args
189
La lnea adicional, arp -s $5 00:11:22:33:44:55 pub del script slip.login, crea una entrada ARP en la tabla del servidor SLIP. Esta entrada le indica al servidor SLIP que debe responder con la direccin MAC de su dispositivo Ethernet, cuando cualquier otro nodo IP en la red, solicite informacin a la IP del cliente SLIP. Al tomar en cuenta el ejemplo anterior, es importante que sustituya la direccin Ethernet MAC (00:11:22:33:44:55), con la direccin que corresponde a su tarjeta de red, o denitivamente su proxy ARP no va a funcionar!. Para efecto de conocer cual es la direccin MAC del dispositivo Ethernet (tarjeta de red), de su servidor SLIP, puede ejecutar el comando netstat -i, el cual tendr como resultado algo similar a lo siguiente:
ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
Esto indica que la direccin MAC de su dispositivo Ethernet, en este sistema es 00:02:c1:28:5f:4a los puntos que aparecen en la salida del comando netstat -i deben cambiarse por dos puntos, as mismo deber de anteponerse un cero, a cada dgito hexadecimal que aparezca slo (no en pares), de tal forma que convirtamos la direccin en lo que arp(8) requiere para trabajar; vea la pgina de ayuda arp(8), para ver informacin completa sobre su uso.
Nota: Recuerde que cuando cree los cheros /etc/sliphome/slip.login y /etc/sliphome/slip.logout, deben contar con permisos de ejecucin (chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), de otra forma estos scripts no podrn llevar a cabo su funcin.
15.6.2.4.3. Conguracin de slip.logout El chero /etc/sliphome/slip.logout no es indispensable (a menos que vaya a utilizar proxy ARP), pero si aun as decide crearlo, el siguiente es un ejemplo bsico del script slip.logout :
#!/bin/sh # # slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down
Si usted esta utilizando proxy ARP, es recomendable que le indique a /etc/sliphome/slip.logout, que desea eliminar la entrada ARP, para el cliente SLIP:
#!/bin/sh # # @(#)slip.logout
190
El comando arp -d $5, elimina la entrada ARP, que slip.login de proxy ARP aadi al cliente SLIP al ingresar al sistema. Para esta ms seguros: asegurese de que el chero /etc/sliphome/slip.logout cuenta con los permisos adecuados para su ejecucin, una vez que lo ha creado (ej. chmod 755 /etc/sliphome/slip.logout) .
15.6.2.5. Consideraciones sobre el Enrutamiento Si usted no esta utilizando el metodo proxy ARP, para efecto de rutear los paquetes entre sus clientes SLIP y el resto de la red (y quizs Internet), deber de hacer una de las siguientes dos acciones, o bien aadir direcciones estticas, a su(s) ruteador(es) ms cercanos, para que se reenvien los paquetes de la subred de sus clientes SLIP, por medio de su servidor SLIP, o bien tendr que instalar y congurar gated en su servidor SLIP (que corre FreeBSD!), de tal forma que le indique a su(s) ruteador(es), por medio del protocolo correcto, a cerca de su subred SLIP. 15.6.2.5.1. Direcciones de Enrutamiento Estticas Aadir direcciones estticas de enrutamiento puede ser un problema (o imposible si usted no cuenta con la autoridad para hacerlo...). Si usted cuenta con una red de ruteo-mltiple en su organizacin, algunos ruteadores, tales como los fabricados por Cisco y Proteon, puede ser que no sea suciente con el hecho de congurar las rutas estticas de su subred SLIP, sino que sea necesario indicar que rutas utilizar para informar a cerca de otras rutas, as que algo de experiencia as como determinacin para la resolucin de problemas sern necesarias para poner la ruta basada-enruteo-esttico a trabajar.
15.6.2.5.2. Ejecutando gated Una alternativa para los dolores de cabeza que pueden dar las redes con ruteo esttico, es intalar gated en su servidor SLIP bajo FreeBSD y congurarlo, para que utilice los protocolos de ruteo apropiados (RIP/OSPF/BGP/EGP) para informar a otros ruteadores, a cerca de su subred SLIP. Una vez que lo ha compilado e instalado, deber crear el chero /etc/gated.conf, que congurar a gated; aqui hay un ejemplo, similar al que el autor utiliz en un servidor SLIP FreeBSD:
Nota: gated es un software propietario y su cdigo fuente no estar disponible al pblico ms (ms informacin en el sitio gated (http://www.gated.org/)). Esta seccin solo existe para asegurarse de la compatibilidad con aquellos que usan la versi antigua.
# # gated configuration file for dc.dsu.edu; for gated version 3.5alpha5 # Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
191
En el ejemplo anterior, el chero de conguracin gated.conf transmite informacin sobre la subred SLIP xxx.xxx.yy , por medio de RIP al dispositivo Ethernet; si usted esta utilizando un dispositivo de red, diferente de ed, ser necesario que modique el parmetro ed por el correspondiente. En este ejemplo, el chero tambin realiza una busqueda por el chero /var/tmp/gated.output, que es un chero que nos sirve para depurar cualquier error que se presente en la actividad de gated; usted puede desactivar la opcin de depuracin (debug), si es que gated esta funcionando correctamente. Ser necesario que modique xxx.xxx.yy., a quedar con la direccin correcta de su subred SLIP (asegurese de modicar tambin la mscara de red, en la clusula proto direct tambin). Una vez que ha instalado y congurado gated en su sistema, necesitar indicarle a FreeBSD que al iniciar el sistema, ejecute el script para gated, en lugar de ejecutar routed. La forma ms fcil de hacer esto, es editar las variables de route y router_flags, en el chero /etc/rc.conf. Por favor vea la pgina de ayuda de gated, para ver informacin sobre los parmetros de la lneadecomandos.
192
193
17.1. Sinpsis
El Correo Electrnico, mejor conocido como email, es una de las formas de comunicacin ms usadas hoy en dia. Este captulo es una introduccin bsica de como poner en marcha un servidor de correo en FreeBSD, aunque no es una referencia completa y muchas consideraciones importantes son omitidas. Para una cobertura ms amplia acerca de este tema, el lector puede consultar los libros listados en Captulo 21. Despus de leer este captulo, usted sabr:
Qu software est involucrado al enviar y recibir correo electrnico. Dnde se encuentran los cheros de conguracin bsicos de sendmail en FreeBSD. Cmo bloquear spammers y evitar el uso ilegal de su servidor de correo. Cmo instalar y congurar agentes de transferencia de correo (MTA) en sus sistema, para remplazar sendmail. Cmo resolver problemas comunes en servidores de correo. Cmo usar SMTP con UUCP. Cmo usar correo con una conexin dialup. Cmo congurar SMTP con autenticacin para ms seguridad.
Congurar apropiadamente su conexin de red (Captulo 16). Congurar apropiadamente la informacin de DNS de su servidor de correo (Captulo 16). Saber como instalar software adicional (Captulo 4).
194
18.1. Sinpsis
FreeBSD est en desarrollo continuo entre versiones. Para los que quieran estar en lo ltimo de lo ltimo, hay varias formas de sincronizar tu sistema con el ltimo desarrollo fcilmente. Ests advertido lo ltimo de lo ltimo no es para cualquiera! Este captulo te ayudar a decidir si quieres seguir el sistema de desarrollo o quedarte en algunas de las versiones publicadas. Despus de leer este captulo sabrs:
La diferencia entre las dos ramas de desarrollo; FreeBSD-STABLE y FreeBSD-CURRENT. Cmo mantener tu sistema al da con CVSup, CVS, o CTM. Cmo reconstruir y reinstalar el sistema base entero con make world.
Disponer correctamente tu conexin de red (Captulo 16). Saber cmo instalar programas adicionales de terceros. (Captulo 4).
195
Captulo 18. Lo ltimo de lo ltimo 18.2.1.2. Quin necesitaFreeBSD-CURRENT? FreeBSD-CURRENT est disponible generalmente para tres grupos de inters principales: 1. Miembros del grupo FreeBSD que estn activamente trabajando en alguna parte del cdigo fuente del rbol y para los que mantenerse current es un requisito absoluto. 2. Miembros del FreeBSD grupo que son activos probadores, con el propsito de pasar tiempo trabajando en los problemas para asegurarse de que FreeBSD-CURRENT se mantiene tan cuerdo como sea posible. Tambin hay gente que desea hacer sugerencias tpicas en cambios y en la direccin principal del FreeBSD. 3. Miembros externos FreeBSD o algn grupo que desea mantener un ojo en las cosas y usa las fuentes del "current" por motivos de referencia (reference) (Ej. para leer, no ejecutar). Estas personas tambin hacen comentarios ocasionales o contribuyen al cdigo.
18.2.1.3. Qu No es FreeBSD-CURRENT? 1. Un rpido sistema de seguimiento para conseguir pre-distribuciones porque has oido que hay alguna nueva funcionalidad interesante dentro y quieres ser el primero del barrio en tenerla. 2. Un sistema rpido de tener los fallos solucionados. 3. En ningn caso asistencia ocial por nuestra parte. Nosotros nos esforzamos sinceramente en ayudar a la gente en alguna de las tres situaciones. Nosotros habilitamos FreeBSD-CURRENT pero simplemente no tenemos tiempo para dar asistencia tcnica. Esto no es porque seamos de alguna forma mala gente que no quiere ayudar a los dems (ni siquiera estaramos haciendo FreeBSD si lo fueramos), es simplemente porque no podemos responder 400 mensajes al da y en realidad trabajamos en FreeBSD! Si nos dan a escoger entre mejorar el FreeBSD y responder montones de preguntas, la mayora de los desarrolladores y usuarios, problamente opten por lo primero.
18.2.1.4. Usando FreeBSD-CURRENT 1. Unirse a Lista de FreeBSD-current <freebsd-current@FreeBSD.org> y al Lista de mensajes de commits en el CVS de FreeBSD <cvs-all@FreeBSD.org> . No es slo una buena idea, es esencial. Si no ests en el Lista de FreeBSD-current <freebsd-current@FreeBSD.org >, no vers los comentarios que la gente hace sobre la situacin del sistema current y por esto probablemente terminars tropezando con un montn de problemas que otros ya han encontrado y solucionado. Casi ms importante, te perders importantes boletines que podran ser fundamentales para la continuidad de la salud de tu sistema. La lista de correoLista de mensajes de commits en el CVS de FreeBSD <cvs-all@FreeBSD.org> te permitir ver el apunte en el registro de "commits" por cada cambio que se realice junto con informacin pertinente sobre posibles efectos secundarios. Para unirte a estas listas, enva un correo a <majordomo@FreeBSD.org> and indicando lo siguiente en el cuerpo del mensaje:
subscribe freebsd-current subscribe cvs-all
Opcionalmente,puedes tambin ponerhelp y Majordomo te enviar ayuda completa sobre como suscribirse o desuscribirse a las varias listas de correo que asistimos.
196
2. Graba las fuentes desde ftp.FreeBSD.org. Puedes hacer esto de varias maneras: a. Usa el programa cvsup con este suple (ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/standard-suple). Este es el mtodo ms recomendable, ya que te permite grabar la coleccin entera una vez y a partir de entonces slo lo que cambie desde entonces.Mucha gente ejecuta cvsup from cron y mantiene actualizadas sus fuentes automticamente. Tienes que adaptar la muestra de suple de arriba y congurar cvsup a tu entorno.Si quieres ayuda para hacer esta conguracin, teclea:
# pkg_add -f
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvupit-3.0.tgz
b. Usa ftp. El cdigo fuente del rbol del FreeBSD-CURRENT est siempre exportado en: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/. Algunos de nuestros servidores FTP tambin permiten grabar los rboles enteros comprimidos/tarred. ej. Mira:
usr.bin/lex
Puedes hacer lo siguiente para conseguir el directorio completo como un archivo tar:
ftp> cd usr.bin ftp> get lex.tar
c. Usa la aplicaci CTM. Si tienes muy mala conexin (conexiones caras o slo acceso para correo electrnico) CTMes una opcin. Sin embargo es muy complicado y puede darte archivos rotos. Por eso se usa raramente, lo que incrementa la posibilidad de que no funcione durante largos periodos de tiempo. Te recomendamos usar CVSup para cualquiera con un modem de 9600bps modem o una conexin ms rapida.
3. Si ests grabando las fuentes para ejecutarlas y no slo leerlas, entonces graba todo el FreeBSD-CURRENT, no slo algunos trozos. La razn es que varias partes de las fuentes dependen de actualizaciones de otros sitios, y tratar de compilar slo una proci casi te garantiza meterte en problemas. Antes de compilar FreeBSD-CURRENT, lee con cuidado Makefile en /usr/src Deberas al menos ejecutar un make world la primera vez como parte del proceso de actualizacin. Leer el Lista de FreeBSD-current <freebsd-current@FreeBSD.org> te mantendr al da en otros procedimientos de arranque que a veces se convierten en necesarios cuando nos acercamos a la siguiente versin.
4. Participa! Si estas usando FreeBSD-CURRENT, queremos saber lo que tienes que decir sobre l, especialmente si tienes sugerencias para mejoras o arreglos de fallos. Recibimos tus sugerencias con ms entusiasmo si incluyes el cdigo correspondiente!
197
18.2.2.2. Quin necesita FreeBSD-STABLE? Si ests interesado en seguir o en contribuir al proceso de desarrollo de FreeBSD, especialmente en lo relativo a la prximapoint release de FreeBSD, entonces deberas considerar seguir FreeBSD-STABLE. Aunque es verdad que algunos arreglos de seguridad van tambien a la rama FreeBSD-STABLE , t no necesitas seguir FreeBSD-STABLE para hacerlo. Cada noticacin de seguridad de FreeBSD explica como solucionar el problema en la versin que afecta. 1 seguir una rama de desarrollo slo por razones de seguridad es seguramente tambin traer una gran cantidad de cambios no deseados. Aunque nosotros nos esforzamos para asegurar que la rama FreeBSD-STABLE compila y funciona en cualquier ocasin, esto no puede garantizarse, ya que el cdigo es desarrollado en FreeBSD-CURRENT antes de incluirlo en FreeBSD-STABLE, ms gente usa FreeBSD-STABLE que FreeBSD-CURRENT, asi que es inevitable que algunos errores se encuentren alguna vez en FreeBSD-STABLE que no eran evidentes en FreeBSD-CURRENT. Por estas razones, nosotros no recomendamos que sigas ciegamenteme FreeBSD-STABLE, y es especialmente importante que no actualices algun servidor importante a FreeBSD-STABLE sin probar primero el cdigo en tu entorno de desarrollo. Si no tienes los recursos para hacer esto entonces te aconsejamos que ejecutes la ms reciente distribucin de FreeBSD, y uses el mecanismo de actualizacin binaria entre distribucin y distribucin.
18.2.2.3. Usando FreeBSD-STABLE 1. nete a Lista de FreeBSD-stable <freebsd-stable@FreeBSD.org>. Esto te mantendr informado de las dependencias de construccin que puedan aparecer en FreeBSD-STABLE o cualquier otra cuestin que requiera especial atencin. Los desarrolladores harn los anuncios en esta lista de correo cuando estn contemplando algun arreglo polmico o actualizacin, dando a los usuarios la oportunidad de responder si tienen alguna cuestin que plantear respecto al cambio propuesto. La lista de correo Lista de mensajes de commits en el CVS de FreeBSD <cvs-all@FreeBSD.org> te permitir ver el apunte del commit log para cada cambio tal como se hace junto con la posible informacin sobre los efectos secundarios. Para apuntarse a estas listas, enva un correo a <majordomo@FreeBSD.org> y especica lo siguiente en el cuerpo del mensaje:
subscribe freebsd-stable subscribe cvs-all
Opcionalmente, puedes indicar help y Majordomo te enviar ayuda completa sobre como suscribirte y desuscribirte a las otras listas que mantenemos.
198
2. Si ests instalando un nuevo sistema y quieres que sea lo ms estable posible, puedes grabar simplemente la ltima rama con la instantnea ms antigua de ftp://releng4.FreeBSD.org/pub/FreeBSD/ and install it like any other release. Si ya estas usando una versin previa de FreeBSD y quieres actualizar via fuentes entonces puedes hacerlo fcilmente desde ftp.FreeBSD.org. Esto puede hacerse de tres maneras: a. Usa el programa cvsup con this suple (ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/stable-suple). Este es el sistema recomendado, ya que te permite grabar la coleccin entera una vez y a partir de entonces slo lo que cambie. Algunos usan cvsup from cron para mantener las fuentes al da automticamente. Para una interface bastante sencilla para esto, simplemente teclea:
# pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
b. Usa ftp. Las fuentes de rbol para el FreeBSD-STABLE estn siempre exported en: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/ Algunos de nuestros servidores de FTP permiten tambien grabar los rboles completos compressed/tarred. ej. Mira:
usr.bin/lex
c. Usa CTM. Si no tienes una conexi rpida y barata a Internet,este es el mtodo que debera considerar usar.
3. Bsicamente, si necesitas acceso rpido bajo demanda a la fuente y el ancho de banda no es una consideracin , usa cvsup o ftp. De otro modo, usa CTM. 4. Antes de compilarFreeBSD-STABLE, lee el Makefile en /usr/src con cuidado. Deberas al menos ejecutar un make world la primera vez como parte del proceso de instalacin.Leyendo elLista de FreeBSD-stable <freebsd-stable@FreeBSD.org> te mantendr al da en los otros procedimientos de arranque que alguna vez pueden llegar a ser necesarios cuando nos acercamos a la siguiente versin.
199
Anonymous CVS and CVSup usa el modelo pull para actualizar las fuentes. En caso de CVSup el usuario (o un
cron script) invoca el programa cvsup, y este interactua con el servidor cvsupd en algn lugar para traer los
archivos actualizados. Las actualizaciones que recibes lo estn al minuto y t las consigues cuando, y slo cuando, las quieras. Puedes fcilmente restringir tus actualizaciones a los archivos o directorios que te interesen. Las actualizaciones se crean sobre la marcha por el servidor segn lo que tienes o quieras tener. Anonymous CVS es bastante mas simple que CVSup que es slo una extensin de CVS que permite retirar los cambios directamente desde un repositorio (repository) CVS remoto. CVSup puede hacer esto mucho ms ecientemente, pero Anonymous CVS es ms fcil de usar. CTM, por otro lado, no compara las fuentes que tienes interactivamente con las del archivo master o de otro que retires..En vez de eso, un script que identica los cambios en los archivos se ejecuta varias veces al da en la maquina maestra CTM, cualquier cambio detectado, sellado con una secuencia de nmeros y codicado para transmitirlo en correo ( slo en ASCII imprimible). Una vez recibido, estosCTM deltas pueden ser manipulados por la utilidad ctm_rmail(1) que automticamente decodica, verica y aplica los cambios a la copia de las fuentes del usuario. Este proceso es ms eciente que CVSup, y pone menos presin en nuestros recursos de servidor ya que es un modelo de empujar en vez de tirar . Hay otros aspectos a tener en cuenta, por supuesto. Si descuidadamente barres trozos de tu archivo, CVSup te detectar y reconstruir las porciones daadas. CTM no hace esto, y si borras algn trozo de las fuentes del rbol (y no has hecho una copia de respaldo) entonces tendrs que partir de cero ( desde el ms reciente CVS base delta) y reconstruirlo todo con CTM o, con anoncvs, simplemente borrar los malos bits (bad bits) y resincronizars
Suscribete a la lista de correo correctaLas ramas FreeBSD-STABLE and FreeBSD-CURRENT son , por naturaleza, en desarrollo . La gente que contribuye a FreeBSD son humanos, y los errores ocasionalmente ocurren. Algunos de estos errores pueden ser poco dainos, que slo causan que tu sistema imprima una nueva seal de diagnostico. O el cambio puede ser catastrco, e inutilizar tu sistema inarrancable o destruir tu sistema de archivos ( o algo peor).
200
201
Captulo 18. Lo ltimo de lo ltimo La solucin es examinar /usr/src/etc/group y comparar su lista con la tuya.Si hay algn grupo en el nuevo archivo que no estn en tu archivo entonces cpialos encima. De la misma forma, deberas renombrar cualquier grupo en /etc/group que tenga la misma GID pero un nombre diferente para aquellas en /usr/src/etc/group.
Sugerencia: Si te sientes particularmente paranoico, puedes comprobar tu sistema para ver que archivos pertenecen al grupo que estas renombrando o borrando.
# find / -group GID -print
mostrar todos los cheros que pertenecen al grupo GID (que puede ser o un nombre de grupo o una ID numrica de grupo).
desde un sistema en funcionamiento, al que cambiar a modo monousuario. Alternativamente, reinicia el sistema, y en el boot promt, introduce la -s ag. El sistema se reiniciar en modo monousuario.En el promt de la shell deberas ejecutar:
# # # #
Esto comprueba los sistemas de archivos, remounts / lectura/escritura, mounts, todos los sistemas de archivos UFS referenciados en /etc/fstab y entonces hace los cambios indicados.
202
Si haces esto, no guardes el output en /tmp. Este directorio podria ser vaciado en el proximo arranque. Un lugar mejor para almacenarlo es en /var/tmp (como en el ejemplo anterior) o en el directorio home de root.
18.4.6.2. Compilar e instalar el Sistema Base (Base System) Debes estar en /usr/src directory...
# cd /usr/src
(a menos que, por supuesto, tu cdigo fuente este en otra parte, en ese caso cambia a ese directorio). Para reconstruir world utiliza el make(1) command. Esta orden lee las instrucciones desde el Makefile, que describe como el programa que comprende el FreeBSD debe ser reconstruido. El formato general de la lnea de ordenes que teclears es como sigue:
# make -x -DVARIABLE target
En este ejemplo, -x es una opcin que pasaras a make(1). Mira la pagina del manual de make(1) para un ejemplo de las opciones que puedes pasar.
-DVARIABLE pasa una variable a el Makefile. El comportamiento de Makefile esta controlado por esas variables.Estas son las mismas variables como estan colocadas en /etc/make.conf, y esto proporciona otra forma de disponerlas.
# make -DNOPROFILE=true target
es otra forma de indicar que las bibliotecas indicadas no se construyan, y corresponde con el
203
Las lneas en /etc/make.conf. target dicen a make(1) que quieres hacer. Cada Makefile dene un nmero de diferentes objetivos, y la eleccin de esos objetivos determina lo que ocurre. Algunos objetivos estan listados en Makefile, pero no signica que puedas ejecutarlos En vez de eso, se usan por el proceso de consruccin para romper los pasos necesarios para reconstruir el sistema en un nmero de sub-pasos. La mayora de las veces, no necesitas pasar ningun parametro a make(1), y asi tu orden se parecer a esto:
# make target
A partir de la versin 2.2.5 de FreeBSD (en realidad, se cre por primera vez en la FreeBSD-CURRENT branch, y luego posteriormente colocado en FreeBSD-STABLE a mitad de camino entre 2.2.2 y 2.2.5) el objetivo (target) world se ha dividido en dos. buildworld y installworld. Como el nombre implica, buildworld construye un nuevo rbol bajo /usr/obj, y installworldinstala este rbol en una mquina con la versin current. Esto es muy til por dos motivos.Primero, te permite construir de forma segura, sabiendo que ningn componente del sistema current ser afectado. La construccin es self hosted. Por esto puedes con seguridad ejecutar buildworld en una m6aacute;quina funcionado en modo multiusuario sin miedo a efectos indeseados.Aunque aun es recomendable que ejecutes installworld en modo monousuario. En segundo lugar, permite usar NFS mounts para actualizar multiples m6aacute;quinas en tu red. Si tienes tres mquinas, A, B y C que quieres actualizar, ejecuta make buildworld y make installworld en A. B y C deben luego mount NFS /usr/src y /usr/obj desde A, y puedes luego ejecutar make installworld para instalar los resultados de la construccin en B y C. Aunque el world target an exista, se recomienda rmemente que no lo uses. Ejecutar
# make buildworld
Ahora es posible especicar un opcin -j make lo que provocar varios procesos simultaneos. Esto es lo mas til en mquinas con multiples CPU. Sin embargo, ya que el proceso de compilacin es IO bound mas que CPU bound es tambin til en mquinas con una sla CPU. En una tpica mquina mono-CPU ejecutaras:
# make -j4 buildworld
make(1) tendras mas de 4 procesos ejecutandose en cada momento. La evidencia emprica comentada en las listas de correo muestran que esto da el mejor resultado. Si tienes una mquina multi-CPU y estas usando un kernel congurado SMP prueba valores entre 6 y 10 y mira como se aceleran las cosas. Estas advertido de que esto es an experimental y que hacer commits al cdigo fuente del rbol puede ocasionalmente romper esta posibilidad. Si world falla al compilar usando este parmetro intentalo de nuevo sin l, antes de informar de los problemas.
204
Captulo 18. Lo ltimo de lo ltimo 18.4.6.3. Momento (Timings) Muchos factores inuyen en el tiempo de construccin, pero generalmente un Pentium 3 500 Mhz con 128 MB de RAM tardara 2 horas en construir el rbol FreeBSD-STABLE , sin trucos o cortes durante el proceso. Un rbol FreeBSD-CURRENT tardar algo mas.
Si ests actualizando a una versin de FreeBSD por debajo de 4.0 usa el procedimiento de construccin standard del kernel. Sin embargo, se recomienda que uses una nueva versin de cong(8), usando una lnea de ordenes como esta.
# /usr/obj/usr/src/usr.sbin/config/config KERNELNAME
Nota: Si especicaste variables en la lnea de orden make buildworld deberas poner las mismas variables en la lnea de orden de make installworld . Esto no es necesariamente cierto para otras opciones; por ejemplo, , -j nunca debe ser usada con installworld. Por ejemplo, si ejecutaste:
205
de otro modo, instalara bibliotecas seleccionadas que no haban sido construidas durante la fase make buildworld .
-R hace una copia recursiva , -p almacena los tiempos, propiedad de los archivos y cosas as.
Necesitas construir el grupo de directorios que hagan el papel de / para instalar el nuevo /etc y otros archivos dentro. /var/tmp/root es una eleccin razonable, y tambin se requiere un nmero de subdirectorios debajo de este.
# mkdir /var/tmp/root # cd /usr/src/etc # make DESTDIR=/var/tmp/root distrib-dirs distribution
Esto construir la necesaria estructura de directorio e intalar los archivos.Un montn de directorios que habrn sido creados bajo /var/tmp/root estan vacios y deberan ser borrados. Una forma muy f6aacute;cil de hacerlo es:
# cd /var/tmp/root # find -d . -type d | xargs rmdir 2>/dev/null
As quitamos todos los directorios vacios. (El error standard es redirigido a /dev/null para prevenir las advertencias sobre directorios que no estn vacios.)
206
tienes que ir a cada archivo y determinar cunto dieren de tus archivos exiting. Date centa que algunos de los archivos que se habrn instalado en /var/tmp/root tienen un leading .. En el momento de escribir esta documentacin los nicos archivos como estos son los archivos de inicio de la shell en /var/tmp/root/ y /var/tmp/root/root/, aunque podra haber otros (dependiendo de cuando leas esto.Asegurate de usar ls -a para capturarlos. El sistema ms fcil para hacerlo es usar diff(1) para comparar los dos cheros.
# diff /etc/shells /var/tmp/root/etc/shells
Esto te mostrar las diferencias entre tu archivo /etc/shellsy el nuevo archivo /etc/shells . salos para decidir si fusionas con los cambios que hayas hecho o si lo copias encima de tu viejo archivo.
Nombra el Nuevo Directorio de Root (/var/tmp/root) con un Sello temporal (time stamp), de esta forma puedes comparar fcilmente las diferencias entre versiones: Reconstruir frecuentemente el world signica que actualizas /etc tambien frecuentemente, lo que puede ser un poco pesado. Puedes acelerar este proceso manteniendo una copia del ltimo grupo de archivos cambiados que hayas fusionado en /etc. El siguiente metodo te da una idea de como hacer esto. 1. Make the world como normal. Cuando quieras actualizar /etcy los otros directorios, dle al directorio de destino un nombre basado en la fecha actual. Si estuvieses haciendo esto el 14 de Febrero de 1998 haras lo siguiente.
# mkdir /var/tmp/root-19980214 # cd /usr/src/etc # make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distribution
2.
Aade los cambios del directorio segn lo explicado arriba. No quites el directorio /var/tmp/root-19980214 cuando hayas acabado.
3.
Cuando hayas descargado la ultima versin de las fuentes y las hayas rehecho, sigue el paso 1.Esto te dar un nuevo directorio, que podra llamarse /var/tmp/root-19980221 (si esperas una semana entre las actualizaciones). Tu puedes ahora ver las diferencias que se han hecho en esa semana intermedia usando diff(1) puedes usar diff para buscar recursivamente las diferencias entre los dos directorios.
# cd /var/tmp # diff -r root-19980214 root-19980221
4.
Tpicamente, este conjunto de diferencias sern ms pequeas que las que hay entre
/var/tmp/root-19980221/etc y /etc. Como las diferencias son menores, es ms fcil enviar esos cambios hasta tu directorio /etc .
5.
6.
207
En la mayora de los casos, la herramienta mergemaster(8) se dar6aacute; cuenta cuando es necesario actualizar dispositivos y se ofrecer a hacerlo automticamente. Estas instrucciones te dirn como hacerlo manualmente. Por motivos de seguridad, este es un proceso con varios pasos. 1. Copia /var/tmp/root/dev/MAKEDEV en /dev.
# cp /var/tmp/root/dev/MAKEDEV /dev
Si usaste mergemaster(8) para actualizar /etc, entonces tu script MAKEDEV debera haberse actualizado ya, aunque no hace dao si lo compruebas (con diff(1))y lo copias manualmente si fuese necesario. 2. Ahora, toma una instantnea de tu actual /dev. Esta instantnea necesita contener los permisos, propiedades, nmeros mayores y menores de cada archivo, pero no debera contener un sello temporal (time stamp) La forma ms fcil de hacerlo es usar awk(1) para sacar alguna informacin.
# cd /dev # ls -l | awk {print $1, $2, $3, $4, $5, $6, $NF} > /var/tmp/dev.out
3.
4.
Copia otra instantnea del directorio , esta vez en /var/tmp/dev2.out. Ahora mira entre esos dos archivos por si se te olvido crear algun dispositivo. No debera haber ninguno, pero es mejor estar seguro que lamentarlo.
# diff /var/tmp/dev.out /var/tmp/dev2.out
Podrs detectar ms fcilmente discrepancias en las cuotas del disco que tienen que ver con mandatos tales como
# sh MAKEDEV sd0s1
Para recrear las entradas a las cuotas. Tus circunstancias especicas pueden variar.
Para terminar completamente , podras querer actualizar los archivos en /stand tan bien. Estos archivos consisten en enlaces sostenidos (hard links) a el binario /stand/sysinstall. Este binario debera estar enlazado estticamente, para que pueda funcionar cuando ningn otro sistema de archivos (y en particular /usr)haya sido montado.
# cd /usr/src/release/sysinstall # make all install
208
18.4.13. Reinicio
Ya esta hecho. Despues de que hayas vericado que todo parece estar en el lugar adecuado puedes reiniciar el sistema. Un simplefastboot(8) lo har.
# fastboot
18.4.14. Finalizado
Deberas tener ahora tu sistema operativo actualizado con exito. Felicidades. Si las cosas fueron ligeramente mal, es facil reconstruir una parte del sistema. Por ejemplo, si accidentalmente borraste /etc/magic como parte de la actualizacin o al aadir algo a /etc, la orden (command) le(1) dejara de funcionar. En ese caso, el arreglo sera ejecutar:
# cd /usr/src/usr.bin/file # make all install
18.4.15. Preguntas
1. Es necesario rehacer world en cada cambio? No hay una respuesta fcil para esto, depende de la naturaleza del cambio. Por ejemplo, si slo ejecutaste CVSup, y mostr las siguientes lneas mientras se actualizaba ,
src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk
Probablemente no merezca la pena reconstruir world entero. Puedes ir a los subdirectorios apropiados y make all install, y ya esta. Pero si el cambio fue mayor, por ejemplo src/lib/libc/stdlib entonces deberas o rehacer world, o al menos aquellas de sus partes que estan estticamente unidas (asi como cualquier otra cosa que hayas aadido y que est unida estticamente). Es cuestin de que elijas. Podras estar contento ejecutando make world digamos cada quincena , y dejar que los cambios se acumulen hasta ese da. O quiz quieras hacerlo slo a aquellas que hayan cambiado, y tengas conanza en haber comprobado todas las dependencias. Y, por supuesto, todo esto depende de cada cunto tiempo actualices y si estas usando la versin stable o current.
2. Cuando compilo falla con montones de seales de error 11 (u otro nmero de seal). Qu ha ocurrido? Esto normalmente es una indicacin de problemas de mquina. Al ejecutar make world ((Re)making world) se produce una sobrecarga del ordenador, que frecuentemente desencadena problemas de memoria.Esto se maniesta cuando el compilador agoniza recibiendo seales extraas. Un indicador seguro de esto, es si puedes repetir el make y muere en un punto diferente del proceso.
209
Captulo 18. Lo ltimo de lo ltimo En este cambio hay poco que puedas hacer excepto comenzar a probar los compenentes de tu mquina para saber cual es el que falla.
Aunque, si sabes lo que haces puedes hacer que make world se salte este paso. Esto har que la consiguiente construccin vaya ms rpido, ya que la mayor parte de las fuentes no necesitarn recompilarse. La parte molesta de esto es que pueden provocarse problemas de dependencias, haciendo que la construccin falle de forma rara. Esto genera alboroto en las listas de correo, cuando una persona se queja de que su construccin ha fallado, sin darse cuenta de que es porque ha intentado acortar demasiado. Si quieres vivir peligrosamente entonces haz make world, pasando la denicin NOCLEAN , como esto:
# make -DNOCLEAN world
4. Puede continuarse una construccin interrumpida? Esto depende de como de lejos llegaste hasta encontar el problema. En general (y esto no es una regla ja) El proceso make world construye nuevas copias de herramientas esenciales (como gcc(1), y make(1)) y el sistema de bibliotecas. Estas herramientas y bibliotecas estan entonces instaladas.Las nuevas herramientas y bibliotecas son usadas para reconstruirse a si mismas, y son instaladas de nuevo.El sistema entero (incluyendo ahora programas normales como ls(1) or grep(1))es entonces reconstruido con el nuevo sistema de archivos. Si estas al nal del proceso, y lo sabes (porque has mirado los resultados que estuviste guardando) entonces puedes (bastante seguramente) hacer
... fix the problem ...
# cd /usr/src # make -DNOCLEAN all
en la salida make world entonces es probablemente bastante seguro hacer eso. Si tu no ves ese mensaje, o no estas seguro, entonces es siempre mejor estar seguro que lamentarse, y comenzar otra vez desde el principio.
210
Captulo 18. Lo ltimo de lo ltimo 5. Puedo usar una mquina comomaster para actualizar montones de maquinas (NFS)? Esto es una tarea bastante sencilla, y puede ahorrar horas de compilacion en muchas mquinas.Simplemente ejecuta
buildworld en una mquina central, y entonces NFS monta /usr/src y /usr/obj en la mquina remota y installworld alli.
Ejecuta en modo monousuario. Pon /usr/src y /usr/obj en sistemas de archivos diferentes en discos separados. Si es posible, pon esos discos en controladoras de discos separadas. An mejor, pon esos sistemas de archivos a travs de multiples discos usando ccd(4) Desactiva el perl (coloca NOPROFILE=true en /etc/make.conf). Casi seguro que no lo necesitas. Tambin en /etc/make.conf, coloca CFLAGS a algo como -O -pipe. La optimizacin -O2 es mucho ms lenta y la diferencia de optimizacin entre -O y -O2 es normalmente poco importante. -pipe permite que el compilador utilice tuberias (pipes) antes que archivos temporales lo que ahorra accesos al disco (a expensas de memoria). Pon la opcin -j<n> para hacer que se ejecuten multiples procesos en paralelo.Esto ayuda se tenga un procesador o varios. El sistema de archivos que contiene /usr/src puede ser montado ( o vuelto a montar) con la opcin noatime . Esto evita al sistema de archivos el grabar la hora de acceso al archivo. Probablemente no te haga falta esta informacin para nada.
# mount -u -o noatime /usr/src
AvisoEste ejemplo supone que /usr/src esta en su propio sistema de archivo.Si no est (Por ejemplo, si es parte de /usr ) Entonces necesitars el punto de montaje de ese sistema de archivos, y no /usr/src.
El sistema de archivos que contiene/usr/obj puede montarse (o volverse a montar) con la opcin async. Esto hace que el disco escriba de modo asncrono. En otras palabras, el grabar se completa inmediatamente, y el dato es escrito en el disco unos pocos segundos despus.Esto hace que las grabaciones se agrupen juntas y puede ser una gran aceleracin del funcionamiento.
AvisoTen en cuenta que esta opcin hace el sistema de archivos ms fragil.Con esta opcin hay un incremento de posibilidades, si la corriente falla, de que el sistemas de archivos sea irrecuperable cuando la m6aacute;quina se reinicie. Si /usr/obj es lo nico en este sistema de archivos entonces no hay problema.Si tienes otros datos valiosos entonces asegrate de tener copias recientes antes de habilitar esta opcin.
AvisoComo arriba, si/usr/objno est en su propio sistema de archivos, reemplazalo en el ejemplo con el nombre del apropiado punto de montaje.
211
7. Que hago si algo sale mal? Asegurate de que tu entorno no tiene extraas cruft de construcciones anteriores.Esto es suciente.
# chflags -R noschg /usr/obj/usr #rm -rf /usr/obj/usr #cd /usr/src # make cleandir #make cleandir
S , make cleandir realmente debera ejecutarse dos veces. Entonces comienza el proceso de nuevo, empezando con make buildworld. Si an tienes problemas, enva el error y la salida de uname -aa Lista de preguntas generales de FreeBSD <freebsd-questions@FreeBSD.org>. Preprate para contestar preguntas sobre tu setup
Notas
1. Esto no es del todo cierto. No podemos continuar prestando asistencia para las viejas versiones de FreeBSD nunca ms, aunque lo hayamos hecho durante aos. Para conocer la poltica de seguridad de las viejas versiones de FreeBSD, por favor mira http://www.FreeBSD.org/security (../../../../security/index.html)
212
213
III. Apndices
215
Usando FreeBSD (http://freebsd.csie.nctu.edu.tw/~jdli/book.html) (en Chino). FreeBSD for PC 98ers (en japons), publicado por SHUWA System Co, LTD. ISBN 4-87966-468-5 C3055 P2900E. FreeBSD (en japons), publicado por CUTT. ISBN 4-906391-22-2 C3055 P2400E. Introduccin completa a FreeBSD (http://www.shoeisha.co.jp/pc/index/shinkan/97_05_06.htm) (en japons), publicado por Shoeisha Co., Ltd (http://www.shoeisha.co.jp/). ISBN 4-88135-473-6 P3600E. Kit personal del principiante UNIX FreeBSD (http://www.ascii.co.jp/pb/book1/shinkan/detail/1322785.html) (en japons), publicado por ASCII (http://www.ascii.co.jp/). ISBN 4-7561-1733-3 P3000E. Manual FreeBSD (traduccin del japons), publicado por ASCII (http://www.ascii.co.jp/). ISBN 4-7561-1580-2 P3800E. FreeBSD mit Methode (en alemn), publicado por Computer und Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0. Manual de instalacin y utilizacin de FreeBSD (http://www.pc.mycom.co.uk/FreeBSD/install-manual.html) (en japons), publicado por Mainichi Communications Inc. (http://www.pc.mycom.co.jp/).
The Complete FreeBSD (http://www.cdrom.com/titles/freebsd/bsdcomp_bkx.phtml), publicado por Walnut Creek CDROM (http://www.cdrom.com/).
Computer Systems Research Group, UC Berkeley. 4.4BSD Users Reference Manual. OReilly & Associates, Inc., 1994. ISBN 1-56592-075-9 Computer Systems Research Group, UC Berkeley. 4.4BSD Users Supplementary Documents. OReilly & Associates, Inc., 1994. ISBN 1-56592-076-7 UNIX in a Nutshell. OReilly & Associates, Inc., 1990. ISBN 093717520X Mui, Linda. What You Need To Know When You Cant Find Your UNIX System Administrator. OReilly & Associates, Inc., 1995. ISBN 1-56592-104-6
216
La Ohio State University (http://www-wks.acs.ohio-state.edu/) ha escrito un Curso de introduccin a UNIX (http://www-wks.acs.ohio-state.edu/unix_course/unix.html) disponible en lnea en formato HTML y postscript. Jpman Project, Japan FreeBSD Users Group (http://www.jp.FreeBSD.org/). FreeBSD Users Reference Manual (http://www.pc.mycom.co.jp/FreeBSD/urm.html) (traduccin japonesa). Mainichi Communications Inc. (http://www.pc.mycom.co.jp/), 1998. ISBN4-8399-0088-4 P3800E.
Albitz, Paul and Liu, Cricket. DNS and BIND, 2nd Ed. OReilly & Associates, Inc., 1997. ISBN 1-56592-236-0 Computer Systems Research Group, UC Berkeley. 4.4BSD System Managers Manual. OReilly & Associates, Inc., 1994. ISBN 1-56592-080-5 Costales, Brian, et al. Sendmail, 2nd Ed. OReilly & Associates, Inc., 1997. ISBN 1-56592-222-0 Frisch, leen. Essential System Administration, 2nd Ed. OReilly & Associates, Inc., 1995. ISBN 1-56592-127-5 Hunt, Craig. TCP/IP Network Administration. OReilly & Associates, Inc., 1992. ISBN 0-937175-82-X Nemeth, Evi. UNIX System Administration Handbook. 2nd Ed. Prentice Hall, 1995. ISBN 0131510517 Stern, Hal Managing NFS and NIS OReilly & Associates, Inc., 1991. ISBN 0-937175-75-7 Jpman Project, Japan FreeBSD Users Group (http://www.jp.FreeBSD.org/). FreeBSD System Administrators Manual (http://www.pc.mycom.co.jp/FreeBSD/sam.html) (traduccin japonesa). Mainichi Communications Inc. (http://www.pc.mycom.co.jp/), 1998. ISBN4-8399-0109-0 P3300E.
Asente, Paul. X Window System Toolkit. Digital Press. ISBN 1-55558-051-3 Computer Systems Research Group, UC Berkeley. 4.4BSD Programmers Reference Manual. OReilly & Associates, Inc., 1994. ISBN 1-56592-078-3 Computer Systems Research Group, UC Berkeley. 4.4BSD Programmers Supplementary Documents. OReilly & Associates, Inc., 1994. ISBN 1-56592-079-1 Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual. 4rd ed. Prentice Hall, 1995. ISBN 0-13-326224-3 Kernighan, Brian and Dennis M. Ritchie. The C Programming Language.. PTR Prentice Hall, 1988. ISBN 0-13-110362-9 Lehey, Greg. Porting UNIX Software. OReilly & Associates, Inc., 1995. ISBN 1-56592-126-7 Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9 Stevens, W. Richard. Advanced Programming in the UNIX Environment. Reading, Mass. : Addison-Wesley, 1992 ISBN 0-201-56317-7 Stevens, W. Richard. UNIX Network Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN 0-13-490012-X Wells, Bill. Writing Serial Drivers for UNIX. Dr. Dobbs Journal. 19(15), December 1994. pp68-71, 97-99.
217
Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5 Jolitz, William. Porting UNIX to the 386. Dr. Dobbs Journal. January 1991-July 1992. Lefer, Samuel J., Marshall Kirk McKusick, Michael J Karels and John Quarterman The Design and Implementation of the 4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley, 1989. ISBN 0-201-06196-1 Lefer, Samuel J., Marshall Kirk McKusick, The Design and Implementation of the 4.3BSD UNIX Operating System: Answer Book. Reading, Mass. : Addison-Wesley, 1991. ISBN 0-201-54629-9 McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John Quarterman. The Design and Implementation of the 4.4BSD Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4 Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9 Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN 0-201-63338-8 Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP and the UNIX Domain Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3 Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2 Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2: The Implementation. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X
Cheswick, William R. and Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63357-4 Garnkel, Simson and Gene Spafford. Practical UNIX Security. 2nd Ed. OReilly & Associates, Inc., 1996. ISBN 1-56592-148-8 Garnkel, Simson. PGP Pretty Good Privacy OReilly & Associates, Inc., 1995. ISBN 1-56592-098-8
Anderson, Don and Tom Shanley. Pentium Processor System Architecture. 2nd Ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40992-5 Ferraro, Richard F. Programmers Guide to the EGA, VGA, and Super VGA Cards. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-62490-7 La corporacin Intel publica documentacin sobre sus CPUs, chipsets y estndares en su web para desarrolladores (http://developer.intel.com/), normalmente en archivos con formato PDF.
218
Shanley, Tom. 80486 System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40994-1 Shanley, Tom. ISA System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40996-8 Shanley, Tom. PCI System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40993-3 Van Gilluwe, Frank. The Undocumented PC. Reading, Mass: Addison-Wesley Pub. Co., 1994. ISBN 0-201-62277-7
Lion, John Lions Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN 1573980137 Raymond, Eric S. The New Hackers Dictionary, 3rd edition. MIT Press, 1996. ISBN 0-262-68092-0. Also known as the Jargon File (http://www.ccil.org/jargon/jargon.html) Salus, Peter H. A quarter century of UNIX . Addison-Wesley Publishing Company, Inc., 1994. ISBN 0-201-54777-5 Simon Garnkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS Handbook. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1 Don Libes, Sandy Ressler Life with UNIX special edition. Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7 The BSD family tree. 1997. ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree o local (/usr/share/misc/bsd-family-tree) on a FreeBSD-current machine. The BSD Release Announcements collection. 1997. http://www.de.FreeBSD.org/de/ftp/releases/ Networked Computer Science Technical Reports Library. http://www.ncstrl.org/ Antiguas releases BSD procedentes del Computer Systems Research Group (CSRG). http://www.mckusick.com/csrg/: El paquete de 4 CDs cubre todas las versiones de BSD desde la 1BSD hasta la 4.4BSD y 4.4BSD-Lite2 (pero no la 2.11BSD, desafortunadamente). El ltimo disco contiene el cdigo fuente nal y los archivos SCCS.
The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838 Sys Admin The Journal for UNIX System Administrators Miller Freeman, Inc., ISSN 1061-2688
219
220
Apndice A. Recursos en Internet Lista freebsd-jobs freebsd-newbies freebsd-policy freebsd-questions freebsd-stable freebsd-test Propsito Oportunidades de trabajo y consultora bajo FreeBSD Actividades y discusiones de nuevos usuarios de FreeBSD Decisiones estratgicas del Core Team de FreeBSD. Bajo volumen y slo lectura Preguntas de usuarios y soporte tcnico Debates acerca del uso de FreeBSD-stable Un sitio al que mandar sus mensajes de prueba en lugar de a una de las dems listas
Listas Tcnicas: Las siguientes listas son para debates tcnicos. Debera leer cuidadosamente las normas de cada lista antes de suscribirse o enviar correos, dado que hay normas estrictas en cuanto a su uso y contenidos. Lista freebsd-afs freebsd-alpha freebsd-arm freebsd-atm freebsd-audit freebsd-binup freebsd-cluster freebsd-database freebsd-doc freebsd-emulation freebsd-rewire freebsd-fs freebsd-hackers freebsd-hardware freebsd-i18n freebsd-ia64 freebsd-ipfw freebsd-isdn freebsd-java freebsd-libh freebsd-mobile freebsd-mozilla freebsd-multimedia freebsd-new-bus Propsito Porte de AFS a FreeBSD Porte FreeBSD a Alpha Porte de FreeBSD para procesadores ARM Uso de redes ATM con FreeBSD Proyecto de auditora del cdigo fuente Diseo y desarrollo del sistema de actualizacin binaria Uso de FreeBSD en entornos cluster Debates sobre uso de bases de datos y su desarrollo bajo FreeBSD Creacin de documentacin sobre FreeBSD Emulacin de otros sistemas como Linux/DOS/Windows Debates tcnicos sobre Firewire (iLink, IEEE 1394) Sistemas de cheros Debates tcnicos generales Debates generales sobre harware y su uso en FreeBSD Internacionalizacin de FreeBSD Porte de FreeBSD a los prximos sistemas IA64 de Intel Debates tcnicos sobre el rediseo del cdigo del cortafuegos IP Desarrolladores de RDSI Desarrolladores de Java y personas portando los JDK a FreeBSD La segunda generacin del sistema de instalacin y paquetes Debates sobre equipos porttiles Porte de mozilla a FreeBSD Aplicaciones multimedia Debates tcnicos sobre la arquitectura de bus
221
Apndice A. Recursos en Internet Lista freebsd-net freebsd-platforms freebsd-ports freebsd-ppc freebsd-qa freebsd-realtime freebsd-scsi freebsd-security freebsd-security-notications freebsd-small freebsd-smp freebsd-sparc freebsd-standards freebsd-tokenring Propsito Debates sobre el cdigo fuente de Redes y TCP/IP Especca sobre plataformas de arquitectura no Intel Debates sobre la coleccin de ports Porte de FreeBSD a PowerPC Debates sobre Control de Calidad, generalmente al salir una nueva release Desarrollo de extensiones en tiempo real en FreeBSD El subsistema SCSI Temas de seguridad Avisos de seguridad Uso de FreeBSD en aplicaciones embebidas Debates sobre diseo de Multiproceso [A]Simtrico Porte de FreeBSD a sistemas Sparc Cumplimiento de las normas C99 y POSIX en FreeBSD Soporte de Token Ring en FreeBSD
Listas limitadas:Las siguientes listas son para una audiencia ms especializada (e interesada)y probablemente no son de inters para el pblico en general. Es una buena idea tener una presencia estable en las listas tcnicas antes de suscribirse a alguna de las limitadas, de modo que se pueda entender la etiqueta de la comunicacin que en ellas se usa. Lista freebsd-core freebsd-hubs freebsd-install freebsd-user-groups freebsd-www Propsito FreeBSD Core Team Mantenimiento de mirrors (mantenimiento de infraestructuras) Desarrollo de la Instalacin Coordinacin de grupos de usuarios Mantenimiento de www.FreeBSD.org (../../../../index.html)
Listas Compendio:La mayora de las listas citadas son accesibles como compendio. Los nuevos mensajes enviados a la lista son guardados y enviados como un nico correo cuando el archivo llega a un tamao cercano a los 100 Kb. Las listas accesibles como compendio son: Lista freebsd-afs-digest freebsd-alpha-digest freebsd-chat-digest freebsd-current-digest freebsd-cvs-all-digest freebsd-database-digest freebsd-hackers-digest
222
Apndice A. Recursos en Internet Lista freebsd-ia64-digest freebsd-isdn-digest freebsd-java-digest freebsd-questions-digest freebsd-security-digest freebsd-sparc-digest freebsd-stable-digest freebsd-test-digest Listas CVS:Las siguientes listas son para gente interesada en llevar un seguimiento de los mensajes en el registro para conocer los cambios hechos en las diferentes reas del rbol de cdigo fuente. Son listas de slo lectura y no se debe enviar correo a ellas. Lista cvs-all rea de cdigo /usr/src Descripcin de rea de cdigo (cdigo fuente) Todos los cambios al rbol de cdigo (superconjunto)
en el cuerpo del mensaje. Por ejemplo, para suscribirse a freebsd-announce usted hara esto:
% mail majordomo@FreeBSD.org
subscribe freebsd-announce ^D
Si quisiera suscribirse bajo otro nombre o enviar una peticin de suscripcin para una lista de correo local (un sistema muy eciente si dispone de varias personas interesadas que tengan cuentas de correo en un mismo servidor esto nos facilita mucho el trabajo!) sto es lo que debe hacer:
% mail majordomo@FreeBSD.org
Por ltimo, tambin es posible desuscribirse de una lista, obtener una lista de los suscriptores de una lista u obtener una lista de las listas de correo disponibles enviando otro tipo de mensajes de control a majordomo. Para obtener una lista completa de los comandos disponibles haga esto:
% mail majordomo@FreeBSD.org
help
223
De nuevo quisiramos pedirle que procure mantener los debates de las listas tcnicas dentro de temas tcnicos. Si lo nico que usted quiere es recibir avisos importantes le sugerimos que se suscriba a freebsd-announce, que est pensada para tener un trco muy bajo.
El tema de cualquier envo debe atenerse al n bsico de la lista a la que se escribe, esto es, si la lista es sobre temas de debate tcnico sus envos deberan versar sobre temas tcnicos. Enviar mensajes irrelevantes o insultos slo sirve para deteriorar el valor de la lista de correo para sus miembros y no ser tolerado. Para discusiones libres sin un tema en particular est la lista de correo freebsd-chat <freebsd-chat@FreeBSD.org>, que es libremente accesible y hecha para ste propsito. No se debera enviar el mismo mensaje a ms de dos listas, y slamente a 2 cuando exista una necesidad maniesta de escribir a ambas listas. Hay una gran cantidad de personas suscritas a ms de una lista y excepto para las mezclas ms esotricas (digamos "-stable & -scsi") no hay razn para enviar un mensaje a ms de una lista al mismo tiempo. Si le envan un mensaje en el que aparecen mltiples listas de correo en la lnea "Cc" de la cabecera, dicha lnea debe ser recortada antes de que enve una respuesta. Usted es el responsable de sus propios envos cruzados, independientemente de quin fuese el remitente original. No estn admitidos los ataques personales ni la blasfemia (dentro del contexto o como argumento) y eso incluye tanto a usuarios como a desarrolladores. Violaciones graves de la netiqueta, como reenviar o extractar mensajes privados sin permiso ni visos de tenerlo, est mal visto, aunque no prohibido especcamente. Sin embargo, hay pocos casos en los que algo as encaje en la temtica de una lista, por lo cual lo ms probable es recibir una advertencia (o ser expulsado) tan slo a causa de ello. El anuncio de productos o servicios no relacionados con FreeBSD estn estrictamente prohibidas y conllevarn la inmediata expulsin de la lista si queda demostrado que el autor est practicando el spam o envo de correo no solicitado.
Normas de las listas individuales: FREEBSD-AFS Sistema de Ficheros Andrew sta lista es para debates sobre el porte y uso de AFS, de CMU/Transarc
224
Apndice A. Recursos en Internet sta es la lista de correo para gente interesada en recibir exclusivamente avisos de sucesos importantes dentro de FreeBSD. sto incluye anuncios sobre SNAPSHOTS y otras versiones. Puede inclur tambin peticiones de voluntarios, etc. Es una lista de bajo volumen y estrictamente moderada.
FREEBSD-ARCH Debates sobre arquitectura y diseo sta lista es para debates sobre la arquitectura de FreeBSD. Los mensajes deberan mantenerse dentro del mbito tcnico para el que fu creada la lista. Seran ejemplos de temas aptos para sta lista:
Como reorganizar el sistema de construccin ("build") para poder tener varios procesos de construccin personalizados funcionando simultneamente. Qu se necesita arreglar en el VFS para que funcionen las capas de Heidemann. Cmo cambiar el dispositivo de control de interfaces para que sea posible utilizar los mismos controladores directamente en la mayora de los buses y arquitecturas. Cmo escribir un controlador de red.
FREEBSD-AUDIT Proyecto de auditora del cdigo fuente sta es la lista de correo del proyecto de auditora del cdigo fuente de FreeBSD. Aunque en principio fu puesta en marcha para cambios motivados por la seguridad su mbito fu ampliado a la revisin de cualquier cambio en el cdigo. En sta lista circula una gran cantidad de parches y probablemente no sea de inters para el tpico usuario de FreeBSD. Las discusiones de seguridad que no estn relacionadas con una parte especca del cdigo deben tener lugar en freebsd-security. Por otra parte se ruega a todos los desarrolladores que enven sus parches a sta lista para su revisin, especialmente si ataen a una parte del sistema donde un error pudiera afectar seriamente a la integridad del sistema.
FREEBSD-BINUP Proyecto de Actualizacin Binaria de FreeBSD sta lista existe para facilitar el debate sobre el sistema de actualizacion binaria o binup. Caractersticas de diseo, detalles de implementacin, parches, informes de error, informes de estado, peticiones de caractersticas, commit logs y en general todo lo relacionado con binup es bienvenido.
FREEBSD-BUGS Informe de errores sta es la lista de correo para informar de errores en FreeBSD. Siempre que sea posible los errores deberan ser enviados usando el comando send-pr(1) o el interfaz WEB (../../../../send-pr.html)
225
Apndice A. Recursos en Internet FREEBSD-CHAT Temas no tcnicos relacionados con la comunidad FreeBSD sta lista contiene todos los mensajes sobre informacin no tcnica y social, contenidos que no tienen cabida en las dems listas. Eso incluye discusiones sobre si Julio Iglesias parece una grgola, sobre si escribir o no en maysculas, quin est bebiendo demasiado caf, dnde se elabora la mejor cerveza, quin est fabricando cerveza en su stano y as sucesivamente. Pueden hacerse anuncios sobre actos importantes (como prximas estas, congresos, bodas, nacimientos, nuevos trabajos, etc.), pero las respuestas deben ser dirigidas a sta misma lista.
FREEBSD-CORE FreeBSD Core Team sta es la lista de correo interna para uso de los miembros del Core Team. Los mensajes pueden ser enviados a sta lista cuando un problema serio relacionado con FreeBSD necesite un estudio o arbitraje de alto nivel.
FREEBSD-CURRENT Debates sobre el uso de FreeBSD-current sta es la lista de correo para usuarios de freebsd-current. Esto incluye advertencias sobre nuevas caractersticas a ser includas en -current que afecten a todos los usuarios e instrucciones paso por paso que deben ser seguidas para mantener una instalacin -current. Cualquier usuario de current debera suscribirse a sta lista. sta es una lista de correo tcnica en la que se esperan contenidos estrictamente tcnicos.
FREEBSD-CURRENT-DIGEST Debates sobre el uso de FreeBSD-current ste es el compendio de la lista freebsd-current. Consiste en que todos los mensajes enviados a freebsd-current son empaquetados y enviados peridicamente como un solo mensaje. sta lista es de Slo-Lectura y no debera recibir correo.
FREEBSD-DOC Proyecto de Documentacin sta lista de correo est destinada a discusiones relacionadas con cuestiones y proyectos relacionados con la creacin de documentacin de FreeBSD. Los miembros de sta lista son llamados El Proyecto de Documentacin de FreeBSD. La lista es abierta; suscrbase y contribuya!.
FREEBSD-FIREWIRE Firewire (iLink, IEEE 1394) sta lista de correo es para debates sobre diseo e implementacin del subsistema Firewire(tambin conocido como IEEE o iLink) en FreeBSD. Los temas incluyen de modo especco los standards, dispositivos de bus y
226
Apndice A. Recursos en Internet sus protocolos, adaptacin de placas base, tarjetas y chips y la arquitectura e implementacin de cdigo para soporte nativo.
FREEBSD-FS Sistemas de cheros Debates acerca del sistema de cheros de FreeBSD. sta es una lista de correo tcnica en la que se espera un contenido estrctamente tcnico.
FREEBSD-GNOME GNOME Debates acerca del Entorno de Escritorio GNOME para sistemas de cheros FreeBSD. sta es una lista de correo tcnica en la que se espera un contenido estrictamente tcnico.
FREEBSD-IPFW Cortafuegos IP ste es el foro de discusin tcnica dedicado al rediseo del cdigo del cortafuegos IP de FreeBSD. sta es una lista de correo tcnica en la que se espera un contenido exclusivamente tcnico.
FREEBSD-IA64 Porte de FreeBSD a IA64 sta es una lista de correo tcnica para personas que estn trabajando en el porte de FreeBSD a la plataforma IA-64 de Intel, para intercambiar problemas y soluciones alternativas. Cualquier persona interesada en seguir las discusiones tcnicas es bienvenida.
FREEBSD-ISDN Comunicaciones RDSI sta es la lista de correo para quienes participan en el desarrollo del soporte RDSI para FreeBSD.
FREEBSD-JAVA Desarrollo Java sta es la lista de correo sobre el desarrollo de aplicaciones Java importantes para FreeBSD y el porte y mantenimiento de los JDK.
227
Apndice A. Recursos en Internet FREEBSD-HACKERS Debates tcnicos ste es un foro de debate tcnico relacionado con FreeBSD. sta es la lista de correo tcnica primaria. Es para personas que estn trabajando en FreeBSD, solucionando problemas o para discutir soluciones alternativas. Las personas interesadas en seguir las discusiones tcnicas tambin son bienvenidas. sta es una lista de correo tcnica en la cual se espera un contenido estrictamente tcnico.
FREEBSD-HACKERS-DIGEST Technical discussions ste es el compendio de la lista de correo freebsd-hackers. Consiste en que todo el correo enviado a freebsd-hackers es empaquetado y enviado en un slo mensaje. sta lista es de Slo Lectura y no se debera enviar correo a ella.
FREEBSD-HARDWARE Discusiones generales sobre hardware y FreeBSD Discusiones generales sobre tipos de hardware que funciona en FreeBSD, diferentes problemas y sugerencias sobre qu comprar y qu no.
FREEBSD-HUBS Rplicas Avisos y discusiones para personas que administran sitios rplica.
FREEBSD-INSTALL Discusiones sobre la instalacin sta lista de correo es para discusiones sobre el desarrollo de la instalacin de FreeBSD en prximas versiones.
FREEBSD-ISP Cuestiones de Proveedores de Servicios de Internet sta lista de correo es para debates sobre temas relevantes para Proveedores de Servicios de Internet (ISP) que usan FreeBSD. Es una lista de correo tcnica y en ella se esperan contenidos estrctamente tcnicos.
FREEBSD-NEWBIES Debates sobre actividades de los novatos Cubrimos todas las actividades de los novatos que no quedan cubiertas por ninguna de las otras, incluyendo: aprendizaje autodidacta y tcnicas de resolucin de problemas, bsqueda y uso de recursos y peticiones de
228
Apndice A. Recursos en Internet ayuda, cmo usar las listas de correo y qu lista usar, charla en general, meter la pata, jactarse, compartir ideas, historias, soporte moral (pero no tcnico) e implicacin en la comunidad FreeBSD. Usamos freebsd-questions para enviar nuestros problemas y peticiones de soporte y usamos freebsd-newbies para conocer a gente que est haciendo lo mismo que nosotros cuando ramos novatos.
FREEBSD-PLATFORMS Porte a plataformas no Intel Cuestiones sobre plataformas diversas, debates generales, y propuestas para portes de FreeBSD para plataformas no Intel. Es una lista de correo tcnica y en ella se esperan contenidos estrctamente tcnicos.
FREEBSD-POLICY Decisiones de funcionamiento interno del Core Team Es una lista de slo lectura y bajo volumen destinada a la toma de decisiones de funcionamento interno del Core Team de FreeBSD.
FREEBSD-PORTS Debates sobre ports Debates acerca de la coleccin de ports ( /usr/ports)de FreeBSD, propuestas de aplicaciones a portar, modicaciones a la infraestructura de ports y coordinacin general de esfuerzos. sta es una lista de correo tcnica en la cual se esperan contenidos exclusivamente tcnicos.
FREEBSD-QUESTIONS Preguntas de los usuarios sta es la lista de correo para preguntas sobre FreeBSD. No debera enviar preguntas del estilo de cmo hacer a las listas tcnicas salvo que el contenido sea claramente tcnico.
FREEBSD-QUESTIONS-DIGEST Preguntas de los usuarios ste es el compendio de la lista de correo freebsd-questions. Consiste en que todos los mensajes enviados a freebsd-questions son empaquetados y enviados en un nico mensaje.
FREEBSD-SCSI Subsistema SCSI sta es la lista de correo para la gente que est trabajando en el subsistema SCSI de FREEBSD. sta es una lista de correo tcnica en la cual se esperan contenidos puramente tcnicos.
229
Apndice A. Recursos en Internet FREEBSD-SECURITY Cuestiones de seguridad Cuestiones de seguridad informtica (DES, Kerberos, problemas de seguridad conocidos y sus soluciones, etc.) sta es una lista de correo tcnica en la que se esperan contenidos puramente tcnicos.
FREEBSD-SECURITY-NOTIFICATIONS Avisos de seguridad Avisos de problemas de seguridad en FreeBSD y sus soluciones. sta no es una lista de discusin. La lista de discusin es freebsd-security.
FREEBSD-SMALL Uso de FreeBSD en aplicaciones embebidas En sta lista se debaten temas relacionados con instalaciones de FreeBSD inusualmente pequeas y embebidas. sta es una lista de correo tcnica en la cual se esperan contenidos estrictamente tcnicos.
FREEBSD-STABLE Debates sobre el uso de FreeBSD-stable sta es la lista de correo para los usuarios de freebsd-stable. Incluye avisos sobre nuevas caractersticas a inclur en -stable que afectan a los usuarios e instrucciones paso por paso para permanecer usando la versin -stable. Cualquiera que utilice FreeBSD stable debera suscribirse a sta lista. sta es una lista tcnica en la que se esperan contenidos puramente tcnicos.
FREEBSD-STANDARDS Cumplimiento de C99 & POSIX ste es el foro para debates tcnicos relacionadas con el Cumplimiento de las normas C99 y POSIX en FreeBSD.
FREEBSD-USER-GROUPS Lista de coordinacin de de grupos de usuarios sta es la lista de correo de los coordinadores de los grupos locales de usuarios para discutir cuestiones entre ellos o con personas elegidas del Core Team. sta lista de correo debera estar limitada a resmenes de reuniones y coordinacin de proyectos que ataen a los Grupos de Usuarios.
FREEBSD-VENDORS VENDORS
230
Apndice A. Recursos en Internet Debates para la coordinacin entre el Proyecto FreeBSD y Distribuidores de software y hardware para FreeBSD.
comp.unix (news:comp.unix) comp.unix.questions (news:comp.unix.questions) comp.unix.admin (news:comp.unix.admin) comp.unix.programmer (news:comp.unix.programmer) comp.unix.shell (news:comp.unix.shell) comp.unix.user-friendly (news:comp.unix.user-friendly) comp.security.unix (news:comp.security.unix) comp.sources.unix (news:comp.sources.unix) comp.unix.advocacy (news:comp.unix.advocacy) comp.unix.misc (news:comp.unix.misc) comp.bugs.4bsd (news:comp.bugs.4bsd) comp.bugs.4bsd.ucb-xes (news:comp.bugs.4bsd.ucb-xes) comp.unix.bsd (news:comp.unix.bsd)
231
comp.windows.x.announce (news:comp.windows.x.announce) comp.windows.x.intrinsics (news:comp.windows.x.intrinsics) comp.windows.x.motif (news:comp.windows.x.motif) comp.windows.x.pex (news:comp.windows.x.pex) comp.emulators.ms-windows.wine (news:comp.emulators.ms-windows.wine)
http://www.FreeBSD.org/ (../../../../index.html) Servidor Central. http://www.au.FreeBSD.org/ Australia/1. http://www2.au.FreeBSD.org/ Australia/2. http://www3.au.FreeBSD.org/ Australia/3. http://freebsd.itworks.com.au/ Australia/4. http://www.br.FreeBSD.org/www.freebsd.org/ Brasil/1. http://www2.br.FreeBSD.org/www.freebsd.org/ Brasil/2. http://www3.br.FreeBSD.org/ Brasil/3. http://www.bg.FreeBSD.org/ Bulgaria. http://www.ca.FreeBSD.org/ Canad/1. http://www2.ca.FreeBSD.org/ Canad/2. http://www3.ca.FreeBSD.org/ Canad/3. http://www.cn.FreeBSD.org/ China. http://www.cz.FreeBSD.org/ Repblica Checa. http://www.dk.FreeBSD.org/ Dinamarca. http://www.ee.FreeBSD.org/ Estonia. http://www..FreeBSD.org/ Finlandia. http://www.fr.FreeBSD.org/ Francia. http://www.de.FreeBSD.org/ Alemania/1. http://www1.de.FreeBSD.org/ Alemania/2. http://www2.de.FreeBSD.org/ Alemania/3. http://www.gr.FreeBSD.org/ Grecia. http://www.hu.FreeBSD.org/ Hungra. http://www.is.FreeBSD.org/ Islandia. http://www.ie.FreeBSD.org/ Irlanda. http://www.jp.FreeBSD.org/www.FreeBSD.org/ Japn.
232
http://www.kr.FreeBSD.org/ Corea/1. http://www2.kr.FreeBSD.org/ Corea/2. http://www.lv.FreeBSD.org/ Letonia. http://rama.asiapac.net/freebsd/ Malasia. http://www.nl.FreeBSD.org/ Holanda/1. http://www2.nl.FreeBSD.org/ Holanda/2. http://www.no.FreeBSD.org/ Noruega. http://www.nz.FreeBSD.org/ Nueva Zelanda. http://www.pl.FreeBSD.org/ Polonia/1. http://www2.pl.FreeBSD.org/ Polonia/2. http://www.pt.FreeBSD.org/ Portugal/1. http://www2.pt.FreeBSD.org/ Portugal/2. http://www3.pt.FreeBSD.org/ Portugal/3. http://www.ro.FreeBSD.org/ Rumana. http://www.ru.FreeBSD.org/ Rusia/1. http://www2.ru.FreeBSD.org/ Rusia/2. http://www3.ru.FreeBSD.org/ Rusia/3. http://www4.ru.FreeBSD.org/ Rusia/4. http://freebsd.s1web.com/ Singapur. http://www.sk.FreeBSD.org/ Repblica Eslovaca. http://www.si.FreeBSD.org/ Eslovenia. http://www.es.FreeBSD.org/ Espaa. http://www.za.FreeBSD.org/ Sudfrica/1. http://www2.za.FreeBSD.org/ Sudfrica/2. http://www.se.FreeBSD.org/ Suecia. http://www.ch.FreeBSD.org/ Suiza. http://www.tw.FreeBSD.org/www.freebsd.org/data/ Taiwan. http://www.tr.FreeBSD.org/ Turqua. http://www.ua.FreeBSD.org/www.freebsd.org/ Ucrania/1. http://www2.ua.FreeBSD.org/ Ucrania/2. http://www4.ua.FreeBSD.org/ Ucrania/Crimea. http://www.uk.FreeBSD.org/ Reino Unido/1. http://www2.uk.FreeBSD.org/ Reino Unido/2. http://www3.uk.FreeBSD.org/ Reino Unido/3. http://www6.FreeBSD.org/ USA/Oregn.
233
http://www2.FreeBSD.org/ USA/Tejas.
CVS de slo lectura, espacio Brian Somers web personal, correo <brian@FreeBSD.org> electrnico Correo electrnico, espacio Lee Johnston web, FTP Annimo <lee@uk.FreeBSD.org>
dogma.freebsd-uk.eu.org
Telnet/FTP/SSH
234
22.1. Responsables
22.1.1. Responsable de Seguridad de FreeBSD <security-officer@freebsd.org>
FreeBSD Security Officer <security-officer@freebsd.org> Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11 -----BEGIN PGP PUBLIC KEY BLOCK----Version: 2.6.3i mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7 PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql 3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A 3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD /REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb 5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS 9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT 0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1 lw== =ipyA -----END PGP PUBLIC KEY BLOCK-----
235
236
63 48 88 0A C4 97 FD 49
237
238
239
240
241
F6 DB 02 92 6D F5 58 8A
242
243
Colofn
Este libro es el resultado del trabajo de cientos de colaboradores del Proyecto de Documentacin de FreeBSD. El texto esta escrito en SGML de acuerdo al DTD DocBook y es formateado automticamente en diferentes formatos de presentacin usando Jade, una herramienta DSSSL de software libre. Se han usado las hojas de estilo DSSSL de Norm Walsh con personalizacin de niveles para las instrucciones de presentacin de Jade. La versin impresa de este documento no hubiese sido posible sin los programas TeX de Donald Knuth, LaTeX de Leslie Lamport y JadeTeX de Sebastian Rahtz.
244