introducción a freebsd - e

Anuncio
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 servidores
Soporta poco hardware
Otros *BSD
Wind River's BSD/OS
Comercial. Basado en 386BSD y 4.4BSD
Darwin
Corazón de Apple OS X
Open Source. Es posible compilar y ejecutar Darwin
en máquinas x86
PicoBSD
Entra en un diskette
Proyecto no actualizado desde 1998
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)
/etc/fstab:
/dev/hdaX
none
swap
sw
0
(X, nº partición swap)
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
0
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/GENERIC
Timecounter "i8254" frequency 1193182 Hz
CPU: 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: NVidia
Pentium Pro MTRR support enabled
md0: Malloc disk
Using $PIR table, 8 entries at 0xc00fdc30
apm0: <APM BIOS> on motherboard
apm0: found APM BIOS v1.2, connected at v1.2
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
agp0: <VIA 82C691 (Apollo Pro) host to PCI bridge> mem 0xe00000000xe3ffffff at device 0.0 on pci0
pcib2: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on
pci0
pci1: <PCI bus> on pcib2
pci1: <NVidia GeForce DDR graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C596B PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <VIA 82C596 ATA66 controller> port 0xe000-0xe00f at device 7.1 on
pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2
on pci0
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
viapropm0: SMBus I/O base at 0x5000
viapropm0: <VIA VT82C596A Power Management Unit> port 0x5000-0x500f at
device 7.3 on pci0
viapropm0: SMBus revision code 0x0
smb0: <SMBus general purpose I/O> on smbus0
pcm0: <Creative EMU10K1> port 0xe800-0xe81f irq 5 at device 10.0 on pci0
pcm0: <SigmaTel STAC9721/23 AC97 Codec>
pcib1: <Host to PCI bridge> on motherboard
pci2: <PCI bus> on pcib1
orm0: <Option ROM> at iomem 0xc0000-0xc97ff on isa0
pmtimer0 on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0psm0: model IntelliMouse Explorer,
device ID 4
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ad0: 38166MB <ST340810A> [77545/16/63] at ata0-master UDMA66
acd0: CD-RW <LITE-ON LTR-52246S> at ata1-master PIO4
Kernel
- Compilación/instalación
#/usr/src/make kernel (por defecto GENERIC)
( make buildkernel KERNCONF=MIKERNEL
+ make installkernell KERNCONF=MIKERNEL)
- Configuración
/sys/i386/conf/GENERIC (configuración kernel genérica)
/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/kernelconfigconfig.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
cpu
options
options
options
ident
maxusers
i386
I686_CPU
CPU_ENABLE_SSE
CPU_FASTER_5X86_FPU
USER_LDT
GENERIC
0
#options
options
options
MSDOSFS
CD9660
CD9660_ROOT
#MSDOS Filesystem
#ISO 9660 Filesystem
#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 driver
device
sc0 at isa?
flags 0x100
options
SC_PIXEL_MODE
options
SC_TWOBUTTON_MOUSE
# Pseudo devices - the
pseudo-device ppp 1
pseudo-device tun
pseudo-device speaker
# Sonido
device
number indicates how many units to allocate.
# Kernel PPP
# Packet tunnel.
# Speaker
pcm
# USB support
device
uhci
device
usb
device
ugen
device
ulpt
#
#
#
#
UHCI PCI->USB interface
USB Bus (required)
Generic
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
1
3 0xc0100000
3
1 0xc1279000
4
1 0xc129d000
Size
3021a8
10000
3000
Name
kernel
linux.ko
daemon_saver.ko
# kldload msdos
# kldstat
Id Refs Address
1
4 0xc0100000
3
1 0xc1279000
4
1 0xc129d000
5
1 0xc12fd000
Size
3021a8
10000
3000
c000
Name
kernel
linux.ko
daemon_saver.ko
msdos.ko
Size
3021a8
10000
3000
Name
kernel
linux.ko
daemon_saver.ko
# kldunload msdos
# kldstat
Id Refs Address
1
3 0xc0100000
3
1 0xc1279000
4
1 0xc129d000
- Carga automática (/boot/loader.conf):
msdos_load="YES"
/boot/defaults/loader.conf (Todas las líneas disponibles)
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.
#man kld
Recompilando el sistema (make world)
Posibilidad de optimizar para los flags de tu /etc/make.conf
/usr/src #make -j4 buildworld
-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
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
OPT_ARCH=586
(soporte MMX en la librería png)
(optimización para Pentium en paquete mpg123)
Packages
Instalando un paquete (pkg_add)
# ftp -a ftp2.FreeBSD.org
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 [email protected].
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
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375
bytes).
100% |**************************************************| 92375
00:00 ETA
226 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_info
cvsup-16.1
A general network file distribution system optimized for CV
docbook-1.2
Meta-port for the different versions of the DocBook DTD
...
Describe los paquetes instalados
# pkg_version
cvsup
docbook
...
=
=
(Símbolos: =,>,<, ?, *)
? paquete no se encuentra en el índice de ports
* múltiples versiones de un paquete
Compara la versión de los paquetes instalados con la versión
encontrada en el árbol de ports
# 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
Fuentes guardadas en /usr/ports/distfiles
Búsqueda:
# whereis lsof
lsof: /usr/ports/sysutils/lsof
Búsqueda(2):
# cd /usr/ports
# make search name=lsof
Port:
lsof-4.56.4
Path:
/usr/ports/sysutils/lsof
Info:
Lists information about open files (similar to fstat
(1))
Maint: [email protected]
Index: sysutils
B-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_delete
Actualización (portupgrade)
Cuentas de usuario
#adduser -s -config_create (crear fichero inicial configuración)
adduser -v
rmuser
chpass
passwd
pw
:
:
:
:
:
Añadir nuevos usuarios.
Eliminar usuarios.
Modificar la base de datos de usuarios.
Cambiar contraseñas de usuario.
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.org
http://www.netbsd.org
http://www.openbsd.org
http://www.daemonnews.org
http://www.slashdot.org/bsd
http://www.eldemonio.org
http://www.tldp.org/HOWTO/Linux+FreeBSD-4.html
Descargar