introducciÓn a freebsd - ghostwikie-ghost.deusto.es/docs/freebsd.pdf · coptflags=-o -pipe (flags...

38
INTRODUCCIÓN A FREEBSD Oinatz Aspiazu Copyleft – All rights reversed

Upload: vuongminh

Post on 09-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

INTRODUCCIÓN A FREEBSD

Oinatz Aspiazu Copyleft – All rights reversed

INTRODUCCIÓN

BSD "Berkeley Software Distribution," Unix programado en la Universidad de California en Berkeley.

Originalmente derivado de AT&T's Unix.

Por los 80, TCP/IP en BSD. SO implantado en los ordenadores del Dpto de Defensa americano

4.3BSD + Berkeley Networking Release 2 (Net/2) SO libre de código de AT&T

Port a 386->386BSD . Base de los *BSD actuales

Problemas legales -> 4.4BSD Lite, colabora gente de todas partes

FreeBSD

1º de todos los *BSD libres

Más amigable para el usuario

Centrado en arquitecturas x86 soportando poco otras arquitecturas

Mayor colección de ports

NetBSD

Extremadamente portable.

Soporta múltiples arquitecturas. Desde palmtops, consolas a grandes servidores.

Mejores rendimientos en temas de red

OpenBSD

Se centra en la seguridad Muy bueno para servidoresSoporta poco hardware

Otros *BSD

Wind River's BSD/OS

Comercial. Basado en 386BSD y 4.4BSD

Darwin

Corazón de Apple OS X

PicoBSD

Entra en un diskette

Proyecto no actualizado desde 1998

Open Source. Es posible compilar y ejecutar Darwin en máquinas x86

Otras cosas

*BSD , sistemas operativos completos, no sólo el kernel. Mantenidos por un grupo de programadores (<> distro)

No hay 1 persona que controle el contenido de ninguna parte del sistema *BSD

Hay un repositorio donde están los fuentes completos de todo el sitema.

Posible acceder a cualquier versión del sistema por número de release o fecha

Licencia BSD permite también distribuciones sólo binarias. Atractivo para aplicaciones embebidas

Emulación linux prácticamente perfecta

*BSD vs GNU/Linux

BSD puede ejecutar código de Linux. Linux no puede ejecutar código de BSD. (Mayor software en BSD)

BSD tiene mejor reputación como sistema más fiable debido al código base más maduro

*BSD puede dar una diferencia notable en rendimiento con respecto a GNU/Linux

Si estás contento con GNU/Linux probablemente no hay una buena explicación para cambiarse a *BSD. Prueba y decide tú mismo ;-)

*BSD - ramas

CURRENT – Es la versión en desarrollo del sistema. FreeBSD y OpenBSD sufijo -current ; NetBSD sufijo una letra (p.ej NetBSD 1.4.3G)

RELEASE – Versión que sale entre 2 y 4 veces por año (cdrom, ftp,...). En los 3 sistemas. NetBSD también tiene 'patch' releases indicando un 3er dígito (NetBSD 1.4.2)

STABLE. Versión FreeBSD release después de aplicar parches. En NetBSD y OpenBSD las versiones finales se sigue llamando release

(linux ramas stable, development kernel)

Preparando la instalación

FreeBSD necesita una partición primaria

Preparando windoze

Defragmentar, redimensionar partición/es

Preparando gnu/linux

Kernel: Filesystems -> Miscellaneous fillesystems : <M> UFS filesystem support (como módulo)

[*] UFS file system write support (DANGEROUS)

(Escritura en UFS desde gnu/linux no funciona)

Redimensionar partición/es de gnu/linux (parted)

Preparando gnu/linux (II)

Swap

FreeBSD y linux pueden compartir la swap de FreeBSD

Añadir (a /etc/rc.d/rc.sysinit Redhat): awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab

(Antes de swapon -a)

/dev/hdaX none swap sw 0 0

/etc/fstab:

Lilo (/etc/lilo.conf)

other=/dev/hdXY (X: letra a,b,.. dependiendo del disco / controladora, Y: nº partición primaria de FreeBSD )table=/dev/hdX (X: letra a,b,...)label=FreeBSD

(X, nº partición swap)

Instalando FreeBSD-release

Configuración kernel inicial

Instalando FreeBSD-release (II)

Menú principal sysinstall

Instalando FreeBSD-release (III)

Menú Options

Instalando FreeBSD-release (III)

Crear Slice FreeBSD

Instalando FreeBSD-release (IV)

Boot Manager (coger 'None' si está lilo/grub instalado)

Instalando FreeBSD-release (V)

Crear particiones dentro de nuestro slice

Instalando FreeBSD-release (VI)

/ , root. 100Mb tamaño razonable. Resto de particiones cuelgan de ésta. FreeBSD instala unos 40Mb aquí.

Swap. 2-3x Mb RAM .

/var . 50Mb. Contiene archivos que están constantemente variando.

/usr. Resto del disco. Resto de nuestros archivos.

Softupdates. Acelera lectura/escritura disco

Instalando FreeBSD-release (VII)

Escogiendo paquetes (fuentes, ports, ...)

Instalando FreeBSD-release (VIII)

Escoger desde dónde instalar (cdrom, ftp,...)

Algunas preguntas posteriores sobre tipo seguridad, red, consola, zona horaria, ratón.

Salir de la instalación y arrancar el sistema.

Arranque

2 tipos de arranque en sistemas *ix (BSD y System V)

(Slackware)

Arranque (II)

Pausa inicial (opciones)

dmesg

Copyright (c) 1992-2003 The FreeBSD Project.Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994

The Regents of the University of California. All rights reserved.FreeBSD 4.9-STABLE #2: Mon Jan 26 23:19:32 CET 2004 root@FreeBox:/usr/obj/usr/src/sys/GENERICTimecounter "i8254" frequency 1193182 HzCPU: Pentium III/Pentium III Xeon/Celeron (517.47-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x673 Stepping = 3 Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>real memory = 268369920 (262080K bytes)avail memory = 257351680 (251320K bytes)Preloaded elf kernel "kernel" at 0xc03bb000.Preloaded userconfig_script "/boot/kernel.conf" at 0xc03bb09c.VESA: v3.0, 4096k memory, flags:0x1, mode table:0xc0345c82 (1000022)

VESA: NVidiaPentium Pro MTRR support enabledmd0: Malloc diskUsing $PIR table, 8 entries at 0xc00fdc30apm0: <APM BIOS> on motherboardapm0: found APM BIOS v1.2, connected at v1.2npx0: <math processor> on motherboardnpx0: INT 16 interfacepcib0: <Host to PCI bridge> on motherboardpci0: <PCI bus> on pcib0agp0: <VIA 82C691 (Apollo Pro) host to PCI bridge> mem 0xe0000000-0xe3ffffff at device 0.0 on pci0pcib2: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0pci1: <PCI bus> on pcib2pci1: <NVidia GeForce DDR graphics accelerator> at 0.0 irq 11isab0: <VIA 82C596B PCI-ISA bridge> at device 7.0 on pci0isa0: <ISA bus> on isab0atapci0: <VIA 82C596 ATA66 controller> port 0xe000-0xe00f at device 7.1 on pci0ata0: at 0x1f0 irq 14 on atapci0ata1: at 0x170 irq 15 on atapci0uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0usb0: <VIA 83C572 USB controller> on uhci0usb0: USB revision 1.0uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1uhub0: 2 ports with 2 removable, self powered

viapropm0: SMBus I/O base at 0x5000viapropm0: <VIA VT82C596A Power Management Unit> port 0x5000-0x500f at device 7.3 on pci0viapropm0: SMBus revision code 0x0smb0: <SMBus general purpose I/O> on smbus0pcm0: <Creative EMU10K1> port 0xe800-0xe81f irq 5 at device 10.0 on pci0pcm0: <SigmaTel STAC9721/23 AC97 Codec>pcib1: <Host to PCI bridge> on motherboardpci2: <PCI bus> on pcib1orm0: <Option ROM> at iomem 0xc0000-0xc97ff on isa0pmtimer0 on isa0fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0fdc0: FIFO enabled, 8 bytes thresholdfd0: <1440-KB 3.5" drive> on fdc0 drive 0atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0kbd0 at atkbd0psm0: <PS/2 Mouse> irq 12 on atkbdc0psm0: model IntelliMouse Explorer, device ID 4vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0sc0: <System console> at flags 0x100 on isa0sc0: VGA <16 virtual consoles, flags=0x300>sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0sio0: type 16550Asio1 at port 0x2f8-0x2ff irq 3 on isa0sio1: type 16550Aad0: 38166MB <ST340810A> [77545/16/63] at ata0-master UDMA66acd0: CD-RW <LITE-ON LTR-52246S> at ata1-master PIO4

Kernel

#/usr/src/make kernel (por defecto GENERIC)

( make buildkernel KERNCONF=MIKERNEL + make installkernell KERNCONF=MIKERNEL)

/sys/i386/conf/GENERIC (configuración kernel genérica)

- Compilación/instalación

- Configuración

/sys/i386/conf/LINT (configuración kernel con todos los drivers)

- Errores compilando (ej. usb_ether() )

# 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 you've 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,v1.246.2.56 2003/12/19 22:52:44 jhb Exp $

machine i386cpu I686_CPUoptions CPU_ENABLE_SSEoptions CPU_FASTER_5X86_FPUoptions USER_LDTident GENERICmaxusers 0

#options MSDOSFS #MSDOS Filesystemoptions CD9660 #ISO 9660 Filesystemoptions CD9660_ROOT #CD-ROM usable as root, CD9660 required

# Power management support (see LINT for more options)device apm0 at nexus? disable flags 0x20 # Advanced Power Management

# syscons is the default console driverdevice sc0 at isa? flags 0x100options SC_PIXEL_MODEoptions SC_TWOBUTTON_MOUSE

# Pseudo devices - the number indicates how many units to allocate.pseudo-device ppp 1 # Kernel PPPpseudo-device tun # Packet tunnel.pseudo-device speaker # Speaker

# Sonidodevice pcm

# USB supportdevice uhci # UHCI PCI->USB interfacedevice usb # USB Bus (required)device ugen # Genericdevice ulpt # Printer

Módulos (/modules/*.ko)

- Ventajas

Kernel más pequeño y optimizado

Posibilidad de cargar y descargar evitando tener la parte correspondiente en memoria todo el rato.

Carga, kldload

Descarga, kldunload

Información sobre los módulos cargados, kldstat

# kldstat Id Refs Address    Size     Name  1    3 0xc0100000 3021a8   kernel  3    1 0xc1279000 10000    linux.ko  4    1 0xc129d000 3000     daemon_saver.ko

# kldload msdos

# kldstat Id Refs Address    Size     Name  1    4 0xc0100000 3021a8   kernel  3    1 0xc1279000 10000    linux.ko  4    1 0xc129d000 3000     daemon_saver.ko  5    1 0xc12fd000 c000     msdos.ko

# kldunload msdos

# kldstat Id Refs Address    Size     Name  1    3 0xc0100000 3021a8   kernel  3    1 0xc1279000 10000    linux.ko  4    1 0xc129d000 3000     daemon_saver.ko - Carga automática (/boot/loader.conf):

msdos_load="YES"

/boot/defaults/loader.conf (Todas las líneas disponibles)

#man kld

Alternativa, no poner nada.Al montar partición dos, busca el módulo en /modules y lo carga. Al desmontar, el módulo sigue en memoria.

Recompilando el sistema (make world)

Posibilidad de optimizar para los flags de tu /etc/make.conf

/usr/src #make -j4 buildworld

Ej. /etc/make.conf :CPUTYPE=p3 (tipo cpu)CFLAGS=-O2 -pipe (flags compilador de C, pipe acelerar compilación)CXXFLAGS+=-O3 (flags compilador de C++)COPTFLAGS=-O -pipe (flags para compilar el kernel)NO_MODULES=true (evitar recompilar módulos al construir un kernel) MODULES_WITH_WORLD=true (recompilar módulos en 'make world')NOPROFILE=true (no compilar las 'profiled libraries')

WITH_PNG_MMX=yes (soporte MMX en la librería png)OPT_ARCH=586 (optimización para Pentium en paquete mpg123)

-j4 , varios procesos de compilación simultánemamente. Aunque no haya varias CPUs optimiza tiempo->cuello de botella se suele formar con el acceso a disco

/usr/src # make installworld

PackagesInstalando un paquete (pkg_add)

# ftp -a ftp2.FreeBSD.orgConnected to ftp2.FreeBSD.org.220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.331 Guest login ok, send your email address as password.230-230- This machine is in Vienna, VA, USA, hosted by Verio.230- Questions? E-mail [email protected] 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.tgzlocal: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz200 PORT command successful.150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).100% |**************************************************| 92375 00:00 ETA226 Transfer complete.92375 bytes received in 5.60 seconds (16.11 KB/s)ftp> exit# pkg_add lsof-4.56.4.tgz

# pkg_add -r lsof

Descarga el paquete y lo añade sin intervenir el usuario

# pkg_infocvsup-16.1 A general network file distribution system optimized for CVdocbook-1.2 Meta-port for the different versions of the DocBook DTD...

Describe los paquetes instalados

# pkg_versioncvsup =docbook =...

Compara la versión de los paquetes instalados con la versión encontrada en el árbol de ports

(Símbolos: =,>,<, ?, *)

? paquete no se encuentra en el índice de ports* múltiples versiones de un paquete

# pkg_delete xchat-1.7.1

Borra un paquete instalado

Toda la información de los paquetes se guarda en /var/db/pkg. La lista de paquetes instalados y sus descripciones están en ese directorio

Ports

Colección de ports, conjunto de Makefiles, parches y descripciones en /usr/ports

Cada port tiene asociado:- Makefile. Reglas compilación de una aplicación y dónde debe ser instalada- (Archivo) distinfo. Información de achivos a descargar y checksums

- (Directorio) files. Parches

- (Archivo) pkg_desc. Descripción del programa detallada

- (Archivo) pkg_plist. Lista de los archivos que van a ser instalados y desinstalados al remover un programa

Búsqueda:

# whereis lsoflsof: /usr/ports/sysutils/lsof

Fuentes guardadas en /usr/ports/distfiles

Búsqueda(2):# cd /usr/ports# make search name=lsofPort: lsof-4.56.4Path: /usr/ports/sysutils/lsofInfo: Lists information about open files (similar to fstat(1))Maint: [email protected]: sysutilsB-deps: R-deps:Instalación:# cd /usr/ports/directorio# make (all) install clean (clean borra directorio trabajo work)

Desinstalación / Reinstalación:

# cd /usr/ports/directorio# make deinstall (make reinstall)

Si hemos hecho 'make clean' y 'make deinstall' , 'make reinstall' no funciona. Para desinstalar después de 'make clean' hacer pkg_deleteActualización (portupgrade)

Cuentas de usuario

#adduser -s -config_create (crear fichero inicial configuración)

adduser -v : Añadir nuevos usuarios.rmuser : Eliminar usuarios.chpass : Modificar la base de datos de usuarios.passwd : Cambiar contraseñas de usuario.pw : Modificar cualquier aspecto de las cuentas de usuario.

(grupo wheel, poder hacer 'su')

/etc/fstab (tabla particiones)

Dispositivo, punto montaje, opciones

/etc/rc.conf

Mapa caracteres, firewall, apm, ...

/etc/ppp/ppp.conf (inet)

/usr/share/examples/ppp

XFree86

Instalar desde el cd, paquetes o colección de ports

#xf86config

(fichero inicial configuración)

#vi /etc/X11/XF86Config

(ajustar ratón, tarjeta gráfica, teclado, monitor,...)

Algunos enlaces de interés

http://www.freebsd.orghttp://www.netbsd.orghttp://www.openbsd.orghttp://www.daemonnews.orghttp://www.slashdot.org/bsdhttp://www.eldemonio.orghttp://www.tldp.org/HOWTO/Linux+FreeBSD-4.html