2014/01/23

FreeBSD 10.0

Introduccion:

Instalar FreeBSD 10.0-RELEASE AMD64

Requerimientos:

* Conexion a Internet
* Disco de instalacion de FreeBSD
* Leer este tutorial

Tutoriales:

http://docs.freebsd.org/doc/6.3-RELEASE/usr/share/doc/handbook/portsnap.html

El proceso:

Iniciar el equipo con el disco de FreeBSD

FreeBSD Installer

Welcome
Welcome to FreeBSD! Would you
like to begin an installation
or use the live CD?

<Install>

FreeBSD Installer
--------------------------------------------------------------------------------------------------------------------
Keymap Selection
The system console driver for FreeBSD defaults to standard "US"
keyboard map. Other keymaps can be chosen below.

>>> Continue wiht default keymap <- Cuando mi teclado es en English

O me desplazo para abajo hasta el idioma correcto

(  ) Latin American

(  ) Spanish ISO-8859-1

Luego de estar en el idioma correcto (Latin American o Spanish ISO-8859-1)

<Select>

>>> Continue wiht spanish.kbd/latinamerican.kbd keymap

<Select>

Set Hostname
Please choose a hostname for this machine.

If you are running on managed network, please
ask your network administrator for an appropriate
name.

freebsd.example.com

<OK>

Distribution Select
Choose optional system components to
install:

[ * ] doc        Additional documentation
[    ] games   Games (fortune, etc.)
[    ] lib32     32-bit compatibility libraries
[ * ] ports     Ports tree
[ * ] src        System source code

<OK>

Partitioning
How would you like topartition your disk?

<Manuall>

<OK>

Partition Editor
Create partitions for FreeBSD. No changes will be
made until you select Finish.

ada0                      298 GB   (none)

GPT         GUID Partition Table

<OK>

<OK>

<Create>

Type:              freebsd-boot
Size:               512K
Mountpoint:
Label:

<OK>

<Create>

Type:              freebsd-ufs
Size:              16GB
Mountpoint: /
Label:            exrootfs

<OK>

<Create>

Type:              freebsd-swap
Size:              32GB
Mountpoint:
Label:            exswap

<OK>

<Create>

Type:              freebsd-ufs
Size:              64GB
Mountpoint: /var
Label:            exvarfs

<OK>

<Create>

Type:      freebsd-ufs
Size:      16GB
Mountpoint: /tmp
Label: extmpfs

<OK>

<Create>

Type:              freebsd-ufs
Size:              XXGB          <- lo que quede disponible
Mountpoint: /usr
Label:              exusrfs

<OK>

ada0                      298 GB    GPT
    ada0p1              512 kb   freebsd-boot
    ada0p2              16.0 GB   freebsd-ufs  /
    ada0p3              32.0 GB   freebsd-swap none
    ada0p4              64.0 GB   freebsd-ufs  /var
    ada0p5              16.0 GB  freebsd-ufs /tmp
    ada0p6              XX.0 GB freebsd-ufs /usr

<Finish>

Confirmation
Your changes will now written to disk. If you
have chosen to overwrite existing data, it will
be PERMANENTLY ERASED. Are you sure you want to
commit your changes?

<Commit>

(inicia particionado e instalacion)

FreeBSD Installer
--------------------------------------------------------------------------------------------------------------------

Please select a password for the system management account (root):
Changing local password for root
New Password: ********
Retype New Password: ********

Network Configuration
Please select a network interface to configure:

em0 Intel(R) PRO/1000 Legacy Network Connection 1.0.3
em1 Intel(R) PRO/1000 Legacy Network Connection 1.0.3
em2 Intel(R) PRO/1000 Legacy Network Connection 1.0.3
em3 Intel(R) PRO/1000 Legacy Network Connection 1.0.3

<OK>

Network Configuration
Would you like to
configure IPv4 for this
interface?

<Yes>

Network Configuration
Would you like to use
DHCP to configure this
interface?

<No>

Network Configuration
Static Network Interface Configuration

IP Address   192.168.0.2
Subnet Mask 255.255.255.0
Default Router 192.168.0.1

<OK>

Network Configuration
Would you like to
configure IPv6 for this
interface?

<Yes>

Network Configuration
Would you like to try
stateless address
autoconfiguration
(SLAAC)?

<Yes>

Network Configuration
Resolver Configuration
Search            example.com
IPv6 DNS #1   2001:4860:4860::8888
IPv6 DNS #2   2001:4860:4860::8844
IPv4 DNS #1   8.8.8.8
IPv4 DNS #2   8.8.4.4

<OK>

Nota:
En nuestro caso estamos usando los DNS publicos de Google (IPv4 8.8.8.8 8.8.4.4 IPv6 2001:4860:4860::8888 2001:4860:4860::8844), mas informacion aqui https://developers.google.com/speed/public-dns/
 
Select local or UTC (Greenwich Mean Time) clock
Is this machine´s CMOS clock set to UTC? If it is set to local time,
or you don´t know, please choose NO here!

<No>

Time Zone Selector
Select a region

2 America -- North and South

Countries in America -- North and South

14 Colombia

<OK>

Does the abbreviation `COT´ look reasonable?

<Yes>

System Configuration
Choose the services you would like to be started at boot:

[*] sshd       Secure shell daemon
[  ] moused PS/2 mouse pointer on console
[  ] ntpd      Synchronize system and network time
[  ] powerd Adjust CPU frequency dynamically
[*] dumpdev Enable kernel crash dumps to /var/crash

<OK>

Add User Accounts
Would you like to add
users to the installed
system now?

<Yes>

FreeBSD Installer
==================
Add Users

Username: john
Full name: John Doe
Uid (Leave empty for default):
Login group [john]:
Login group is john. Invite john into other groups? []:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/john]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a randon password? (yes/no) [no]:
Enter password: ********
Enter password again:  ********
Lock out the account after creation? [no]:
Username          : john
Password           : ********
Full Name         : John Doe
Uid                    : 1001
Class                 :
Groups              : john
Home                : /home/john
Home Mode     :
Shell                 : /bin/sh
Locked             : no
OK? (yes/no)   : yes
adduser: INFO : Successfully added (john) to the user database.
Add another user? (yes/no): no
Goodbye!

Final Configuration
Setup of your FreeBSD system is nearly complete. You can now
modify your configuration choices. After this screen, you will
have an opportunity to make more complex changes using a shell

Exit             Apply configuration and exit installer

<OK>

Manual Configuration
The installation is now finished.
Before exiting the installer, would
you like to open a shell in the new
system to make any final manual
modification?

<No>

Complete
Installation of FreeBSD
complete! Would you like
to reboot into the
installed system now?

<Reboot>

(retirar el CD/DVD/USB en el reinicio para iniciar desde el disco duro)

Aplicar los ultimos parches

# freebsd-update fetch
# freebsd-update install

Actualizar el arbol de ports

# portsnap fetch extract
# portsnap fetch update

Finalmente reiniciamos

# reboot

Eso es todo, al iniciar tenemos nuestro FreeBSD funcionando!

Es buen momento para hacer que FreeBSD este con archivos actualizados, para esto agregamos en /etc/crontab las lineas asi:

# echo '# Actualizaciones para FreeBSD' >> /etc/crontab
# echo '00 06 * * * root /usr/sbin/freebsd-update cron' >> /etc/crontab

# echo '# Actualizaciones arbol de ports' >> /etc/crontab 
# echo '00 06 * * * root /usr/sbin/portsnap -I cron update' >> /etc/crontab

Con esas lineas se ejecutan procesos a las 06:00 horas y la ultima parte "cron" hace un aleatorio entre 1 y 3600 segundos para no saturar el servidor remoto.

Para sincronizar manualmente nuestro arbol de ports

# portsnap update

Activamos el auto chequeo de los discos en caso que no se apague bien o por algun bloqueo

# echo '# Verificar con FSCK' >> /etc/rc.conf
# echo 'fsck_y_enable="YES"' >> /etc/rc.conf
# echo 'background_fsck="NO"' >> /etc/rc.conf
# echo '#background_fsck_delay="60"' >> /etc/rc.conf

Si luego queremos ajustar parametros de la instalacion:

# edit /etc/rc.conf

hostname="freebsd.example.com"
ifconfig_em0=" inet 192.168.0.2 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
ifconfig_em0_ipv6="inet6 accept_rtadv"
ssh_ennable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

# Ajustar el idioma del teclado (solo activar una, si ninguna esta activa queda en English)
#keymap="spanish.iso.kbd"
keymap="latinamerican.kbd"

# edit /etc/resolv.conf

search example.com
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
nameserver 8.8.8.8
nameserver 8.8.4.4

# edit /etc/hosts

::1             localhost localhost.my.domain
127.0.0.1  localhost localhost.my.domain

Para apagar nuestro FreeBSD instalado, usamos el comando:

# shutdown -h now

(con las nuevas boards puede apretar el boton de power e inicia el apagado)

Para reiniciarlo

# shutdown -r now

Parametros recomendados para /etc/make.conf

# edit /etc/make.conf

Agregamos las siguientes lineas

# CUPS-Related Ports
# https://wiki.freebsd.org/Ports/Options/OptionsNG#What_users_need_to_know
# http://lists.freebsd.org/pipermail/freebsd-ports/2013-June/084148.html
#
OPTIONS_SET=CUPS
#
# Qt 4 can be built with optional supporin for:
# - Common UNIX Printing System (CUPS)
# - Network Audio System (NAS)
# - Qt style that renders using GTK (QGTKSTYLE)
#
QT4_OPTIONS= CUPS NAS QGTKSTYLE
#
# Installing KMS Ports
# https://wiki.freebsd.org/Graphics#Ports
#
WITH_NEW_XORG=yes
#
# FreeBSD versions earlier than 10.X require this line
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/pkgng-intro.html
#
WITH_PKGNG=yes
#
# Depurar errores en los ports
#
#CMAKE_VERBOSE=yes
#MAKE_JOBS_UNSAFE=yes

Instalar nuestro primer port llamado portmaster (en FreeBSD 10.0 ya viene instalado, pero lo dejare de ejemplo)

# cd /usr/ports/ports-mgmt/portmaster
# make install clean

Limpiar los fuentes descargados en /usr/ports/distfiles de ports que ya no tenemos instalados

# portmaster -y --clean-distfiles

Otros comandos utiles

# make -C /usr/ports/ports-mgmt/portmaster config
# cd /usr/ports/ports-mgmt/portmaster && make showconfig

Si queremos eliminar todos los ports instalados

# rm -rf /usr/local/* /var/db/pkg /compat/linux

Si queremos eliminar todos los cambios que hicimos en un port

# rm /var/db/ports/nombreport/options

Si queremos eliminar todos los cambios que hicimos en todos los ports

# rm -rf /var/db/ports/*

Quien es John Doe? http://en.wikipedia.org/wiki/John_Doe

Para hacer la instalacion en un RAID1 http://www.unix.ck.ua/content/sozdaem-programmnyi-raid1-freebsd-90 

Nota:
FreeBSD envia automaticamente reportes de estado al usuario root y solo los vemos si iniciamos localmente con este usuario, pero podemos hacer que estos reportes sean enviados a una cuenta en otro lugar, por ejemplo a nuestra cuenta en Gmail, para hacer esto debemos:

# edit /etc/mail/aliases

 Buscamos una linea que dice

# root: me@my.domain

Y luego de esa creamos una nueva con nuestro mail
root: micorreo@gmail.com

Guardamos los cambios en el editor y ejecutamos el comando

# cd /etc/mail && make

Si root tiene un monton de correos, los podemos eliminar con

# cat /dev/null > /var/mail/root

FreeBSD nos permite conectar por SSH a nuestro servidor, pero por seguridad no se puede hacer con el usuario root, entonces primero nos conectamos con el usuario john y luego podemos usar el comando su para subir a root, pero para que john pueda subir, hay que darle permisos a este usuario, para esto

# edit /etc/group

y la linea original

wheel:*:0:root

la dejamos asi

wheel:*:0:root, john

Guardamos cambios y ya podemos conectarnos, ejemplo desde otro equipo con FreeBSD desde el terminal

$ ssh john@IPMISERVIDOR
Password: ******** <- la clave del usuario john
$
Para subir a root escribimos su
$ su
Password: ********  <- la clave del usuario root
freebsd #

En caso de tener un bloqueo en el equipo, podemos usar el siguiente comando:

# kgdb /boot/kernel/kernel.symbols /var/crash/vmcore.0
(kgdb) backtrace <- luego escribimos esto y damos enter

Activar UTF-8 "Alternately, the superuser" (si tenemos acceso a root)

Ver las localizaciones disponibles

$ locale -a | grep '\.UTF-8$'

# edit /etc/login.conf

Modificar esta seccion de modo que quede asi:

default:\
        :passwd_format=sha512:\
        :copyright=/etc/COPYRIGHT:\
        :welcome=/etc/motd:\
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,LC_COLLATE=C:\
        :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin ~/bin:\
        :nologin=/var/run/nologin:\
        :cputime=unlimited:\
        :datasize=unlimited:\
        :stacksize=unlimited:\
        :memorylocked=64K:\
        :memoryuse=unlimited:\
        :filesize=unlimited:\
        :coredumpsize=unlimited:\
        :openfiles=unlimited:\
        :maxproc=unlimited:\
        :sbsize=unlimited:\
        :vmemoryuse=unlimited:\
        :swapuse=unlimited:\
        :pseudoterminals=unlimited:\
        :priority=0:\
        :ignoretime@:\
        :umask=022:\
        :charset=UTF-8:\
        :lang=en_US.UTF-8:

Mire con atencion, las partes en rojo es lo que debemos agregar (,LC_COLLATE=C, \, :charset=UTF-8:\ y :lang=en_US.UTF-8:)

Aplicar los cambios

# cap_mkdb /etc/login.conf

Verificar, cerrar la sesion del usuario, entrar de nuevo y verificar con este comando

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=

Ajustar el volumen de salida de FreeBSD
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/sound-setup.html

$ mixer -s vol 100

Para dejarlo permanentemente al 100 a nivel de driver

# echo '# Setting Default Values for Mixer Channels' >> /boot/device.hints
# echo 'hint.pcm.0.vol="100"' >> /boot/device.hints

Poner a Beastie, la mascota de FreeBSD

# edit /boot/loader.conf

# Devil worship in loader logo
loader_logo="beastie"

En recientes versiones de FreeBSD, luego de la instalacion, podemos configurar parametros mediante el comando

# bsdconfig