El util comando find.

Una de las mejores cosas que existen en Unix/linux son las herramientas de la consola
como lo es el util comando find parte del “GNU findutils (find,locate, updatedb, xargs)”, este comando es una verdadera joya, sabiendolo utilizar puede ahorrar mucho tiempo en tareas repetitivas, para muestra unos ejemplos:

supongamos que tenemos archivos que no tienen el set de permisos adecuados(suponiendo un set 755), pero tales archivos estan dispersos en diferentes directorios y necesitamos corregir los permisos (a un 644), normalmente alguien que no supiera de esta herramienta haria lo siguiente:

cd directorio
ls -la
chmod 644 archivos.xyz

y esto se haria repetitivamente por cada directorio donde los permisos de los archivos no estuvieran bien.

Ahora bien con el comando find la misma tarea se realizaria con una sola instruccion al shell:

find . -type f -perm 755 -exec chmod 644 {} +

los parametros significan:

. busca recursivamente en el directorio actual

“-type f”: lo que busco son archivos

“-perm 755”: que tengan los permisos 755

“-exec 644 {} +”: cuando los encuentres cambia los permisos a 644

en versiones viejas del comando find la ultima parte tendria que variar para que funcione seria asi:

find . -type f -perm 755 -exec chmod 644 {} \;

en una sola instruccion se puede buscar y ejecutar un comando sobre los archivos encontrados.

Lo anterior tambien se puede realizar con directorios con solo cambiar un parametro, si tenemos directorios con permisos 777 y los queremos cambiar a 755 (permisos predeterminado para directorios), escribimos:

find . -type d -perm 777 -exec chmod 755 {} +

find es versatil y tiene diferentes parametros los cuales podemos aplicar dependiendo de lo que queramos buscar

find /home/testuser/projects/ -name 'web_*.py' -size +50k -print

podemos usar busquedad por nombre usando expresiones regulares, permisos, propietario del archivo, tamaƱo , tiempos de acceso y hasta por tipo de archivos symbolic links o hard links

referencia

GNU FindUtils Manual

Configurando nvidia driver en FreeBSD 6.2

A veces es dificil encontrar documentacion detallada sobre como hacer esto, tienes que pasarte un buen rato buscando en los foros, lista de correo y cualquier otra pagina que te salga en el buscador, es por eso que decidi escribir una miniguia como instalar los drivers nvidia en FreeBSD 6.2, sin usar los ports solo, paquetes esto tambien porque mi conexion de internet no es muy rapida y no deseo pasar todo el dia descargando fuentes para que se compilen.

Bueno para comenzar, asumimos que la instalacion del FreeBSD esta completa y tienes un sistema listo corriendo solo en modo consola con los paquetes instalados de las X (Xorg), y gnome2.

Obtenemos los driver del sitio de Nvidia, en mi caso fue el NVIDIA-FreeBSD-x86-100.14.19.tar.gz, mi tarjeta grafica es una GeForce 6200 A-LE

“nvidia0: mem 0xf0000000-0xf0ffffff,0xe0000000-0xefffffff,0xf1000000-0xf1ffffff irq 16 at device 0.0 on pci1”

Los requerimientos para instalar este driver:

  • El paquete de compatibilidad con linux, por si se quiere tener soporte 3D y correr aplicaciones como el compiz o beryl con el FreeBSD
    linux_base-fc-4_9 Base set of packages needed in Linux mode (for i386/amd64)
  • El paquete compat5x
    “compat5x-i386-5.4.0.8_7 A convenience package to install the compat5x libraries”
  • Los fuentes del kernel de FreeBSD
    sys(/usr/src/sys)
  • Los paquetes Xorg

    xorg-6.9.0 X.Org distribution metaport

    xorg-clients-6.9.0_3 X client programs and related files from X.Org

    xorg-documents-6.9.0 Documentation of X11 protocol and libraries from X.Org

    xorg-fonts-100dpi-6.9.0_1 X.Org 100dpi bitmap fonts

    xorg-fonts-75dpi-6.9.0_1 X.Org 75dpi bitmap fonts

    xorg-fonts-cyrillic-6.9.0_1 X.Org Cyrillic bitmap fonts

    xorg-fonts-encodings-6.9.0_1 X.Org font encoding files

    xorg-fonts-miscbitmaps-6.9.0_1 X.Org miscellaneous bitmap fonts

    xorg-fonts-truetype-6.9.0 X.Org TrueType fonts

    xorg-fonts-type1-6.9.0 X.Org Type1 fonts

    xorg-fontserver-6.9.0_1 X font server from X.Org

    xorg-libraries-6.9.0 X11 libraries and headers from X.Org

    xorg-manpages-6.9.0 X.Org library manual pages

    xorg-nestserver-6.9.0_1 Nesting X server from X.Org

    xorg-printserver-6.9.0_2 X Print server from X.Org

    xorg-server-6.9.0_5 X.Org X server and related programs

    xorg-vfbserver-6.9.0_2 X virtual framebuffer server from X.Org

Los 2 primero paquetes los obtenemos facilmente usando el comando “pkg_add”

# pkg_add -r compat5x-i386
# pkg_add -r linux_base-fc

para obtener los fuentes del kernel utilizamos el programa “sysinstall” los fuentes del kernel estan el cd oficial de FreeBSD

Si los paquetes anteriores se han instalado bien, solo deberemos realizar unas configuraciones, en el archivo “/boot/loader.conf” debe contener la siguiente linea:

linux_load=”YES”

El archivo “/etc/rc.conf” debe contener las siguientes lineas:

linux_enable=”YES”
COMPAT_FREEBSD5=”YES”

despues de esto deberemos reiniciar para cargar los modulos del loader.conf y la nueva configuracion del rc.conf.

Ahora solo queda compilar el driver:

# tar xzvf NVIDIA-FreeBSD-x86-100.14.19.tar.gz
# cd NVIDIA-FreeBSD-x86-100.14.19/
# make install
# nvidia-xconfig

Al ejecutar el nvidia-xconfig este genera el archivo de configuracion xorg, con el cual arrancaremos el servidor X. El driver modificara el archivo /boot/loader.conf agregando el modulo nuevo para la tarjeta nvidia.

nvidia_load=”YES”
linux_load=”YES”

como extra si deseamos iniciar el modo grafico y usar GDM como login manager para FreeBSD haremos lo siguiente:

en el archivo /etc/ttys modificamos:

Comentamos la linea que dice:
#ttyv8 “/usr/X11R6/bin/xdm -nodaemon” xterm off secure

y agregamos:
ttyv8 “/usr/local/sbin/gdm -nodaemon” xterm on secure

luego en /etc/rc.conf agregamos:

dbus_enable=”YES”
polkitd_enable=”YES”
hald_enable=”YES”
gnome_enable=”YES”

Listo tenemos los drivers y el modo grafico funcionando en FreeBSD.


Referencias

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu-lbc-install.html

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/packages-using.html

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html