aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/es/articles/remote-install/_index.adoc
blob: c64720369c19c820c87a569a3dcc3955bec67ead (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
---
authors:
  - 
    author: 'Daniel Gerzo'
    email: danger@FreeBSD.org
copyright: '2008-2021 The FreeBSD Documentation Project'
description: 'Describe la instalación remota del sistema operativo FreeBSD cuando la consola del sistema remoto no está disponible'
tags: ["Remote", "Installation", "FreeBSD"]
title: 'Instalación remota del sistema operativo FreeBSD sin una consola remota'
trademarks: ["freebsd", "general"]
---

= Instalación remota del sistema operativo FreeBSD sin una consola remota
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/remote-install/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
Resumen

Este artículo documenta la instalación remota del sistema operativo FreeBSD cuando la consola del sistema remoto no está disponible. La idea principal de este artículo es el resultado de una colaboración con `{mm}` con información valiosa proporcionada por `{pjd}`.

'''

toc::[]

[[background]]
== Antecedentes

Hay muchos proveedores de alojamiento en el mundo, pero pocos de ellos proporcionan soporte oficial de FreeBSD. Normalmente proporcionan una distribución Linux(R) para ser instalada en los servidores que ofrecen.

En algunos casos, estas compañías instalarán tu distribución Linux(R) favorita si lo pides. Usando esta opción, intentaremos instalar FreeBSD. En otros casos, podrían ofrecer un sistema de rescate que se podría usar en una emergencia. Es posible usar esto también para nuestros propósitos.

Este artículo cubre los pasos básicos de instalación y configuración que se necesitan para lanzar una instalación remota de FreeBSD con capacidades RAID-1 y ZFS.

[[intro]]
== Introducción

Esta sección resumirá el propósito del artículo y explicará mejor lo que se trata en este documento. Las instrucciones incluidas beneficiarán a quienes utilicen los servicios proporcionados por las instalaciones de colocación de servidores que no admiten FreeBSD.

[.procedure]
====
. Como hemos mencionado en la sección <<background>>, muchas de las compañías reputadas de hospedaje de servidores proporcionan alguna clase de sistema de rescate, el cual es arrancado desde su LAN y es accesible mediante SSH. Normalmente proporcionan este soporte para ayudar a sus clientes a arreglar sus sistemas operativos rotos. Como explicará este artículo, es posible instalar FreeBSD con la ayuda de estos sistemas de rescate.
+
. La próxima sección de este articulo describirá cómo configurar y construir un sistema FreeBSD minimalista en la máquina local. Esa versión eventualmente se ejecutará en la máquina remota desde un ramdisk, lo que nos permitirá instalar un sistema operativo FreeBSD completo desde un mirror FTP usando la utilidad sysinstall.
. El resto de este artículo describirá el procedimiento de instalación en sí mismo, así como la configuración del sistema de ficheros ZFS.
====

[[requirements]]
=== Requisitos

Para continuar con éxito, debes:

* Tener acceso a un sistema operativo con acceso a red y SSH
* Entender el proceso de instalación de FreeBSD
* Familiarizarte con la utilidad man:sysinstall[8]
* Tener a mano un CD o imagen ISO de instalación de FreeBSD

[[preparation]]
== Preparación - mfsBSD

Antes de poder instalar FreeBSD en el sistema de destino, es necesario crear la imagen mínima de FreeBSD que se iniciará desde el disco duro. De esta manera, se puede acceder al nuevo sistema desde la red, y el resto de la instalación se puede hacer sin acceso remoto a la consola del sistema.

El conjunto de herramientas msfBS se puede utilizar para construir una imagen FreeBSD diminuta. Como el nombre de msfBSD sugiere ("mfs" significa "memory file system"), la imagen resultante se ejecuta completamente desde un ramdisk. Gracias a esta característica, la manipulación de discos duros no está limitada, por lo tanto será posible instalar un sistema operativo FreeBSD completo. La http://mfsbsd.vx.sk/[página del proyecto] mfsBSD incluye enlaces a la última release de la herramienta.

Por favor, ten en cuenta que el funcionamiento interno de mfsBSD y cómo encaja todo junto está fuera del alcance de este artículo. El lector que esté interesado debería consultar la documentación original de mfsBSD para más detalles.

Descarga y extrae la última versión de mfsBSD y cambia tu directorio de trabajo al directorio donde residirán los scripts de mfsBSD:

[source, shell]
....
# fetch http://mfsbsd.vx.sk/release/mfsbsd-2.1.tar.gz
# tar xvzf mfsbsd-2.1.tar.gz
# cd mfsbsd-2.1/
....

[[mfsbsd-config]]
=== Configuración de mfsBSD

Antes de iniciar mfsBSD, deben establecerse algunas opciones de configuración importantes. Lo más importante que tenemos que hacer bien es, naturalmente, la configuración de red. El método más adecuado para configurar las opciones de red dependerá de si conocemos previamente el tipo de interfaz de red que usaremos, y el controlador de red que se cargará para nuestro hardware. Veremos cómo se puede configurar mfsBSD en cualquier caso.

Otra cosa importante que configurar es la contraseña de `root`. Esto se puede hacer editando [.filename]#conf/loader.conf#. Por favor, lee los comentarios que ahí se incluyen.

==== El método [.filename]#conf/interfaces.conf#

Cuando se desconoce la tarjeta de red instalada, es posible utilizar las funciones de detección automática de mfsBSD. Los scripts de inicio de mfsBSD pueden detectar el controlador correcto, según la dirección MAC de la interfaz, si configuramos las siguientes opciones en [.filename]#conf/interfaces.conf#:

[.programlisting]
....
mac_interfaces="ext1"
ifconfig_ext1_mac="00:00:00:00:00:00"
ifconfig_ext1="inet 192.168.0.2/24"
....

No te olvides de añadir la información `defaultrouter` a [.filename]#conf/rc.conf#:

[.programlisting]
....
defaultrouter="192.168.0.1"
....

==== El método [.filename]#conf/rc.conf#

Cuando el interfaz de red es conocido, es más conveniente utilizar [.filename]#conf/rc.conf# para las opciones de red. La sintaxis de este fichero es la misma que la usada en el fichero estándar man:rc.conf[5] de FreeBSD.

Por ejemplo, si sabes que la interfaz de red man:re[4] va a estar disponible, puedes establecer las siguientes opciones en [.filename]#conf/rc.conf#:

[.programlisting]
....
defaultrouter="192.168.0.1"
ifconfig_re0="inet 192.168.0.2/24"
....

[[mfsbsd-build]]
=== Construyendo una Imagen de mfsBSD

El proceso de construir una imagen mfsBSD es bastante directo.

El primer paso es montar el CD de instalación de FreeBSD, o la imagen de instalación ISO en [.filename]#/cdrom#. Para el bien del ejemplo, en este artículo asumiremos que has descargado la ISO 10.1-RELEASE de FreeBSD. Montar esta imagen ISO en el directorio [.filename]#/cdrom# es fácil con la utilidad man:mdconfig[8]:

[source, shell]
....
# mdconfig -a -t vnode -u 10 -f FreeBSD-10.1-RELEASE-amd64-disc1.iso
# mount_cd9660 /dev/md10 /cdrom
....

Puesto que las versiones recientes de FreeBSD no contienen los conjuntos de distribución regulares, es necesario extraer los ficheros de la distribución desde los archivos que se encuentran en la imagen ISO:

[source, shell]
....
# mkdir DIST
# tar -xvf /cdrom/usr/freebsd-dist/base.txz -C DIST
# tar -xvf /cdrom/usr/freebsd-dist/kernel.txz -C DIST
....

Desués, construye la imagen arrancable de mfsBSD:

[source, shell]
....
# make BASE=DIST
....

[NOTE]
====
El `make` anterior se tiene que ejecutar desde el directorio raíz del árbol de directorios de mfsBSD, por ejemplo [.filename]#~/mfsbsd-2.1/#.
====

=== Arrancando mfsBSD

Ahora que la imagen mfsBSD está lista, se debe subir al sistema remoto ejecutando un sistema de rescate o una distribución de Linux(R) pre-instalada. La mejor herramienta para esta tarea es scp:

[source, shell]
....
# scp disk.img root@192.168.0.2:.
....

Para arrancar la imagen mfsBSD de forma apropiada, se tiene que situar en la primera unidad (arrancable) de la máquina. Esto se puede conseguir utilizando el siguiente ejemplo asumiendo que [.filename]#sda# es la primera unidad de disco arrancable:

[source, shell]
....
# dd if=/root/disk.img of=/dev/sda bs=1m
....

Si todo fue bien, la imagen debería estar ahora en el MBR de la primera unidad y la máquina se puede reiniciar. Controla que la máquina arranca correctamente con la herramienta man:ping[8]. Una vez que esté on-line, debería ser posible acceder a ella con man:ssh[1] como usuario `root` con la contraseña configurada.

[[installation]]
== Instalación del sistema operativo FreeBSD

El mfsBSD ha arrancado co éxito y debería ser posible conectarse mediante man:ssh[1]. Esta sección describirá cómo crear y etiquetar "slices" de disco, configurar `gmirror` para RAID-1, y cómo utilizar `sysinstall` para instalar una distribución mínima del sistema operativo FreeBSD.

=== Preparación de los discos duros

La primera tarea es reservar espacio de disco para FreeBSD, es decir: crear particiones y "slices". Obviamente, el sistema que está actualmente en ejecución está cargado completamente en memoria y por lo tanto no habrá problemas al manipular los discos duros. Para completar la tarea, es posible usar tanto `sysinstall` como man:fdisk[8] junto con man:bsdlabel[8].

Al principio, marca todos los discos del sistema como vacíos. Repite el siguiente comando para cada disco duro:

[source, shell]
....
# dd if=/dev/zero of=/dev/ad0 count=2
....

Después, crea los "slices" y etiquétalos con tu herramienta preferida. Aunque `sysinstall` es considerada más fácil de usar, un método potente y quizás menos propenso a errores será usar herramientas UNIX(R) estándar en modo texto, como man:fdisk[8] y man:bsdlabel[8], que se cubrirán también en esta sección. La primera opción está bien documentada en el capítulo extref:{handbook}[Instalar FreeBSD, install-steps] del FreeBSD Handbook. Como se mencionó en la introducción, esta artículo presentará cómo configurara un sistema con RAID-1 y capacidades ZFS. Nuestra configuración consistirá en un pequeño [.filename]#/# (root), [.filename]#/usr# y [.filename]#/var# configurado en espejo con man:gmirror[8] y el resto del espacio en disco será reservado para un man:zpool[8] en espejo de un sistema de ficheros ZFS. Por favor, date cuenta de que el sistema de ficheros ZFS se configurará después de que el sistema operativo FreeBSD haya sido instalado con éxito y arrancado.

El siguiente ejemplo describirá cómo crear "slices" y etiquetas, inicializar man:gmirror[8] en cada partición y cómo crear un sistema de ficheros UFS2 en cada partición en espejo:

[source, shell]
....
# fdisk -BI /dev/ad0 <.>
# fdisk -BI /dev/ad1
# bsdlabel -wB /dev/ad0s1 <.>
# bsdlabel -wB /dev/ad1s1
# bsdlabel -e /dev/ad0s1 <.>
# bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /dev/ad1s1 /tmp/bsdlabel.txt <.>
# gmirror label root /dev/ad[01]s1a <.>
# gmirror label var /dev/ad[01]s1d
# gmirror label usr /dev/ad[01]s1e
# gmirror label -F swap /dev/ad[01]s1b <.>
# newfs /dev/mirror/root <.>
# newfs /dev/mirror/var
# newfs /dev/mirror/usr
....

<.> Crea una slice que use todo el disco e inicializa el boot code del sector 0 del disco seleccionado. Repite este comando para todos los discos duros en el sistema.

<.> Escribe una etiqueta estándar para cada disco, incluido el código de arranque.

<.> Ahora edita manualmente la etiqueta del disco. Lee la página de manual de man:bsdlabel[8] para averiguar cómo crear particiones. Crea particiones `a` para el sistema de ficheros [.filename]#/# (root), `b` para swap, `d` para [.filename]#/var#, `e` para [.filename]#/usr# y finalmente `f` para ser usada más tarde por ZFS.

<.> Importa la etiqueta creada recientemente para el segundo disco duro, de forma que los dos discos estén etiquetados de la misma forma.

<.> Inicializa man:gmirror[8] en cada partición.

<.> Ten en cuenta que se utiliza `-F` para la partición swap. Esto indica a man:gmirror[8] que asuma que el dispositivo estará en un estado consistente después de un error del sistema/fuente de energía.

<.> Crea un sistema de ficheros UFS2 en cada partición del espejo.

=== Instalación del sistema

Esta es la parte más importante. Esta sección describirá cómo instalar la distribución mínima de FreeBSD en los discos duros que hemos preparado en la sección anterior. Para lograr este objetivo, todos los sistemas de archivos deben montarse, para que `sysinstall` pueda escribir el contenido de FreeBSD en los discos duros:

[source, shell]
....
# mount /dev/mirror/root /mnt
# mkdir /mnt/var /mnt/usr
# mount /dev/mirror/var /mnt/var
# mount /dev/mirror/usr /mnt/usr
....

Cuando hayas terminado, arranca man:sysinstall[8]. Selecciona la instalación [.guimenuitem]#Custom# en el menú principal. Selecciona [.guimenuitem]#Options# y presiona kbd:[Enter]. Con la ayuda de las teclas de dirección, mueve el cursor al elemento `Install Root`, presiona kbd:[Space] y cámbialo a [.filename]#/mnt#. Presiona kbd:[Enter] para hacer los cambios y sal del menú [.guimenuitem]#Options# presionando kbd:[q].

[WARNING]
====
Ten en cuenta que este paso es muy importante y si lo omites, `sysinstall` no será capaz de instalar FreeBSD.
====

Ve al menú [.guimenuitem]#Distributions#, mueve el cursor con las teclas de dirección a `Minimal`, y márcala presionando kbd:[Space]. Este artículo utiliza la distribución Minimal para ahorrar tráfico de red, porque el sistema en sí mismo será instalado mediante ftp. Sal de este menú escogiendo `Exit`.

[NOTE]
====
Los menús [.guimenuitem]#Partition# y [.guimenuitem]#Label# se omitirán ya que ahora son inútiles.
====

En el menú [.guimenuitem]#Media#, selecciona `FTP`. Selecciona el mirror más cercano y deja que `sysinstall` asuma que la red ya está configurada. Se te redirigirá de vuelta al menú [.guimenuitem]#Custom#.

Finalmente, realiza la instalación del sistema seleccionando la última opción, [.guimenuitem]#Commit#. Sal de `sysinstall` cuando finalice la instalación.

=== Pasos posteriores a la instalación

El sistema operativo FreBSD ya debería estar instalado; sin embargo, el proceso aún no ha terminado. Es necesario realizar algunos pasos posteriores a la instalación para permitir que FreeBSD se inicie en el futuro y para poder iniciar sesión en el sistema.

Ahora debes hacer man:chroot[8] en el sistema recién instalado para poder finalizar la instalación. Utiliza el siguiente comando:

[source, shell]
....
# chroot /mnt
....

Para completar nuestro objetivo, sigue estos pasos:

* Copia el kernel `GENERIC` al directorio [.filename]#/boot/kernel#:
+
[source, shell]
....
# cp -Rp /boot/GENERIC/* /boot/kernel
....

* Crea los ficheros [.filename]#/etc/rc.conf#, [.filename]#/etc/resolv.conf# y [.filename]#/etc/fstab#. No olvides configurar la información de red y habilitar sshd en [.filename]#/etc/rc.conf#. El contenido de [.filename]#/etc/fstab# será similar a lo siguiente:
+
[.programlisting]
....
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/swap        none            swap    sw              0       0
/dev/mirror/root        /               ufs     rw              1       1
/dev/mirror/usr         /usr            ufs     rw              2       2
/dev/mirror/var         /var            ufs     rw              2       2
/dev/cd0                /cdrom          cd9660  ro,noauto       0       0
....
* Crea [.filename]#/boot/loader.conf# con el siguiente contenido:
+
[.programlisting]
....
geom_mirror_load="YES"
zfs_load="YES"
....
* Ejecuta el siguiente comando, el cual hará que ZFS esté disponible en el siguiente arranque:
+
[source, shell]
....
# sysrc zfs_enable="YES"
....

* Añade usuarios adicionales al sistema usando la herramienta man:adduser[8]. No olvides añadir un usuario al grupo `wheel` de forma que puedas obtener acceso root después del reinicio.
* Vuelve a comprobar todas sus configuraciones.

Ahora el sistema debería estar listo para el siguiente arranque. Utiliza el comando man:reboot[8] para reiniciar tu sistema.

[[zfs]]
== ZFS

Si tu sistema sobrevivió al reinicio, ahora deberías poder iniciar sesión. ¡Bienvenido a la nueva instalación de FreeBSD, realizada de forma remota sin el uso de una consola remota!

El único paso que queda es configurar man:zpool[8] y crear algunos sistemas de ficheros man:zfs[8]. Crear y administrar ZFS es muy directo. Primero crea un pool en mirror:

[source, shell]
....
# zpool create tank mirror /dev/ad[01]s1f
....

A continuación, crea algunos sistemas de archivos:

[source, shell]
....
# zfs create tank/ports
# zfs create tank/src
# zfs set compression=gzip tank/ports
# zfs set compression=on tank/src
# zfs set mountpoint=/usr/ports tank/ports
# zfs set mountpoint=/usr/src tank/src
....

Eso es todo. Si estás interesado en más detalles acerca de ZFS en FreeBSD, por favor dirígete a la sección https://wiki.freebsd.org/ZFS[ZFS] en la Wiki de FreeBSD.