Preboot Execution Environment (Español)
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.
Instale dnsmasq y configure de la siguiente manera:
# 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).
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 [[[Systemd (Español)/Journal (Español)|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
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—. Después de configurar el servidor, agregue la siguiente línea a su archivo /etc/exports
:
/etc/exports
/mnt/archiso 192.168.0.0/24(ro,no_subtree_check)
Si el servidor ya estaba en marcha, reexporte los sistemas de archivos con exportfs -r -a -v
.
La configuración por defecto del instalador espera encontrar el servidor NFS en /run/archiso/bootmnt
, por lo que tendrá que modificar las opciones de arranque. Para ello, presione la tecla Tab sobre el menú de arranque apropiado para elegir y editar la opción archiso_nfs_srv
que corresponda:
archiso_nfs_srv=${pxeserver}:/mnt/archiso
De otro modo, puede utilizar /run/archiso/bootmnt
para completar el proceso.
Una vez cargado el kernel, la imgen bootstrap de Arch copiará el sistema de archivos root a través de NFS para el arranque del equipo anfitrión. Una vez que esto se haya completado, tendrá un sistema en ejecución.
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.