Difference between revisions of "PXE (Español)"

From ArchWiki
Jump to: navigation, search
(Creación del esqueleto)
 
(PXE translated into spanish)
(One intermediate revision by the same user not shown)
Line 10: Line 10:
 
{{Article summary wiki|Network Installation Guide}}
 
{{Article summary wiki|Network Installation Guide}}
 
{{Article summary end}}
 
{{Article summary end}}
 +
De [[Wikipedia:Preboot Execution Environment]]:
 +
:''Preboot eXecution Environment (PXE) (Entorno de ejecución de prearranque), es un entorno para arrancar e instalar el sistema operativo en ordenadores a través de una red, de manera independiente de los dispositivos de almacenamiento de datos disponibles (como discos duros) o de los sistemas operativos instalados.''
 +
 +
En esta guía, PXE se usa para arrancar los medios de instalación con una Option Rom apropiada que soporte PXE como objetivo.
 +
 +
== Preparación ==
 +
 +
Descarga el medio de instalación más reciente de [https://www.archlinux.org/download/ aquí].
 +
 +
A continuación monta la imagen:
 +
 +
{{bc|1=
 +
# mkdir -p /mnt/archiso
 +
# mount -o loop,ro archlinux-2013.02.01-dual.iso /mnt/archiso}}
 +
 +
== Instalación del servidor ==
 +
 +
Necesitarás instalar un servidor, TFTP, y HTTP para configurar la red, cargar pxelinux/kernel/initramfs, y finalmente cargar el sistema de archivos de la raíz (respectivamente).
 +
 +
=== Red ===
 +
 +
Activa tu tarjeta de red ethernet, y asignale una dirección apropiada.
 +
 +
{{bc|1=
 +
# ip link set eth0 up
 +
# ip addr add 192.168.0.1/24 dev eth0}}
 +
 +
=== DHCP + TFTP ===
 +
 +
Necesitarás servidores DHCP y TFTP para configurar la red en el directorio de instalación y para facilitar la transferencia de archivos entre PXE servidor y cliente; dnsmasq hace las cos cosas, y es extremadamente fácil de instalar.
 +
 +
Instala {{pkg|dnsmasq}}:
 +
 +
{{bc|# pacman -S dnsmasq}}
 +
 +
Configura {{pkg|dnsmasq}}:
 +
 +
{{hc|# vim /etc/dnsmasq.conf|2=
 +
port=0
 +
interface=eth0
 +
bind-interfaces
 +
dhcp-range=192.168.0.50,192.168.0.150,12h
 +
dhcp-boot=/arch/boot/syslinux/pxelinux.0
 +
dhcp-option-force=209,boot/syslinux/archiso.cfg
 +
dhcp-option-force=210,/arch/
 +
enable-tftp
 +
tftp-root=/mnt/archiso}}
 +
 +
Inicia {{pkg|dnsmasq}}:
 +
 +
{{bc|# systemctl start dnsmasq.service}}
 +
 +
=== HTTP ===
 +
 +
Gracias a recientes cambios en [[Archiso (Español)|archiso]], ahora es posible arrancar desde HTTP (archiso_pxe_http initcpio hook) o NFS (archiso_pxe_nfs initcpio hook); de entre todas las posibilidades, darkhttpd es de lejos el mas sencillo de instalar (y el más ligero).
 +
 +
Primero, instala {{pkg|darkhttpd}}:
 +
 +
{{bc|# pacman -S darkhttpd}}
 +
 +
Luego inicia {{pkg|darkhttpd}} usando /mnt/archiso como raíz de los archivos:
 +
 +
{{hc|# darkhttpd /mnt/archiso|2=
 +
darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic.
 +
listening on: http://0.0.0.0:80/}}
 +
 +
== Instalación ==
 +
 +
Para esta parte, necesitarás averiguar como decirle al cliente que realice un arranque con PXE; en la esquina de la pantalla junto con los mensajes normales, normalmente habrá alguna pista de que tecla apretar para intentar arrancar primero con PXE. En un IBM x3650 ''F12'' sale un menú de arranque, la primera opción del cual es ''Network'' ("Red"); en un Dell PE 1950/2950 apretar ''F12'' inicia el arranque con PXE directamente.
 +
 +
=== Arranque ===
 +
 +
Leer [[Systemd (Español)#Journal|journald]] en el servidor PXE debería proveernos de cierta información sobre lo que pasa durante las primeras fases del proceso de arranque de PXE:
 +
{{hc|<nowiki># journalctl -u dnsmasq -f</nowiki>|2=
 +
<nowiki>
 +
dnsmasq-dhcp[2544]: DHCPDISCOVER(eth1) 00:1a:64:6a:a2:4d
 +
dnsmasq-dhcp[2544]: DHCPOFFER(eth1) 192.168.0.110 00:1a:64:6a:a2:4d
 +
dnsmasq-dhcp[2544]: DHCPREQUEST(eth1) 192.168.0.110 00:1a:64:6a:a2:4d
 +
dnsmasq-dhcp[2544]: DHCPACK(eth1) 192.168.0.110 00:1a:64:6a:a2:4d
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/pxelinux.0 to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso.cfg to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/whichsys.c32 to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe_choose.cfg to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/ifcpu64.c32 to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe_both_inc.cfg to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_head.cfg to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe32.cfg to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe64.cfg to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_tail.cfg to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/vesamenu.c32 to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/splash.png to 192.168.0.110</nowiki>}}
 +
 +
Tras cargar {{ic|pxelinux.0}} y {{ic|archiso.cfg}} vía TFTP, se presentará (ojalá) un menú de arranque [[Syslinux (Español)|syslinux]] con varias opciones, dos de la cuales nos serán especialmente útiles.
 +
 +
Selecciona
 +
 +
{{bc|Boot Arch Linux (x86_64) (HTTP)}}
 +
 +
o
 +
 +
{{bc|Boot Arch Linux (i686) (HTTP)}}
 +
 +
dependiendo de la arquitectura de tu CPU.
 +
 +
Luego el kernel y initramfs (de acuerdo con la arquitectura seleccionada) serán transferidos vía TFTP:
 +
 +
{{bc|1=
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/x86_64/vmlinuz to 192.168.0.110
 +
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/x86_64/archiso.img to 192.168.0.110}}
 +
 +
Si todo va bien, tras esto deberías ver actividad en darkhttpd proviniente del objetivo PXE; en este momento el kernel debería estar cargado en el objetivo PXE, e iniciado:
 +
 +
{{bc|1=
 +
1348347586 192.168.0.110 "GET /arch/aitab" 200 678 "" "curl/7.27.0"
 +
1348347587 192.168.0.110 "GET /arch/x86_64/root-image.fs.sfs" 200 107860206 "" "curl/7.27.0"
 +
1348347588 192.168.0.110 "GET /arch/x86_64/usr-lib-modules.fs.sfs" 200 36819181 "" "curl/7.27.0"
 +
1348347588 192.168.0.110 "GET /arch/any/usr-share.fs.sfs" 200 63693037 "" "curl/7.27.0"}}
 +
 +
Tras la descarga de la raíz del sistema vía HTTP, finalmente acabarás en un terminal zsh como superusuario, con un fantástico [https://www.archlinux.org/packages/extra/any/grml-zsh-config/ grml config].
 +
 +
=== Tras el arranque ===
 +
 +
A no ser que quieras que todo el tráfico pase por tu servidor PXE (que igualmente no funcionará a no ser que [[Simple Stateful Firewall#Setting up a NAT gateway|lo configures correctamente]]), te interesa detener {{pkg|dnsmasq}} y definir un nuevo asentamiento en el objetivo de la instalación, de acuerdo con el diseño de tu red.
 +
 +
{{bc|# systemctl stop dnsmasq.service}}
 +
 +
También puedes detener {{pkg|darkhttpd}}; el objetivo ya ha descargado el sistema de archivos base, así que ya no es necesario. Mientras lo haces, también puedes desmontar la imagen de desinstalación:
 +
 +
{{bc|# umount /mnt/archiso}}
 +
 +
Ahora ya puedes seguir la [[Installation Guide (Español)|guía oficial de instalación]].
 +
 +
== Métodos Alternativos ==
 +
 +
{{Accuracy|Verificación}}
 +
{{Expansion}}
 +
 +
Por estar implicado con el menú syslinux, hay varias alternativas más:
 +
 +
=== NFS ===
 +
 +
Necesitarás instalar un [[NFS|servidor NFS]] exportando la raíz a la raíz de tu medio de instalación montado -- sería {{ic|/mnt/archiso}} si seguiste las [[Preparación|primeras secciones]] de esta guía.
 +
 +
=== NBD ===
 +
 +
Instala {{pkg|nbd}} y configúralo:
 +
 +
{{hc|# vim /etc/nbd-server/config|2=
 +
[generic]
 +
[archiso]
 +
    readonly = true
 +
    exportname = /srv/archlinux-2013.02.01-dual.iso}}
 +
 +
=== Memoria baja ===
 +
 +
Puedes usar la opción {{ic|copytoram}} de [[mkinitcpio (Español)|initramfs]] para controlar si la raíz del sitema de archivos debe copiarse a la ram integramente en el inicio del arranque.
 +
 +
Es muy recomendado dejar esta opción, y solo desactivarla si es realmente necesario (sistemas con menos de ~256MB de memoria RAM). Añade {{ic|<nowiki>copytoram=n</nowiki>}} a la línea del kernel si quieres hacer esto.

Revision as of 18:31, 2 March 2013

Sumario help replacing me
Guía detallada para arrancar medios de instalación oficiales vía PXE.
Relacionados
Network Installation Guide

De Wikipedia:Preboot Execution Environment:

Preboot eXecution Environment (PXE) (Entorno de ejecución de prearranque), es un entorno para arrancar e instalar el sistema operativo en ordenadores a través de una red, de manera independiente de los dispositivos de almacenamiento de datos disponibles (como discos duros) o de los sistemas operativos instalados.

En esta guía, PXE se usa para arrancar los medios de instalación con una Option Rom apropiada que soporte PXE como objetivo.

Preparación

Descarga el medio de instalación más reciente de aquí.

A continuación monta la imagen:

# mkdir -p /mnt/archiso
# mount -o loop,ro archlinux-2013.02.01-dual.iso /mnt/archiso

Instalación del servidor

Necesitarás instalar un servidor, TFTP, y HTTP para configurar la red, cargar pxelinux/kernel/initramfs, y finalmente cargar el sistema de archivos de la raíz (respectivamente).

Red

Activa tu tarjeta de red ethernet, y asignale una dirección apropiada.

# ip link set eth0 up
# ip addr add 192.168.0.1/24 dev eth0

DHCP + TFTP

Necesitarás servidores DHCP y TFTP para configurar la red en el directorio de instalación y para facilitar la transferencia de archivos entre PXE servidor y cliente; dnsmasq hace las cos cosas, y es extremadamente fácil de instalar.

Instala dnsmasq:

# pacman -S dnsmasq

Configura dnsmasq:

# vim /etc/dnsmasq.conf
port=0
interface=eth0
bind-interfaces
dhcp-range=192.168.0.50,192.168.0.150,12h
dhcp-boot=/arch/boot/syslinux/pxelinux.0
dhcp-option-force=209,boot/syslinux/archiso.cfg
dhcp-option-force=210,/arch/
enable-tftp
tftp-root=/mnt/archiso

Inicia dnsmasq:

# systemctl start dnsmasq.service

HTTP

Gracias a recientes cambios en archiso, ahora es posible arrancar desde HTTP (archiso_pxe_http initcpio hook) o NFS (archiso_pxe_nfs initcpio hook); de entre todas las posibilidades, darkhttpd es de lejos el mas sencillo de instalar (y el más ligero).

Primero, instala darkhttpd:

# pacman -S darkhttpd

Luego inicia darkhttpd usando /mnt/archiso como raíz de los archivos:

# darkhttpd /mnt/archiso
darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic.
listening on: http://0.0.0.0:80/

Instalación

Para esta parte, necesitarás averiguar como decirle al cliente que realice un arranque con PXE; en la esquina de la pantalla junto con los mensajes normales, normalmente habrá alguna pista de que tecla apretar para intentar arrancar primero con PXE. En un IBM x3650 F12 sale un menú de arranque, la primera opción del cual es Network ("Red"); en un Dell PE 1950/2950 apretar F12 inicia el arranque con PXE directamente.

Arranque

Leer journald en el servidor PXE debería proveernos de cierta información sobre lo que pasa durante las primeras fases del proceso de arranque de PXE:

# journalctl -u dnsmasq -f
dnsmasq-dhcp[2544]: DHCPDISCOVER(eth1) 00:1a:64:6a:a2:4d 
dnsmasq-dhcp[2544]: DHCPOFFER(eth1) 192.168.0.110 00:1a:64:6a:a2:4d 
dnsmasq-dhcp[2544]: DHCPREQUEST(eth1) 192.168.0.110 00:1a:64:6a:a2:4d 
dnsmasq-dhcp[2544]: DHCPACK(eth1) 192.168.0.110 00:1a:64:6a:a2:4d 
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/pxelinux.0 to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso.cfg to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/whichsys.c32 to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe_choose.cfg to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/ifcpu64.c32 to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe_both_inc.cfg to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_head.cfg to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe32.cfg to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_pxe64.cfg to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/archiso_tail.cfg to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/vesamenu.c32 to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/syslinux/splash.png to 192.168.0.110

Tras cargar pxelinux.0 y archiso.cfg vía TFTP, se presentará (ojalá) un menú de arranque syslinux con varias opciones, dos de la cuales nos serán especialmente útiles.

Selecciona

Boot Arch Linux (x86_64) (HTTP)

o

Boot Arch Linux (i686) (HTTP)

dependiendo de la arquitectura de tu CPU.

Luego el kernel y initramfs (de acuerdo con la arquitectura seleccionada) serán transferidos vía TFTP:

dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/x86_64/vmlinuz to 192.168.0.110
dnsmasq-tftp[2544]: sent /mnt/archiso/arch/boot/x86_64/archiso.img to 192.168.0.110

Si todo va bien, tras esto deberías ver actividad en darkhttpd proviniente del objetivo PXE; en este momento el kernel debería estar cargado en el objetivo PXE, e iniciado:

1348347586 192.168.0.110 "GET /arch/aitab" 200 678 "" "curl/7.27.0"
1348347587 192.168.0.110 "GET /arch/x86_64/root-image.fs.sfs" 200 107860206 "" "curl/7.27.0"
1348347588 192.168.0.110 "GET /arch/x86_64/usr-lib-modules.fs.sfs" 200 36819181 "" "curl/7.27.0"
1348347588 192.168.0.110 "GET /arch/any/usr-share.fs.sfs" 200 63693037 "" "curl/7.27.0"

Tras la descarga de la raíz del sistema vía HTTP, finalmente acabarás en un terminal zsh como superusuario, con un fantástico grml config.

Tras el arranque

A no ser que quieras que todo el tráfico pase por tu servidor PXE (que igualmente no funcionará a no ser que lo configures correctamente), te interesa detener dnsmasq y definir un nuevo asentamiento en el objetivo de la instalación, de acuerdo con el diseño de tu red.

# systemctl stop dnsmasq.service

También puedes detener darkhttpd; el objetivo ya ha descargado el sistema de archivos base, así que ya no es necesario. Mientras lo haces, también puedes desmontar la imagen de desinstalación:

# umount /mnt/archiso

Ahora ya puedes seguir la guía oficial de instalación.

Métodos Alternativos

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: Verificación (Discuss in Talk:PXE (Español)#)

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:PXE (Español)#)

Por estar implicado con el menú syslinux, hay varias alternativas más:

NFS

Necesitarás instalar un servidor NFS exportando la raíz a la raíz de tu medio de instalación montado -- sería /mnt/archiso si seguiste las primeras secciones de esta guía.

NBD

Instala nbd y configúralo:

# vim /etc/nbd-server/config
[generic]
[archiso]
    readonly = true
    exportname = /srv/archlinux-2013.02.01-dual.iso

Memoria baja

Puedes usar la opción copytoram de initramfs para controlar si la raíz del sitema de archivos debe copiarse a la ram integramente en el inicio del arranque.

Es muy recomendado dejar esta opción, y solo desactivarla si es realmente necesario (sistemas con menos de ~256MB de memoria RAM). Añade copytoram=n a la línea del kernel si quieres hacer esto.