Qué es FreeBSD, el sistema en el que se basan Nintendo Switch y PS4? (ADSLZone)

FreeBSD es un sistema operativo derivado de la versión 4.4 de BSD-Lite, que a su vez es una versión de UNIX desarrollada por la Universidad de California. Es un sistema operativo libre y gratuito, cuyo código fuente está disponible de manera gratuita para cualquier usuario y fabricante.

Nintendo Switch: dos de las tres grandes consolas están basadas en FreeBSD

La principal ventaja que ofrece FreeBSD a un fabricante como puede ser Nintendo o Sony es que, al contrario de lo que ocurre con Linux, si se modifica el código del sistema operativo, no están obligados a compartirlo o publicarlo, pudiendo mantener en secreto las modificaciones que le hagan, y así se evite que los usuarios encuentren posibles vulnerabilidades para instalar homebrew en sus dispositivos. Además de no tener que publicar el código, BSD ofrece otra serie de ventajas, como su gran estabilidad, su pequeño kernel ideal para sistemas operativos móviles o dispositivos con recursos limitados, además de tener una gran cantidad de funcionalidades de red.
nintendo-switch-freebsd
Todo esto es lo que ha llevado que Nintendo Switch o PlayStation 4 utilicen BSD, o al menos un fork de ellos. En el caso de Nintendo, sabemos que su kernel está basado en FreeBSD, mientras que PlayStation 4 está basada en Orbis OS, un sistema operativo derivado directamente de FreeBSD (Xbox One está basada en Windows NT)
También encontramos que sistemas operativos como macOS o iOS están basados en Darwin, que es a su vez también un fork de BSD. Tanto es así, que, si se publica una imagen de un juego desde la Nintendo Switch a Twitter, en el tweet aparecerá que el tweet ha sido publicado vía Safari, mostrando la gran similitud con la que cuentan ambas plataformas.

Sistema operativo libre no implica facilidad de hackeo

Utilizar FreeBSD para basar el sistema operativo de la consola en él permite que Nintendo Switch sea la primera consola de Nintendo en soportar multitarea real (con el permiso de la NES Mini, que utiliza Linux para ejecutar juegos de la NES original mediante emulación). Además, hacer un kernel personalizado con FreeBSD es más barato, es más difícil que se encuentren vulnerabilidades (como las que tenía por ejemplo la 3DS), además de la gran optimización que comentábamos.
zelda-pc-cemu
Que Nintendo Switch utilice un sistema operativo ampliamente conocido por los usuarios no quiere decir que sea fácil de hackear, e incluso puede significar lo contrario. La única esperanza es que las modificaciones que Nintendo haya introducido en el sistema operativo algunos fallos, o que incluso se abra la puerta a poder emular la consola en PC. La 3DS, Wii y la Wii U utilizaban un sistema operativo personalizado y totalmente cerrado, y a pesar de ello fueron crackeadas, además de emuladas con emuladores.
Por último, aunque para portar juegos no habrá mucha diferencia, a la hora de portar aplicaciones como Netflix el proceso será más sencillo, abriendo también una nueva ventana a mejorar fácilmente la consola a través de drivers y mejoras en el kernel. En definitiva, Switch es una consola más abierta a nivel de software, además de a nivel de hardware, utilizando conectores como el USB Tipo C o ser fácilmente reparable, tal y como han comprobado en iFixit.

Agregar particion de disco (slice) al label en NetBSD

En el momento de instalacion de NetBSD, existe la fase de particionamiento de disco, claro, diferente a lo habitual en Linux, que no posee estas caracteristicas en discos duros (el mas cercano es LVM).

En el ecosistema BSD se especifican:

Particiones del BIOS MBR (hasta 4 primarias) = Slices
Etiquetas de discos BSD (dentro del slice seleccionado) = Particiones

Como vemos, las particiones en BSD son esas divisiones logicas dentro de una particion del BIOS en MBR, que se pueden etiquetar hasta por 16 letras (desde la ‘a’, hasta la ‘p’)

En FreeBSD y OpenBSD, la letra ‘c’ representa el disco completo, a diferencia que en NetBSD, la letra c especifica el slice completo del sistema, y la letra d especifica el disco completo.

Si en alguna ocasion Instalamos NetBSD sin especificar los otros slices, solo sera visto el del  sistema operativo instalado, como deseamos acceso a otro slice (por ejemplo,  FAT32 o VFAT) ubicado en otra seccion del disco, no es posible visualizarla.

Nos auxiliamos del comando disklabel , el cual se utiliza para agregar, borrar o editar los labels al sistema.

Existe el modo interactivo, el modo por comando (en directo) y el modo editor (vim)
En este ejemplo utilizaremos el modo interactivo (que se invoca con la opcion -i )

Nos mostrara el prompt ‘ partition> en donde podemos pulsar la tecla  ? para visualizar las demas opciones. Desplegamos las particiones actuales con P


Nos muestra que la ultima de las letras es la e: , por lo que podemos seleccionar cualquiera desde la f hasta la p . En este caso elegimos la letra f y presionamos enter.

En el nuevo prompt nos pide insertar uno de los sistemas de archivos soportados (desplegamos presionando la tecla ‘?’ )

En otra ventana despues de  escalar como root, ejecutamos el comando fdisk wd0 , que pudiera ser otro disco (como wd1, wd2, sd0, etc). El disco seleccionado es donde se encuentra la particion del BIOS (Slice), que esta en FAT32.

Donde despliega  ‘Primary DOS with 32 bit FAT’ que es la numero dos (2), tomamos los siguientes valores para poder especificar el offset y el tamano total del slice que esta en  parentesis, en megabytes.

 start: 394652853
 size: 6143886, equivalente a 3000MB


Insertamos ‘MSDOS’ y al presionar enter, ingresamos el primer valor

 start offset: 394652853

 size:  3000MB 

Luego nos muestra el nuevo label (o particion) con los valores ya especificados, notese que aun no se encuentran escritos en el disco,

 Lo mostramos junto a los labels actuales.

Aplicamos el cambio presionando la W y respondiendo yes (y), a partir de este momento, ya se encuentra escrito los cambios en el disco.

Para confirmar que los cambios son correctos, ejecutamos el comando mount.

Aqui podemos ver la nueva particion del BIOS (slice) listada en los labels de NetBSD

Si por alguna razon deseamos eliminarla, se ejecuta el modo edicion (por vi) y lo borramos con dd y  grabar en el editor (con ESC :wq). Esto no borra definitivamnete la particion BIOS (slice) formateada FAT32, solo elimina la etiqueta y no sera visible desde el sistema operativo.

Numix vs dotfiles

Numix es un proyecto donde se consiguen temas de escritorio tanto para linux como para android. En este blog se ordenan las compras de distintos temas desde US$ 1.99 (algunos son gratuitos, pero son mas simples). Este proyecto ofrecen distintos wallpapers, temas de iconos, y gtk.

La ventaja que ofrecen (para los usuarios acostumbrados a la GUI) es su instalacion a nivel de ventana de dialogo en el entorno grafico.

Numerosos usuarios conocen este proyecto que ha surgido durante los ultimos años.

Los Dotfiles, sin embargo, dependen mucho mas de un window manager que de un entorno de escritorio (en estos casos, fluxbox, awesome wm, i3 wm, openbox, etc.) y existen en gran cantidad disponible en github (y otras paginas). Con esto me refiero a los archivos ocultos de Linux y Unix en la carpeta personal, que empiezan con un punto y que muchos de ellos dependen de la configuración del usuario que inicia su sesión. Entre los customizables están .Xresources .tmux.conf, .vim y .vimrc, .bashrc y .bash_profile, .xinitrc, .fluxbox, .i3, entre otros archivos y directorios.

Solo es cuestión de clonar o descargar desde un usuario git, que lo tenga disponible (puede ser tambien un developer) Este es un ejemplo, luego de  escribir como busqueda en google: dotfiles, o sino «fluxbox xresources dotfiles», entre otras claves.

Muchos usuarios que se manejan (y pagan) con Numix, desconocen las poderosas ventajas de personalizacion de un escritorio con estos distintos archivos ocultos, los cuales muchos de ellos se encuentran documentados sobre como efectuar su correcta instalación, ya sea por scripting o por copia normal.

Recomiendo explorar sobre esta alternativa.

Administrando con fetchmail, procmail y mutt una cuenta de correo pop

La forma en que usamos  nuestra cuenta de correo electronico, puede ser un desperdicio a causa del correo no deseado (spam) y publicitarios que no necesitamos en el día a día, como tambien tener que acceder por el propio navegador y agotar mas tiempo insertando las credenciales y el modo de visualizacion con apis innecesarias. Aún así existen opciones mucho mas eficientes y poderosas debido  a las caracteristicas que poseen los clientes de correo en modo texto en el mundo del software libre y open source.

En mi caso, mi cliente de email preferido es mutt (anteriormente utilizaba pine / alpine). Aunque se diferencia en mi configuración, utilizando mutt junto a otros 2 motores para eficientizar la lista de correos en bandeja de entrada y filtrar el spam o email publicitario o de un remitente en especifico.

La combinación es mutt, fetchmail, y procmail junto con  cuenta de pop gmail.

Instalamos los paquetes requeridos via pkg:

# pkg install  procmail fetchmail mutt

o  a través de ports:

cd /usr/ports && portinstall -c procmail fetchmail mutt

Creamos el archivo .forward en nuestro directorio home:

echo «|/usr/local/bin/procmail» > .forward

Ahora creamos la configuración de fetchmail, en un archivo llamado .fetchmailrc:

set daemon 3600
set logfile /home/user/.fetchmail.log
set no bouncemail
poll pop.gmail.com proto POP3 auth password no dns user «user@gmail.com» pass «password» is user keep ssl

mda «/usr/local/bin/procmail -m /home/user/.procmailrc»


Ahora creamos el archivo .procmailrc con el siguiente contenido
asumiendo haber creado el directorio Maildir en nuestra carpeta personal.

SHELL=/bin/bash
PATH=/usr/sbin:/usr/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$HOME/.procmail.log
LOG=»»

VERBOSE=on

# Descarta todos los emails desde MONTEVERDE JARABACOA ya que no hay motivos para obtener de este remitente
:0:
Mail/
*^From:.*(mailer\@publimas\.net)
/dev/null


Esto combinará cualquier correo con direccion etiquetada en la  expresión regular. Tambien se puede incluir mas de un lugar para encontrar la cadena que se está buscando en una sola  colocado entre  parentesis y separandolos con una tubería, como en este ejemplo:

*^(To|Cc|Bcc):.*(bob\@company\.com|dave\@company\.com)

Se puede buscar para filtrar tambien en los campos From, To, Cc, Bcc, Subject, o en cualquier otra area del contenido del correo en donde se desee. Tambien es posible definir multiples condiciones al mismo tiempo:

*^From:.*(bob\@company\.com)
*^Subject:.*(joke)

Este ejemplo combinara cualquier correo desde bob@company.com con  «broma» en el campo Subject.

Finalmente, configuramos mutt. Esta es una configuración preliminar en .muttrc .


set mbox_type=Maildir

set spoolfile=»~/Maildir/»
set folder=»~/Maildir/»
set mask=»!^\\.[^.]»
set record=»+.Sent»
set postponed=»+.Drafts»

mailboxes ! + `\
for file in ~/Maildir/.*; do \
box=$(basename «$file»); \
if [ ! «$box» = ‘.’ -a ! «$box» = ‘..’ -a ! «$box» = ‘.customflags’ \
-a ! «$box» = ‘.subscriptions’ ]; then \
echo -n «\»+$box\» «; \
fi; \
done`

macro index c «?» «open a different folder»
macro pager c «?» «open a different folder»
 

set sort = ‘threads’
set sort_aux = ‘reverse-last-date-received’
set auto_tag = yes
ignore «Authentication-Results:»
ignore «DomainKey-Signature:»
ignore «DKIM-Signature:»
hdr_order Date From To Cc
alternative_order text/plain text/html *
auto_view text/html

# Editor
set editor = «vim»

# Colours
color index red black ~N
color index red black ~O

 Con toda esta configuracion establecida, ahora ejecutamos el comando fetchmail:

$ fetchmail -vk

Esto puede tomar mas o menos tiempo debido al correo que se tenga almacenado en la bandeja de entrada. Abrimos el cliente mutt 

$ mutt

Bibliografía:

http://www.ioncannon.net/system-administration/97/

Servidor corriendo FreeBSD durante 18 años, retirado (ingles)

A server running FreeBSD 2.2.1 has ended its watch, after being in operation for a whopping 18 years. You can read the entire story from the Register in the link below.

Home-brew 200Mhz Pentium FreeBSD box ran custom code that made replacement painful

The Register has learned, thanks to a post to a semi-private mailing list, of a server that has just been decommissioned after running without replacement parts since 1997.
The post, made by a chap named Ross, says he “Just switched off our longest running server.”
Ross says the box was “Built and brought into service in early 1997” and has “been running 24/7 for 18 years and 10 months.”

Enlace

Por qué debemos evitar systemd (opinion)

Entre los últimos lanzamientos, la mayoría de las distribuciones Linux han decidido reemplazar el sistema de inicio por systemd, en donde se promete mejor funcionalidad con el manejo de los procesos. No obstante, esto no es más que una imposición de manera drástica, porque varias dependencias de los entornos gráficos más conocidos (Plasma y Gnome) están actualmente ‘hardcoded’, y no se pueden instalar independientemente de systemd.

Se ha perdido la filosofía inicial de UNiX.
En esta última generación del software libre y el open source. Es más evidente el concepto de ‘GNU no es UNiX’.
Pocos concientizan la filosofía inicial de UNIX, además que systemd no proviene ni posee la estandarización POSIX, la cual indica las normas que debe cumplir un sistema operativo UNiX-like para que sea reconocido como el mismo. Linux, por esto, no asemeja ser clon de UNiX.
El querer reemplazar un nuevo estándar de un sistema de inicio que no tiene más de una década, no se compara con la estabilidad de init y SystemV, que esta presente desde los orígenes de la filosofía UNiX (hace ya 46 años).

Esquema muy  Centralizado
Por lo visto y experimentado, el nuevo modelo inicio de SystemD se adhiere la idea de “un solo linux” y la simplicidad.
Como es posible que actualizar Linux de una version anterior a una reciente desaparezca init por systemd como controlador del PID 1? Incluso, se reemplazan los scripts de inicio de los servicios por otros meramente no compatibles y controlados todos mediante este nuevo proceso inicial.

Que hacer al respecto?
Particularmente Recomiendo evitar utilizar cualquier distribucion Linux que lo posea, o mas bien empezar a utilizar FreeBSD 
Si usted como usuario le es complejo, pues recomiendo PC-BSD
Existe la alternativa de utilizar cualquier otro flavor BSD (NetBSD y OpenBSD), aunque para comenzar, con FreeBSD es suficiente.

Enlace