Primeros pasos con NetBSD – I

Que es NetBSD?

NetBSD logo NetBSD es un Unix con estilo, cualquiera que quiera aprender ‘Unix Basics’ esta invitado a utilizar NetBSD, es simple, es liviano, es portable, es seguro, su codigo es muy elegante, y su flexibilidad nos permitirá utilizarlo como un desktop o como un router/firewall dedicado, o incluso hacerlo andar en un celular… En lo siguiente haremos una introducción somera sobre NetBSD y luego nos iremos adentrando en algunas configuraciones básicas. En caso de necesitar ayuda con la instalación te recomiendo este turorial.

Historia

NetBSD es spin off the 386BSD 0.1, fundado por Chris Demetriou, Theo de Raadt, Adam Glass y Charles M. Hannum, estuvo orientado desde sus origenes a ser portable a muchas plataformas. Al dia de hoy, NetBSD se publica oficialmente para 53 plataformas, por lo que puede correr en una PC, en un SPARC, en una consola de juegos Dreamcast, o en un flamante servidor IBM o HP. De hecho su eslogan es “of course it runs NetBSD” ( han hecho correr NetBSD en una tostadora)

Para que me sirve?

Una respuesta un poco intrépida pero bastante certera, es que NetBSD sirve para todo. Claro, tiene sus limitaciones, en algunos sentidos, pero NetBSD tiene un punto muy fuerte, y es su portabilidad. Esta le permite que pueda ser OS indicado para proyectos donde se necesita un sistema operativo que tenga minimos requerimientos, y brinde grandes prestaciones, por ejemplo para sistemas con software embebido puede llegar a ser una de las pocas alternativas.

En mi experiencia, recomiendo NetBSD para:

– PCs antiguas donde un linux 2.6 o 3.0 les queda grande, NetBSD 6.0 es mas liviano.
– Experimentos que requieran software tipo embebido, seguramente NetBSD tiene un port.
– Estudiantes de Unix: NetBSD conserva mucho de los unix originales (*BSD), en mi opinion es mejor empezar con algo mas unix like que windows like.
Existe una gran cantidad de productos basados en NetBSD, podes verificarla aca.

Configuración básica

La guia de configuración de NetBSD, ya sea en pdf o en html, puede evacuar seguramente el 99% de tus dudas. En este post haremos un primer acercamiento con  algunas de las explicaciones y configuraciones minimas que facilitan el comienzo en NetBSD.

Inicio: El inicio de NetBSD esta controlado por el rc.conf, este inicio no tiene runlevels como en el caso de los sistemas que utilizan system v. Para determinar los servicios que se ejecutaran en tiempo de booteo, debemos editar el rc.conf. Por ejemplo la variable sshd=YES, habilita el servidor ssh. Para mas info, man rc.conf.

Si bien la configuración inicial es casi optima, en caso de que no estemos usando NetBSD como un servidor productivo, podemos hacer algunos pequeños cambios que aceleraran el incio. Esto sirve sobre todo en maquinas muy chicas, ya que de por si NetBSD incia muy rápido. Abrimos el rc.conf con el vi, y agregamos las siguientes lineas:

#Para que no borre el tmp en cada booteo. 
clear_tmp=NO 
#Para que no verifique los limites de quotas
quota=NO 
#Para que no utilice genere volcados de memoria del kernel en caso de un crash.
savecore=NO
#Para que no inicie el postfix. 
postfix=NO
#Para que no mande notificación en caso de encontrar algún archivo mal cerrado por vi.
virecover=NO

Disco: El particionado de BSD es distinto que en Linux. Lo que en Linux llamamos particiones (por ejemplo /dev/hda, /dev/hdb etc), en BSD se llaman ‘slices’ . Al instalar NetBSD habremos definido una slice donde se encontrará el esquema de particionado llamado disklabel. El estandar de etiquetas (labels) dice que:

a       Contiene al root file system
b       Contiene la particion swap
c       No se monta, y es un puntero a toda la slice
d       Usualmente apunta a todo el disco
El resto de las particiones son para disponer a gusto (por ejemplo se pueden destinar para el tmp, el usr etc)
Para listar los discos utilizamos fdisk a secas:

Vipper# fdisk
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 10402, heads: 16, sectors/track: 63 (1008 sectors/cylinder)
total sectors: 10485760

BIOS disk geometry:
cylinders: 652, heads: 255, sectors/track: 63 (16065 sectors/cylinder)
total sectors: 10485760

Partitions aligned to 2048 sector boundaries, offset 2048

Partition table:
0: NetBSD (sysid 169)
start 2048, size 10483712 (5119 MB, Cyls 0-652/180/40), Active
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>
Bootselector disabled.
First active partition: 0

Para ver las particions BSD usamos disklabel:

Vipper# disklabel /dev/wd0
# /dev/wd0d:
type: unknown
disk: ROOTDISK
label: 
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 10402
total sectors: 10485760
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0		# microseconds
track-to-track seek: 0	# microseconds
drivedata: 0 

16 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   4362624      2048     4.2BSD   2048 16384     0  # (Cyl.      2*-   4330*)
 b:   1049328   4364672       swap                     # (Cyl.   4330*-   5371*)
 c:  10483712      2048     unused      0     0        # (Cyl.      2*-  10402*)
 d:  10485760         0     unused      0     0        # (Cyl.      0 -  10402*)
 e:   2973600   5414000     4.2BSD   2048 16384     0  # (Cyl.   5371*-   8321*)
 f:   2098160   8387600     4.2BSD   2048 16384     0  # (Cyl.   8321*-  10402*)

Configurar la red: Sin duda lo primero que querras hacer una vez instalado NetBSD, es tener acceso a internet. Si tu red no usa DHCP (edita el rc.conf agregando dhclient=NO), podes seguir estos pasos para configurar la red. En la instalación el hostname queda configurado en el /etc/rc.conf en la variable ‘hostname’ y el dominio en la variable ‘domainname’. Sin embargo es mas prolijo utilizar otros archivos fuera del rc.conf:
Para el hostname:

echo "hostname-elegido" >  /etc/myname

Para el dominio:

echo "dominio-elegido" > /etc/defaultdomain

Para la puerta de enlace por defecto (o gateway):

echo "puerta de enlace por defecto" > /etc/mygate

Para configurar cada interfaz: Hemos de crear un archivo llamado /etc/ifconfig.iface-name por cada interfaz (en mi caso wm0, quedaria como /etc/ifconfig.wm0), en este archivo colocaremos parámetros de ifconfig que serán ejecutados contra la interfaz, un ejemplo sencillo sería:

up
192.168.1.1 netmask 255.255.255.0

Estas lineas haran que se ejecuten los siguientes comandos:

ifconfig wm0 up
ifconfig wm0 192.168.1.1 netmask 255.255.255.0

Software: NetBSD utiliza un sistema de paquetes precompilados. Para poder utilizarlo, hay que setear la variable PKG_PATH, la cual contiene el url del mirror del repositorio. En caso de un NetBSD  6.1 sobre i386 esta configuración sería válida.

 PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/6.1/All

Para no hacer un ‘export PKG_PATH=…’ cada vez que necesitemos instalar un paquete, simplemente copiamos este comando en el .profile para que quede así:

export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/6.1/All

Al abrir una nueva terminal, podremos verificar con el comando ‘env’ que la variable queda definida. En caso de que haya que pasar por un proxy, hay que setear la variable FTP_PROXY con el proxy correspondiente.
Finalmente para agregar software a nuestro OS, utilizamos pkg_add.
Aca van un par de ejemplos de soft que siempre utilizo

pkg_add -v nmap
pkg_add -v wget
pkg_add -v links
pkg_add -v fping

Con pkg_info podemos listar los paquetes instalados y obtener información de cada paquete:

Vipper# pkg_info
pcre-8.33           Perl Compatible Regular Expressions library
fontconfig-2.10.93nb2 Library for configuring and customizing font access
nmap-6.25nb3        Network/port scanner with OS detection
fluxbox-1.3.2nb5    Window Manager for X based on Blackbox
sessreg-1.0.8       Manage utmp/wtmp entries for xdm
libXft-2.3.1nb3     Library for configuring and customizing font access
xdm-1.1.11nb4       X Display Manager from modular X.org
libidn-1.27         Internationalized Domain Names command line tool
wget-1.14nb3        Retrieve files from the 'net via HTTP and FTP
links-2.7nb1        Lynx-like text WWW browser
fping-2.4b2nb1      Quickly ping many hosts w/o flooding the network
pkgfind-20111022    Find packages by package name in pkgsrc

Vipper# pkg_info fping-2.4b2nb1
Information for fping-2.4b2nb1:

Comment:
Quickly ping many hosts w/o flooding the network

Description:
A tool to quickly ping N number of hosts to determine their reachability
without flooding the network.

     fping is different from ping in that you can specify any number of
	 hosts on the command line, or specify a file containing the lists
	 of hosts to ping. Instead of trying one host until it timeouts or
	 replies, fping will send out a ping packet and move on to the next
	 host in a round-robin fashion. If a host replies, it is noted and
	 removed from the list of hosts to check. If a host does not respond
	 within a certain time limit and/or retry limit it will be considered
	 unreachable.

     Unlike ping, fping is meant to be used in scripts and its
     output is easy to parse.

Homepage:
http://www.fping.com/

Bien, hasta aquí con este post, en el siguiente veremos con configurar este OS como un firewall/router y como configurar el desktop. Espero que les sirva como punta de ovillo. Cualquier duda será bien recibida.

~ have fun!

3 thoughts on “Primeros pasos con NetBSD – I

    1. Si en cuanto a cantidad te refieres, el número es mucho menor (hablando de los paquetes, siempre puedes compilar) comprarado con Debian o Ubuntu que cuentan con una cantidad inmensa de software disponible. Por otro lado, comparado contra OpenBSD, aunque no tengo números que lo ratifiquen, me animo a decir que OpenBSD tiene menos cantidad de soft disponible, ya que el equipo de OpenBSD se toma mucho tiempo para analizar la seguridad.

Leave a Reply