The NetBSD Project
Introducción a NetBSD y pkgsrc
Julio M. Merino Vidal <
[email protected]>
Partyzip@ 2005
Contenido
NetBSD vs. Linux.
Un poco de historia.
Objetivos.
Política de versiones.
Hilos POSIX.
Multiprocesador.
Sistemas de archivos.
Summer of Code.
Cómo obtener NetBSD.
Compilación del sistema.
pkgsrc y syspkg.
Dónde obtener ayuda.
Cómo reportar fallos.
Preguntas.
NetBSD vs. Linux
Sistema completo.
Basado en 4.4BSD.
Licencia BSD.
Núcleo más base GNU.
Escrito desde cero.
Licencia GPL.
Un poco de historia (1/4)
Fork de 4.3BSD
Networking/2:
386BSD.
Motivo:
– Frustración en la
integración de parches.
Un poco de historia (2/4)
386BSD deriva en:
– NetBSD (portabilidad)
– FreeBSD (i386)
Primera versión:
– NetBSD 0.8
– 20 de abril de 1993
Un poco de historia (3/4)
Integración de las
mejoras en 4.4BSD
(Lite).
NetBSD 1.0 ve la luz
26 de octubre de 1994.
Un poco de historia (4/4)
Hasta la fecha:
– 23 versiones publicadas en total.
– 10 de ellas versiones mayores.
Última versión:
– NetBSD 2.0.2, 14 de abril de 2005.
Objetivos (1/5)
Diseño correcto:
– Posiblemente el objetivo más importante.
– Ejemplo: abstracción del acceso al bus del sistema.
– “It doesn't work unless it's right”.
Completitud del sistema:
– Protocolos de red.
– Utilidades de desarrollo.
– Sistema de paquetes.
Objetivos (2/5)
Estabilidad:
– Sistema usado en producción.
Rapidez:
– Plataformas antiguas vs. nuevas.
– Micro vs. macro-optimizaciones.
Objetivos (3/5)
Libre distribución:
– Uso de la licencia BSD.
– Algunas herramientas añadidas son GPL.
Transportable:
– División MI/MD.
● Ejemplo: fxp(4) funciona sobre alpha, i386, macppc, etc.
– 40 arquitecturas soportadas.
Objetivos (4/5)
Interoperable:
– Emulación binaria: Linux, FreeBSD, Solaris, etc.
– Emuladores: wine, qemu, doscmd, etc.
– Sistemas de archivos: FFS, Ext2, FAT, ISO 9660, etc.
– Protocolos de red: TCP/IP, NFS, Appletalk, etc.
Objetivos (5/5)
Seguimiento de estándares:
– Extremadamente cercano a POSIX.1.
● (Nunca lo será oficialmente: es muy caro).
– Encaminado hacia POSIX.2.
– Estándares de facto: BSD y Linux.
– X Window System (X11R6).
Política de versiones (1/4)
NetBSD-current:
– Versión de desarrollo.
– Posiblemente inestable.
– HEAD del CVS.
– Numeración: N.99.M:
● N: Número de la última versión mayor.
● M: Número de versión del la ABI del núcleo.
● Ejemplos: 2.99.1, 2.99.2, 3.99.5, etc.
Política de versiones (2/4)
Versiones oficiales:
– Mayores: 2.0, 3.0, etc.
● Nuevas infraestructuras, controladores, etc.
– Menores: 2.1, 2.2, etc.
● Arreglos de múltiples tipos.
● Nuevos controladores ya probados y estabilizados.
– Críticas: 2.0.1, 2.0.2, etc.
● Arreglos de seguridad y/o estabilidad importantes.
Política de versiones (3/4)
Ramas de mantenimiento:
– netbsd-M:
● M: Número de versión mayor.
● Contiene las versiones M.x (ej. M.0, M.1, etc.).
– netbsd-M-N:
● M: Número de versión mayor.
● N: Número de versión menor.
● Contiene las versiones M.N.y (ej. M.N.0, M.N.1, etc).
Política de versiones (4/4)
Hilos POSIX
Soporte en el núcleo (17 de enero de 2003).
Basado en Scheduler Activations:
– Modelo N:M.
Librería para desarrollo de aplicaciones:
– Estándar POSIX.
– libpthread.
Multiprocesador
Soporte en: alpha, amd64, i386, macppc, sparc64,
sparc, vax.
Limitaciones:
– Big lock: sólo un proceso en el núcleo.
– Hilos de un proceso en un sólo procesador.
Opción MULTIPROCESSOR en el núcleo.
Sistemas de archivos (1/7)
Fast File-System (FFS):
– UFS con mejoras de velocidad.
– Soft updates: Escritura asíncrona de meta-datos.
● Intenta mantener la consistencia.
– Opción BUFQ_READPRIO.
– Opción UFS_DIRHASH.
– Sin dietario.
Sistemas de archivos (2/7)
Fast File-System v2 (FFSv2):
– Basado en FFS.
– Originario de FreeBSD.
– Soporte de discos y archivos muy grandes (64 bits).
– Soporte para ACLs (aún no disponible en NetBSD).
Sistemas de archivos (3/7)
Memory File-System (MFS):
– FFS sobre páginas de memoria virtual.
– Idea original y demostración del sistema de capas.
– Estructuras de datos y algoritmos poco eficientes.
– Necesidad de un reemplazo.
Sistemas de archivos (4/7)
Log-structured File-System (LFS):
– Con dietario.
– Agrupa las escrituras en disco.
– Necesidad de “limpieza” periódica.
De red:
– NFSv3.
– SMB.
– Coda.
Sistemas de archivos (5/7)
Compatibilidad con otros sistemas:
– FAT12, FAT16 y FAT32.
– NTFS (sólo lectura; escritura muy limitada).
– Ext2.
– ISO 9660.
Sistemas de archivos (6/7)
Por capas:
– Null: duplicación de un árbol.
– Union: mezcla de dos árboles.
– Portal: tcp, fs, rfilter, wfilter.
– Overlay: útil como ejemplo.
– Umap: Cambio de UIDs/GIDs dinámico.
Sistemas de archivos (7/7)
En desarrollo:
– UDF (lectura y escritura).
– Dietario para FFS.
– Adaptación de ReiserFS y XFS (sólo FreeBSD).
– Otros (dentro del Summer of code).
Summer of code (1/9)
Iniciativa de Google.
8 proyectos para NetBSD.
Proyecto NetBSD-SoC:
– Punto de encuentro para los 8 proyectos.
– http://NetBSD-SoC.sourceforge.net/
Summer of code (2/9)
Sistema de archivos eficiente en memoria
(tmpfs):
– FFS no está diseñado para trabajar en memoria.
– Necesidad de un reemplazo para MFS.
– Menor consumo de recursos posible.
Summer of code (3/9)
Soporte de caracteres anchos en curses (wcurses):
– Necesidad de internacionalización.
– curses utiliza bytes.
– Posibles problemas de velocidad.
Summer of code (4/9)
OpenPGP con licencia BSD (bpg):
– Implementación del estándar OpenPGP.
– Necesario para proporcionar archivos firmados.
– Licencia BSD.
– Reemplazo de GnuPG:
● Complicado de usar.
● Licencia GPL.
Summer of code (5/9)
Zeroconf (zeroconf):
– Configurar una red IP:
● Sin servidores.
● De forma automática.
– Implementación de Zeroconf para NetBSD.
Summer of code (6/9)
Pruebas de regresión (regress):
– Probar el correcto funcionamiento del sistema.
– Evitar regresiones durante modificaciones.
– Automatizar las pruebas existentes.
Summer of code (7/9)
Sistemas de archivos en espacio de usuario
(userfs):
– Implementación de sistemas de archivos en espacio de
usuario.
– Similar a FUSE de Linux.
Summer of code (8/9)
Controlador de red NDIS (ndis):
– Necesidad de uso del hardware.
– Especificaciones no disponibles.
– Sólo controladores propietarios.
Summer of code (9/9)
HFS+ (hfs):
– Implementación de HFS+ en el núcleo.
– Instalación de NetBSD de forma autónoma.
● Evitar el uso de hfsutils, Linux o Mac OS (X).
– Mejorar la interacción con Mac OS (X).
Cómo obtener NetBSD (1/3)
Escoger una réplica cercana; consultar:
– http://www.NetBSD.org/mirrors/
FTP
– ftp://ftp.réplica.org/pub/NetBSD/NetBSD-2.0.2/
– ftp://ftp.réplica.org/pub/NetBSD-daily/
– ftp://ftp.réplica.org/pub/iso/
Cómo obtener NetBSD (2/3)
CVS:
– Obtener los datos de la página de réplicas.
– Módulos disponibles:
● src: Código del sistema base.
● xsrc: Código de XFree86.
● htdocs: Código de la página web.
● pkgsrc: Sistema de paquetes.
Cómo obtener NetBSD (3/3)
Ejemplo de CVS:
– CVS_RSH=/usr/bin/ssh
export CVS_RSH
CVSROOT=:ext:
[email protected]:/cvsroot
export CVSROOT
cd /usr
cvs -q -P checkout -r netbsd-2 src
cvs -q -P checkout -r netbsd-2 xsrc
Compilación del sistema (1/4)
Fuentes de todo el sistema en /usr/src.
Compilación con make(1) complicada:
– Desincronización de las utilidades.
– Dificultad de compilar para otras plataformas.
– Muchos comandos a recordar.
Compilación del sistema (2/4)
build.sh:
– Guión para automatizar la compilación del sistema.
– Aparece en NetBSD 1.6.
– Facilita la compilación cruzada:
● Crea un toolchain completo para la plataforma deseada.
● Lo utiliza para compilar todo el sistema.
● Compilación de NetBSD desde otros sistemas.
– Un único comando que lo engloba todo.
Compilación del sistema (3/4)
Sintaxis:
– cd /usr/src && ./build.sh [opciones] <objetivos>
Opciones interesantes:
– -j <num>: Compilación en paralelo.
– -M <dir>: Usa 'dir' como directorio de trabajo.
– -m <nombre>: Selecciona la plataforma de destino.
– -N <nivel>: Selecciona el detalle de los mensajes.
– -x: Compila X11R6 junto al sistema.
Compilación del sistema (4/4)
Creación de un toolchain:
– build.sh tools
– build.sh -m mac68k tools
Compilación e instalación del sistema base:
– build.sh distribution install=/
Compilación de una distribución completa:
– build.sh release
– build.sh -R /archive/NetBSD-current release
Compilación de un núcleo (1/4)
Pasos a seguir con build.sh:
– Crear un archivo de configuración.
– Usar build.sh para compilar el kernel.
Pasos a seguir sin build.sh:
– Crear un archivo de configuración.
– Usar config(8) para configurar la compilación.
– Ejecutar make(1) en dicho directorio.
Compilación de un núcleo (2/4)
Crear un archivo de configuración:
– cp /usr/src/sys/arch/i386/conf/GENERIC \
/root/CUSTOM
– config -x /netbsd >/root/CUSTOM
Editar dicho archivo:
– Eliminar lo que no sea necesario.
– Cambiar parámetros estáticos.
Compilación de un núcleo (3/4)
Con build.sh:
– build.sh kernel=/root/CUSTOM
– Al finalizar, anotar el directorio de compilación.
Sin build.sh:
– config -s /usr/src -b /usr/obj/CUSTOM \
/root/CUSTOM
– cd /usr/obj/CUSTOM
– make
Compilación de un núcleo (4/4)
Instalación del núcleo:
– Cambiar al directorio de compilación.
– Ejecutar 'make install'.
Compilación de X11R6 (1/2)
Fuentes en /usr/xsrc.
Actualmente se usa XFree86 4.5.0.
XFree86 no permiten la compilación cruzada.
NetBSD proporciona /usr/src/x11:
– Conjunto de Makefiles (reachover build).
– Permiten la compilación cruzada.
– Permiten el uso de directorios de compilación.
Compilación de X11R6 (2/2)
A través de build.sh:
– Usar la opción '-x'.
– Añadir 'MKX11=yes' a /etc/mk.conf.
Ejemplo:
– cd /usr/src && ./build.sh -x release
Nota: también se compila todo el sistema.
pkgsrc (1/14)
Sistema de paquetes de NetBSD.
Origen: ports de FreeBSD (1995 ?).
Permite:
– Compilación e instalación de programas de terceros.
– Gestión de todos sus archivos.
– Gestión automática de dependencias.
Árbol centraliza
Comentarios de: Introducción a NetBSD y pkgsrc (0)
No hay comentarios