Instalación e Configuración dun Servidor PXE: Diferenzas entre revisións
(Non se amosan 54 revisións do historial feitas polo mesmo usuario.) | |||
Liña 18: | Liña 18: | ||
*Servidor TFTP |
*Servidor TFTP |
||
<b>Nota:</b> O servidor DHCP e o Servidor TFTP non teñen porque estar na mesma máquina |
|||
==Proceso de arranque do Servidor PXE en Detalle== |
==Proceso de arranque do Servidor PXE en Detalle== |
||
Liña 28: | Liña 28: | ||
=Configuracións de Rede Iniciais= |
=Configuracións de Rede Iniciais= |
||
*Empregaremos <b>Virtualbox</b> para simular ambos equipos. |
*Empregaremos <b>Virtualbox</b> para simular ambos equipos. |
||
[[File:redepxe.png|center|thumb|500px]] |
|||
*O Servidor terá instalado un sistema <b>Debian Jessie</b> actualizado |
*O Servidor terá instalado un sistema <b>Debian Jessie</b> actualizado |
||
*O Servidor terá dúas tarxetas de rede, A <b>configuración da rede do servidor será</b> |
*O Servidor terá dúas tarxetas de rede, A <b>configuración da rede do servidor será</b> |
||
Liña 59: | Liña 61: | ||
ping 172.20.4.100 |
ping 172.20.4.100 |
||
</source> |
</source> |
||
==Acceso dende o equipo real á |
==Acceso dende o equipo real á Máquina Virtual con NAT== |
||
Empregamos <b>VirtualBox</b> para simular a nosa rede. |
|||
A 1º tarxeta de rede da MV está configurada por NAT, polo que non podemos comunicar o equipo real coa MV. |
|||
A 1º tarxeta de rede do Servidor PXE está configurada por NAT, polo que non podemos comunicar o equipo real coa MV. |
|||
Para facelo podemos empregar redireccionamento de portos (<b>port forwarding</b>). |
Para facelo podemos empregar redireccionamento de portos (<b>port forwarding</b>). |
||
Liña 104: | Liña 107: | ||
=Instalación do Servidor PXE= |
=Instalación do Servidor PXE= |
||
==Instalamos un servidor dhcp== |
==Instalamos un servidor dhcp== |
||
*Instalamos |
*Instalamos o paquete necesario |
||
<source lang='bash'> |
<source lang='bash'> |
||
apt-get install isc-dhcp-server |
apt-get install isc-dhcp-server |
||
</source> |
</source> |
||
*Modificamos |
*Modificamos os arquivos de configuración correspondentes |
||
<source lang='bash'> |
<source lang='bash'> |
||
/etc/default/isc-dhcp-server |
/etc/default/isc-dhcp-server |
||
INTERFACES=”eth1” |
INTERFACES=”eth1” |
||
</source> |
|||
<source lang='bash'> |
|||
/etc/dhcp/dhcpd.conf |
/etc/dhcp/dhcpd.conf |
||
############################################################### |
|||
# |
# Comentamos as seguintes liñas para que non espere un timeout |
||
############################################################### |
|||
#option domain-name "example.org"; |
#option domain-name "example.org"; |
||
#option domain-name-servers ns1.example.org, ns2.example.org; |
#option domain-name-servers ns1.example.org, ns2.example.org; |
||
############################################################### |
|||
# Descomentamos a seguinte liña |
|||
############################################################### |
|||
# If this DHCP server is the official DHCP server for the local |
# If this DHCP server is the official DHCP server for the local |
||
# network, the authoritative directive should be uncommented. |
# network, the authoritative directive should be uncommented. |
||
authoritative; |
|||
############################################################### |
|||
authoritative; # O descomentamos |
|||
# Definimos un rango de direccións a asignar entre 10 e 20. |
|||
############################################################### |
|||
# Definimos un rango de direcciónes a asignar entre 10 e 20. |
|||
subnet 172.20.0.0 netmask 255.255.0.0 { |
subnet 172.20.0.0 netmask 255.255.0.0 { |
||
range 172.20.2.10 172.20.2.20; |
range 172.20.2.10 172.20.2.20; |
||
############################################ |
|||
# Necesario para configurar o Servidor PXE |
|||
############################################ |
|||
# Servidor PXE |
|||
next-server 172.20.4.100; |
next-server 172.20.4.100; |
||
filename “pxelinux.0”; |
filename “pxelinux.0”; |
||
Liña 167: | Liña 177: | ||
<source lang='bash'> |
<source lang='bash'> |
||
cd /srv/tftp |
cd /srv/tftp |
||
wget http://ftp.nl.debian.org/debian/dists/testing/main/installer-amd64/current/images/netboot/ |
wget http://ftp.nl.debian.org/debian/dists/testing/main/installer-amd64/current/images/netboot/netboot.tar.gz |
||
tar xzf netboot.tar.gz |
tar xzf netboot.tar.gz |
||
</source> |
</source> |
||
<b>Nota:</b> Nestes momentos hai un bug no netboot da rama testing, así que teremos que descargar a versión stable. |
|||
<source lang='bash'> |
|||
wget http://ftp.nl.debian.org/debian/dists/jessie/main/installer-amd64/current/images/netboot/netboot.tar.gz |
|||
</source> |
|||
*Aparecen as seguines carpetas e arquivos |
*Aparecen as seguines carpetas e arquivos |
||
<source lang='bash'> |
<source lang='bash'> |
||
Liña 175: | Liña 192: | ||
</source> |
</source> |
||
*O seu significado é o seguinte: |
*O seu significado é o seguinte: |
||
**debian-installer: Contén o núcleo do sistema |
**<b>debian-installer</b>: Contén o núcleo do sistema |
||
**pxelinux.0: É o cargador de arranque a través da rede, forma parte do proxecto syslinux |
**<b>pxelinux.0</b>: É o cargador de arranque a través da rede, forma parte do proxecto syslinux |
||
**pxelinux.cfg/default: É o arquivo de configuración de pxelinux, onde lle indica que kernel arrancar. Posteriormente empregaremos este arquivo para crear menús. |
**<b>pxelinux.cfg/default</b>: É o arquivo de configuración de pxelinux, onde lle indica que kernel arrancar. Posteriormente empregaremos este arquivo para crear menús. |
||
==Comprobamos== |
|||
*Iniciamos a máquina cliente coa súa tarxeta configurada na rede interna e arrancamos |
|||
<TABLE ALIGN="RIGHT" BORDER CELLSPACING="0" CELLPADDING="0"> |
|||
<TR ALIGN="CENTER"> |
|||
<TD>[[File:comprobamos1.png|center|thumb|500px]]</TD> |
|||
<TD>[[File:comprobamos2.png|center|thumb|500px]]</TD> |
|||
</TR> |
|||
<TR ALIGN="CENTER"> |
|||
<TD> |
|||
</TD> |
|||
<TD> |
|||
Como deixamos host IP baleiro, calquera máquina que se conecte o porto 2222 da nosa máquina comunicarase coa MV |
|||
</TD> |
|||
</TABLE> |
|||
*Comeza o proceso de instalación de Debian correctamente |
|||
*<b>Problema</b>: Non temos acceso a Internet. |
|||
*<b>Solución</b>: Temos que facer que o servidor PXE enrute a eth1 a eth0 para que así a rede interna teña acceso a Internet. |
|||
==Configurar Enrutamento no Servidor PXE== |
|||
*En /etc/sysctl.conf descomentamos |
|||
<source lang='bash'> |
|||
net.ipv4.ip_forward=1 |
|||
</source> |
|||
*Creamos un script coa nosa configuración personalizada |
|||
<source lang='bash'> |
|||
/etc/iptables-script.sh |
|||
#Configuración para enmascarar os paquetes recibidos da rede interna |
|||
iptables -t nat -A POSTROUTING -s 172.20.0.0/16 -o eth0 -j MASQUERADE |
|||
</source> |
|||
*Dámoslle permiso de execución |
|||
<source lang='bash'> |
|||
chmod +x /etc/iptables-script.sh |
|||
</source> |
|||
*Facemos que se execute o inicio |
|||
<source lang='bash'> |
|||
vi /etc/rc.local |
|||
#Cargamos a configuración de iptables |
|||
/etc/iptables-script.sh |
|||
</source> |
|||
*Modificamos a configuración do servidor DHCP |
|||
<source lang='bash'> |
|||
option domain-name-servers 8.8.8.8; # DNS |
|||
subnet 172.20.0.0 netmask 255.255.0.0 { |
|||
range 172.20.2.10 172.20.2.20; |
|||
option routers 172.20.4.100; #Porta de enlace (Ten que ser o servidor PXE) |
|||
….. |
|||
} |
|||
</source> |
|||
=Creando unha configuración Mulitidistro= |
|||
Agora xa temos un servidor PXE funcional que nos permite arrancar por rede a instalación de Debian, pero queremos que nos apareza un menú que nos permitar arrancar a nosa máquina con varias imaxes a través da rede. |
|||
==Reconfiguracion do instalador de Debian== |
|||
Para elo imos a deixar o noso <b>/srv/tftp</b> como sigue: |
|||
*Creamos unha carpeta boot onde teremos unha carpeta por cada sistema arrancable. |
|||
*Creamos dentro de boot a carpeta <b>strecht64</b> (A nosa distribución debian). Movemos todo o contido da instalación de Debian a /srv/tftp/boot/stretch64. |
|||
*Para poder arrancar pola rede, <b>necesitamos algúns arquivos de inicio</b>, que forman parte do paqute <b>syslinux</b> |
|||
**Poderíamos descargalos de [https://www.kernel.org/pub/linux/utils/boot/syslinux/ aquí] e descomprimir os que necesitásemos |
|||
**En vez diso, <b>imos a reempregar os que xa veñen coa instalación por rede do Debian</b> que temos descargado. |
|||
*Creamos unha carpeta para os arquivos necesarios para o arranque |
|||
<source lang='bash'> |
|||
mkdir /srv/tftp/libs |
|||
</source> |
|||
*Copiamos os seguintes arquivos |
|||
<source lang='bash'> |
|||
cp strecht64/debian-installer/amd64/pxelinux.0 /srv/tftp |
|||
cd strecht64/debian-installer/amd64/boot-screens/ |
|||
cp libcom32.c32 /srv/tftp/libs |
|||
cp libutil.c32 /srv/tftp/libs |
|||
cp vesamenu.c32 /srv/tftp/libs |
|||
cp splash.png /srv/tftp/libs |
|||
cp ldlinux.c32 /srv/tftp |
|||
</source> |
|||
*Creamos un arquivo baleiro para o menú |
|||
<source lang='bash'> |
|||
touch pxelinux.cfg/default |
|||
</source> |
|||
*A estructura de arquivos quedaría como sigue |
|||
<source lang='bash'> |
|||
usuario@debian:/srv/tftp# tree |
|||
. |
|||
├── boot |
|||
│ └── stretch64 |
|||
│ └── debian-installer |
|||
│ └── amd64 |
|||
│ │ ├── boot-screens |
|||
│ └── grub |
|||
├── libs |
|||
│ ├── libcom32.c32 |
|||
│ ├── libutil.c32 |
|||
│ ├── vesamenu.c32 |
|||
│ └── splash.png |
|||
├── ldlinux.c32 |
|||
├── pxelinux.0 |
|||
└── pxelinux.cfg |
|||
└── default |
|||
</source> |
|||
Editamos o arquivo pxelinux.cfg/default e creamos un menú para o noso debian |
|||
<source lang='bash'> |
|||
#Ruta onde se almacenan as librerias necesarias para o arranque |
|||
path ../libs |
|||
#Menu de arranque grafico |
|||
default libs/vesamenu.c32 |
|||
prompt 0 |
|||
timeout 300 |
|||
#imaxe de fondo 640x480 pixels |
|||
MENU BACKGROUND libs/splash.png |
|||
MENU TITLE Benvido a PXE |
|||
LABEL Debian Stretch 64 |
|||
MENU LABEL Debian Stretch 64 |
|||
KERNEL boot/stretch64/debian-installer/amd64/linux |
|||
APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz |
|||
</source> |
|||
[[File:Debian_boot1.png|center|thumb|500px]] |
|||
===Pasándolle parámetros o instalador Debian=== |
|||
De este xeito xa non teremos que escoller o idioma de instalación |
|||
<source lang='bash'> |
|||
LABEL Debian Stretch 64 |
|||
MENU LABEL Debian Stretch 64 |
|||
KERNEL boot/stretch64/debian-installer/amd64/linux |
|||
APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz locale=gl_ES.UTF-8 keymap=es language=es country=ES supported-locales=es_ES.UTF-8 |
|||
</source> |
|||
==Engadindo o System Rescue CD== |
|||
Queremos ter un menú multinivel coas seguintes opcións |
|||
*Instaladores |
|||
**Debian Stretch 64 |
|||
*Live-CD |
|||
**System Rescue CD |
|||
O SRCD non é tan sinxelo de configurar como a imaxe netboot de Debian. Nese caso, todo o que necesitaba para arrancar era o núcleo, pero o SRCD necesita durante o seu arranque acceder o arquivo sysrcd.dat. Por iso será necesario <b>instalar un servidor NFS</b> para compartilo na rede. |
|||
===Instalación dun servidor NFS=== |
|||
*Instalamos o paquete necesario |
|||
<source lang='bash'> |
|||
apt-get install nfs-kernel-server |
|||
</source> |
|||
*No arquivo de configuración compartimos unha carpeta como só lectura |
|||
<source lang='bash'> |
|||
/etc/exports |
|||
/srv/nfs/srcd 172.20.0.0/255.255.0.0(ro,sync) |
|||
</source> |
|||
*Reiniciamos o servicio |
|||
<source lang='bash'> |
|||
/etc/init.d/ssh restart |
|||
</source> |
|||
===Preparación dos arquivos do SRCD=== |
|||
*Primeiro creamos a carpeta onde se almacenará o arranque do SRCD. |
|||
<source lang='bash'> |
|||
mkdir /srv/tftp/boot/srcd |
|||
</source> |
|||
*Descargamos unha iso do SRCD e montámola na máquina virtual. |
|||
<source lang='bash'> |
|||
mount /dev/sr0 /media/cdrom |
|||
</source> |
|||
*Copiamos os arquivos necesarios para o arranque á carpeta /srv/tftp/boot/srcd |
|||
<source lang='bash'> |
|||
cp /media/cdrom/isolinux/initram.igz /srv/tftp/boot/srcd |
|||
cp /media/cdrom/isolinux/rescue* /srv/tftp/boot/srcd |
|||
</source> |
|||
*Copiamos o resto de arquivos necesarios a /srv/nfs/srcd |
|||
<source lang='bash'> |
|||
cp /media/cdrom/sysrcd.dat /srv/nfs/srcd |
|||
cp /media/cdrom/sysrcd.md5 /srv/nfs/srcd |
|||
</source> |
|||
===Modificamos o arquivo de configuración=== |
|||
Modificamos o menú de arranque pxelinux.cfg/default |
|||
<source lang='bash'> |
|||
###################### |
|||
# Opcións Xerais |
|||
###################### |
|||
#Ruta onde se almacenan as librerias necesarias para o arranque |
|||
path ../libs |
|||
#Menu de arranque grafico |
|||
default libs/vesamenu.c32 |
|||
prompt 0 |
|||
timeout 300 |
|||
#imaxe de fondo 640x480 pixels |
|||
MENU BACKGROUND libs/splash.png.1 |
|||
MENU COLOR HOTKEY 1;36;44 #fc0000 #00000000 |
|||
MENU TITLE Benvido a PXE |
|||
##################### |
|||
# Definición do menú |
|||
##################### |
|||
MENU BEGIN INSTALADORES |
|||
MENU TITLE INSTALADORES |
|||
LABEL Debian Stretch 64 |
|||
MENU LABEL ^Debian Stretch 64 |
|||
KERNEL boot/stretch64/debian-installer/amd64/linux |
|||
APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz locale=gl_ES.UTF-8 keymap=es language=es country=ES supported-locales=es_ES.UTF-8 |
|||
TEXT HELP |
|||
Instala Debian Stretch 64 bits. |
|||
ENDTEXT |
|||
LABEL volver |
|||
MENU LABEL ^Volver |
|||
MENU EXIT |
|||
TEXT HELP |
|||
Volta o menu principal. |
|||
ENDTEXT |
|||
MENU END |
|||
MENU BEGIN LIVE-CD |
|||
MENU TITLE LIVE-CD |
|||
LABEL SystemRescueCD |
|||
MENU LABEL ^System Rescue Cd 64 |
|||
KERNEL boot/srcd/rescue64 setkmap=es |
|||
APPEND initrd=boot/srcd/initram.igz netboot=nfs://172.20.4.100:/srv/nfs/srcd |
|||
TEXT HELP |
|||
Inicia o System Rescue CD con idioma castelan. |
|||
ENDTEXT |
|||
LABEL volver |
|||
MENU LABEL ^Volver |
|||
MENU EXIT |
|||
TEXT HELP |
|||
Volta o menu principal. |
|||
ENDTEXT |
|||
MENU END |
|||
</source> |
|||
<TABLE ALIGN="CENTER" BORDER CELLSPACING="0" CELLPADDING="0"> |
|||
<TR ALIGN="CENTER"> |
|||
<TD>[[File:multiboot1.png|center|thumb|500px]]</TD> |
|||
<TD>[[File:multiboot2.png|center|thumb|500px]]</TD> |
|||
</TR> |
|||
<TR ALIGN="CENTER"> |
|||
<TD> |
|||
Menú Principal |
|||
</TD> |
|||
<TD> |
|||
Menú Live-CD |
|||
</TD> |
|||
</TABLE> |
|||
===Melloras visuais no arquivo de configuración=== |
|||
Introducimos as seguintes modificacións: |
|||
*<b>Cambiamos a imaxe de fondo</b> |
|||
<source lang='bash'> |
|||
MENU BACKGROUND libs/splash.png.1 |
|||
</source> |
|||
Obtivémola de [[https://www.plop.at/images/ploplinux/splash.png aquí]] , pero vale calquera imaxe 640x480 |
|||
*<b>Teclas aceleradoras:</b> |
|||
<source lang='bash'> |
|||
MENU COLOR HOTKEY 1;36;44 #fc0000 #00000000 |
|||
MENU LABEL ^Debian Stretch 64 |
|||
</source> |
|||
Definimos a cor vermella.O premer D xa se selecciona esta opción |
|||
*<b>Mensaxe de axuda o seleccionar a opción</b> |
|||
<source lang='bash'> |
|||
TEXT HELP |
|||
Instala Debian Stretch 64 bits. |
|||
ENDTEXT |
|||
</source> |
|||
[[File:MultibootCores1.png|center|thumb|500px]] |
|||
===Personalizando o SRCD con scripts de arranque=== |
|||
Isto pode ser moi importante xa que nos pode permitir definir os nosos propios scripts de clonación e restauración. |
|||
<source lang='bash'> |
|||
LABEL SystemRescueCDAuto |
|||
MENU LABEL ^System Rescue Cd 64 Automatico |
|||
KERNEL boot/srcd/rescue64 setkmap=es |
|||
APPEND initrd=boot/srcd/initram.igz netboot=nfs://172.20.0.100:/srv/nfs/srcd ar_source=nfs://172.20.0.100:/srv/nfs/srcd ar_nowait |
|||
</source> |
|||
*ar_source: Indica a ruta do arquivo autorun |
|||
*ar_nowait: Inidica que non espere |
|||
Hai que poñer un arquivo autorun en /srv/nfs/srcd |
|||
Podemos definir alias en base a scripts que teñamos definidos no noso servidor |
|||
<source lang='bash'> |
|||
#!/bin/bash |
|||
dhclient eth0 |
|||
mount -t nfs -o nolock gandalf:/NFS/images /mnt/backup |
|||
alias clonar=’/mnt/scripts/restaurarWindows.sh’ |
|||
echo Funciona |
|||
exit 0 |
|||
</source> |
|||
===Engadindo unha contrasinal a unha opción de arrque=== |
|||
*Xeramos unha passwd encriptada con |
|||
<source lang='bash'> |
|||
# PASSWD Encriptada generada con |
|||
# openssl passwd -1 -salt sXiKzkus mypassword |
|||
</source> |
|||
*Engadimos a contrasinal o menú de arranque |
|||
<source lang='bash'> |
|||
LABEL SystemRescueCDAuto |
|||
MENU LABEL ^System Rescue Cd 64 Automatico |
|||
MENU PASSWD $1$sXiKzkus$XHG5rLQlceWdGB3gL0C8e. |
|||
KERNEL boot/srcd/rescue64 setkmap=es |
|||
APPEND initrd=boot/srcd/initram.igz netboot=nfs://172.20.0.100:/srv/nfs/srcd ar_source=nfs://172.20.0.100:/srv/nfs/srcd ar_nowait |
|||
</source> |
|||
==Engadindo ISO's de utilidades== |
|||
===Engadindo un identificador de Hardware (<b>HDT</b> Hardware Deteccion Tool)=== |
|||
*Imos a engadir unha categoría Utilidades o noso menú dende a que arrancaremos varias ferramentas en formato .iso. |
|||
*HDT analiza o noso equipo e identifica o seu harware |
|||
*Creamos a carpeta para almacenar a iso do HDT |
|||
<source lang='bash'> |
|||
mkdir -p /srv/tftp/iso/hdt |
|||
</source> |
|||
*Descargamos a iso |
|||
<source lang='bash'> |
|||
cd /srv/tftp/iso/hdt |
|||
wget http://hdt-project.org/raw-attachment/wiki/hdt-0.5.0/hdt-0.5.2.iso |
|||
</source> |
|||
*Engadimos as entradas correspondentes o noso menú |
|||
<source lang='bash'> |
|||
MENU BEGIN UTILIDADES |
|||
MENU TITLE UTILIDADES |
|||
LABEL Detector de Hardware |
|||
MENU LABEL ^Detector de Hardware |
|||
LINUX libs/memdisk |
|||
INITRD iso/hdt/hdt-0.5.2.iso |
|||
APPEND iso |
|||
TEXT HELP |
|||
Información sobre o hardware do Sistema. |
|||
ENDTEXT |
|||
LABEL volver |
|||
MENU LABEL ^Volver |
|||
MENU EXIT |
|||
TEXT HELP |
|||
Volta o menu principal. |
|||
ENDTEXT |
|||
MENU END |
|||
</source> |
|||
[[File:hdt.png|center|thumb|500px]] |
|||
===Engadindo un Antivirus (<b>AVG</b>)=== |
|||
Neste caso queremos arrancar unha iso dun antivirus que nos permita escanear o noso equipo. O antivirus escollido é AVG Rescue CD. Pode conectarse a Internet para actualizar a súa base de virus |
|||
*Creamos a carpeta para almacenar a iso do AVG |
|||
<source lang='bash'> |
|||
mkdir /srv/tftp/iso/avg |
|||
</source> |
|||
*Descargamos a iso |
|||
<source lang='bash'> |
|||
cd /srv/tftp/iso/avg |
|||
wget http://download.avg.com/filedir/inst/avg_arl_cdi_all_120_150814a10442.iso |
|||
</source> |
|||
*Renomeamos a avg.iso |
|||
*Engadimos as entradas correspondentes o noso menú |
|||
<source lang='bash'> |
|||
LABEL AVG |
|||
MENU LABEL ^Antivirus AVG |
|||
LINUX libs/memdisk |
|||
INITRD boot/avg/avg.iso |
|||
APPEND iso |
|||
TEXT HELP |
|||
Escanea o Sistema en procura de Virus. |
|||
ENDTEXT |
|||
</source> |
|||
<b>Nota:</b> Para que a iso arranque, o equipo cliente necesita un mínimo de 1,5 GiB de RAM |
|||
==Engadindo imaxes de disquetes== |
|||
===Engadindo entrada para <b>Freedos</b>=== |
|||
Freedos é un clónico libre de MS-DOS. Queremos ter a posibilidade de arracar Freedos remotamente, isto podería ser útil para actualizar a BIOS dun equipo vello que necesitase facelo a través dun disquete. |
|||
*Creamos a carpeta onde almacenaremos a imaxe |
|||
<source lang='bash'> |
|||
mkdir /srv/tftp/boot/freedos |
|||
</source> |
|||
*Descargamos a imaxe |
|||
<source lang='bash'> |
|||
cd /srv/tftp/boot/freedos |
|||
wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img |
|||
</source> |
|||
*Necesitamos un compoñente de syslinux chamado memdisk que permítenos crear discos na RAM. Así que descargamos o paquete syslinux, descomprimímolo e copiamos só o necesario. |
|||
<source lang='bash'> |
|||
cd /tmp |
|||
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.zip |
|||
unzip syslinux-6.03.zip |
|||
cp bios/memdisk/memdisk /srv/tftp/libs |
|||
</source> |
|||
*Engadimos a opción para o arranque no menú na categoría LIVE-CD |
|||
<source lang='bash'> |
|||
vi /srv/tftp/pxelinux.cfg/default |
|||
LABEL Freedos |
|||
MENU LABEL ^Freedos |
|||
KERNEL libs/memdisk |
|||
APPEND initrd=boot/freedos/fdboot.img |
|||
TEXT HELP |
|||
Inicia o S.O. FreeDos |
|||
ENDTEXT |
|||
</source> |
|||
*Se quixésemos modificar a imaxe de Freedos para engadirlle os arquivos necesarios para flashear a bios: |
|||
Montamos a imaxe do disco |
|||
<source lang='bash'> |
|||
mount -o loop fdboot.IMG /mnt |
|||
</source> |
|||
*Copiamos na carpeta /mnt os arquivos necesarios |
|||
*Desmontamos e listo |
Revisión actual feita o 12 de agosto de 2016 ás 20:27
Introducción
Un Servidor PXE (Preboot eXecution Environment), permite a un equipo cliente arrancar un SO a travé da rede. Isto pode ser útil nos seguintes casos:
- O equipo cliente non ten unidade de CD e queremos arrancar dende un CD-Live.
- O equipo cliente non ten disco duro e queremos que colla o SO dende a rede
- Ter diferentes utilidades, como memtest ou antivirus, preparadas para ser executadas sobre un equipo independentemente do que teña instalado.
Funcionamento
- No equipo cliente escollemos arrancar por PXE
- O Cliente PXE busca un servidor DHCP na rede
- Unha vez localizado, o servidor asignalle á máquina cliente unha IP, netmask, gw
- Mediante o protocolo TFTP o servidor envía á máquina cliente o SO
- O cliente co que lle manda o servidor é capaz de arrancar un minisistema na RAM.
Para instalar un Servidor PXE precisamos instalar:
- Servidor DHCP
- Servidor TFTP
Nota: O servidor DHCP e o Servidor TFTP non teñen porque estar na mesma máquina
Proceso de arranque do Servidor PXE en Detalle
- O cliente envía por broadcast unha menaxe DHCPDISCOVER
- O Servidor DHCP responde coa IP, next-server, filename
- O Cliente solicita unha petición TFTP a next-server solicitando filename.
- O Servidor TFTP responde e envía o filename o cliente.
Configuracións de Rede Iniciais
- Empregaremos Virtualbox para simular ambos equipos.
- O Servidor terá instalado un sistema Debian Jessie actualizado
- O Servidor terá dúas tarxetas de rede, A configuración da rede do servidor será
Conexión de Área Local 1 | Conexión de Área Local 2 |
|
|
- A rede interna intnet, non proporciona DHCP.
- Se arrancamos unha 2º MV conectada a intnet co SystemRescueCd e lle asignamos unha ip compatible
ifconfig enp0s3 172.20.4.1 netmask 255.255.0.0
- Veremos que ten rede co servidor
ping 172.20.4.100
Acceso dende o equipo real á Máquina Virtual con NAT
Empregamos VirtualBox para simular a nosa rede. A 1º tarxeta de rede do Servidor PXE está configurada por NAT, polo que non podemos comunicar o equipo real coa MV.
Para facelo podemos empregar redireccionamento de portos (port forwarding). Redireccionaremos o porto TCP/2222 da máquina real o porto TCP/22 (SSH) da máquina virtual.
Como deixamos host IP baleiro, calquera máquina que se conecte o porto 2222 da nosa máquina comunicarase coa MV |
Na máquina real comprobamos que temos o porto aberto
root@debianRojas:/home/rojas# netstat -nap | grep 2222
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 9967/VirtualBox
Para que a configuración sexa efectiva é preciso apagar a máquina e o virtualbox. Logo reiniciamos a máquina.
Na nosa máquina temos que instalar un servidor ssh
apt-get install ssh
E permitir o acceso ssh do root
/etc/ssh/sshd_config
PermitRootLogin yes
Conectámonos dende o equipo real
ssh -p 2222 root@127.0.0.1
Instalación do Servidor PXE
Instalamos un servidor dhcp
- Instalamos o paquete necesario
apt-get install isc-dhcp-server
- Modificamos os arquivos de configuración correspondentes
/etc/default/isc-dhcp-server
INTERFACES=”eth1”
/etc/dhcp/dhcpd.conf
###############################################################
# Comentamos as seguintes liñas para que non espere un timeout
###############################################################
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
###############################################################
# Descomentamos a seguinte liña
###############################################################
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
###############################################################
# Definimos un rango de direccións a asignar entre 10 e 20.
###############################################################
subnet 172.20.0.0 netmask 255.255.0.0 {
range 172.20.2.10 172.20.2.20;
############################################
# Necesario para configurar o Servidor PXE
############################################
next-server 172.20.4.100;
filename “pxelinux.0”;
}
- Iniciamos o Servicio DHCP
/etc/init.d/isc-dhcp-server restart
- Arrancamos o cliente co SRCD e colle a IP 172.20.2.10
Instalando o servidor tftp
apt-get install tfptd-hpa
- O seu arquivo de configuración é
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
- Iniciamos o servidor
/etc/init.d/tftpd-hpa start
- Os directorio onde serviremos as imaxes de arranque é /srv/tfp
- Descargamos a imaxe de instalación de Debian strecth 64 bits para arrancar pola rede
cd /srv/tftp
wget http://ftp.nl.debian.org/debian/dists/testing/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar xzf netboot.tar.gz
Nota: Nestes momentos hai un bug no netboot da rama testing, así que teremos que descargar a versión stable.
wget http://ftp.nl.debian.org/debian/dists/jessie/main/installer-amd64/current/images/netboot/netboot.tar.gz
- Aparecen as seguines carpetas e arquivos
debian-installer ldlinux.c32 pxelinux.0 pxelinux.cfg version.info
- O seu significado é o seguinte:
- debian-installer: Contén o núcleo do sistema
- pxelinux.0: É o cargador de arranque a través da rede, forma parte do proxecto syslinux
- pxelinux.cfg/default: É o arquivo de configuración de pxelinux, onde lle indica que kernel arrancar. Posteriormente empregaremos este arquivo para crear menús.
Comprobamos
- Iniciamos a máquina cliente coa súa tarxeta configurada na rede interna e arrancamos
Como deixamos host IP baleiro, calquera máquina que se conecte o porto 2222 da nosa máquina comunicarase coa MV |
- Comeza o proceso de instalación de Debian correctamente
- Problema: Non temos acceso a Internet.
- Solución: Temos que facer que o servidor PXE enrute a eth1 a eth0 para que así a rede interna teña acceso a Internet.
Configurar Enrutamento no Servidor PXE
- En /etc/sysctl.conf descomentamos
net.ipv4.ip_forward=1
- Creamos un script coa nosa configuración personalizada
/etc/iptables-script.sh
#Configuración para enmascarar os paquetes recibidos da rede interna
iptables -t nat -A POSTROUTING -s 172.20.0.0/16 -o eth0 -j MASQUERADE
- Dámoslle permiso de execución
chmod +x /etc/iptables-script.sh
- Facemos que se execute o inicio
vi /etc/rc.local
#Cargamos a configuración de iptables
/etc/iptables-script.sh
- Modificamos a configuración do servidor DHCP
option domain-name-servers 8.8.8.8; # DNS
subnet 172.20.0.0 netmask 255.255.0.0 {
range 172.20.2.10 172.20.2.20;
option routers 172.20.4.100; #Porta de enlace (Ten que ser o servidor PXE)
…..
}
Creando unha configuración Mulitidistro
Agora xa temos un servidor PXE funcional que nos permite arrancar por rede a instalación de Debian, pero queremos que nos apareza un menú que nos permitar arrancar a nosa máquina con varias imaxes a través da rede.
Reconfiguracion do instalador de Debian
Para elo imos a deixar o noso /srv/tftp como sigue:
- Creamos unha carpeta boot onde teremos unha carpeta por cada sistema arrancable.
- Creamos dentro de boot a carpeta strecht64 (A nosa distribución debian). Movemos todo o contido da instalación de Debian a /srv/tftp/boot/stretch64.
- Para poder arrancar pola rede, necesitamos algúns arquivos de inicio, que forman parte do paqute syslinux
- Poderíamos descargalos de aquí e descomprimir os que necesitásemos
- En vez diso, imos a reempregar os que xa veñen coa instalación por rede do Debian que temos descargado.
- Creamos unha carpeta para os arquivos necesarios para o arranque
mkdir /srv/tftp/libs
- Copiamos os seguintes arquivos
cp strecht64/debian-installer/amd64/pxelinux.0 /srv/tftp
cd strecht64/debian-installer/amd64/boot-screens/
cp libcom32.c32 /srv/tftp/libs
cp libutil.c32 /srv/tftp/libs
cp vesamenu.c32 /srv/tftp/libs
cp splash.png /srv/tftp/libs
cp ldlinux.c32 /srv/tftp
- Creamos un arquivo baleiro para o menú
touch pxelinux.cfg/default
- A estructura de arquivos quedaría como sigue
usuario@debian:/srv/tftp# tree
.
├── boot
│ └── stretch64
│ └── debian-installer
│ └── amd64
│ │ ├── boot-screens
│ └── grub
├── libs
│ ├── libcom32.c32
│ ├── libutil.c32
│ ├── vesamenu.c32
│ └── splash.png
├── ldlinux.c32
├── pxelinux.0
└── pxelinux.cfg
└── default
Editamos o arquivo pxelinux.cfg/default e creamos un menú para o noso debian
#Ruta onde se almacenan as librerias necesarias para o arranque
path ../libs
#Menu de arranque grafico
default libs/vesamenu.c32
prompt 0
timeout 300
#imaxe de fondo 640x480 pixels
MENU BACKGROUND libs/splash.png
MENU TITLE Benvido a PXE
LABEL Debian Stretch 64
MENU LABEL Debian Stretch 64
KERNEL boot/stretch64/debian-installer/amd64/linux
APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz
Pasándolle parámetros o instalador Debian
De este xeito xa non teremos que escoller o idioma de instalación
LABEL Debian Stretch 64
MENU LABEL Debian Stretch 64
KERNEL boot/stretch64/debian-installer/amd64/linux
APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz locale=gl_ES.UTF-8 keymap=es language=es country=ES supported-locales=es_ES.UTF-8
Engadindo o System Rescue CD
Queremos ter un menú multinivel coas seguintes opcións
- Instaladores
- Debian Stretch 64
- Live-CD
- System Rescue CD
O SRCD non é tan sinxelo de configurar como a imaxe netboot de Debian. Nese caso, todo o que necesitaba para arrancar era o núcleo, pero o SRCD necesita durante o seu arranque acceder o arquivo sysrcd.dat. Por iso será necesario instalar un servidor NFS para compartilo na rede.
Instalación dun servidor NFS
- Instalamos o paquete necesario
apt-get install nfs-kernel-server
- No arquivo de configuración compartimos unha carpeta como só lectura
/etc/exports
/srv/nfs/srcd 172.20.0.0/255.255.0.0(ro,sync)
- Reiniciamos o servicio
/etc/init.d/ssh restart
Preparación dos arquivos do SRCD
- Primeiro creamos a carpeta onde se almacenará o arranque do SRCD.
mkdir /srv/tftp/boot/srcd
- Descargamos unha iso do SRCD e montámola na máquina virtual.
mount /dev/sr0 /media/cdrom
- Copiamos os arquivos necesarios para o arranque á carpeta /srv/tftp/boot/srcd
cp /media/cdrom/isolinux/initram.igz /srv/tftp/boot/srcd
cp /media/cdrom/isolinux/rescue* /srv/tftp/boot/srcd
- Copiamos o resto de arquivos necesarios a /srv/nfs/srcd
cp /media/cdrom/sysrcd.dat /srv/nfs/srcd
cp /media/cdrom/sysrcd.md5 /srv/nfs/srcd
Modificamos o arquivo de configuración
Modificamos o menú de arranque pxelinux.cfg/default
######################
# Opcións Xerais
######################
#Ruta onde se almacenan as librerias necesarias para o arranque
path ../libs
#Menu de arranque grafico
default libs/vesamenu.c32
prompt 0
timeout 300
#imaxe de fondo 640x480 pixels
MENU BACKGROUND libs/splash.png.1
MENU COLOR HOTKEY 1;36;44 #fc0000 #00000000
MENU TITLE Benvido a PXE
#####################
# Definición do menú
#####################
MENU BEGIN INSTALADORES
MENU TITLE INSTALADORES
LABEL Debian Stretch 64
MENU LABEL ^Debian Stretch 64
KERNEL boot/stretch64/debian-installer/amd64/linux
APPEND initrd=boot/stretch64/debian-installer/amd64/initrd.gz locale=gl_ES.UTF-8 keymap=es language=es country=ES supported-locales=es_ES.UTF-8
TEXT HELP
Instala Debian Stretch 64 bits.
ENDTEXT
LABEL volver
MENU LABEL ^Volver
MENU EXIT
TEXT HELP
Volta o menu principal.
ENDTEXT
MENU END
MENU BEGIN LIVE-CD
MENU TITLE LIVE-CD
LABEL SystemRescueCD
MENU LABEL ^System Rescue Cd 64
KERNEL boot/srcd/rescue64 setkmap=es
APPEND initrd=boot/srcd/initram.igz netboot=nfs://172.20.4.100:/srv/nfs/srcd
TEXT HELP
Inicia o System Rescue CD con idioma castelan.
ENDTEXT
LABEL volver
MENU LABEL ^Volver
MENU EXIT
TEXT HELP
Volta o menu principal.
ENDTEXT
MENU END
Menú Principal |
Menú Live-CD |
Melloras visuais no arquivo de configuración
Introducimos as seguintes modificacións:
- Cambiamos a imaxe de fondo
MENU BACKGROUND libs/splash.png.1
Obtivémola de [aquí] , pero vale calquera imaxe 640x480
- Teclas aceleradoras:
MENU COLOR HOTKEY 1;36;44 #fc0000 #00000000
MENU LABEL ^Debian Stretch 64
Definimos a cor vermella.O premer D xa se selecciona esta opción
- Mensaxe de axuda o seleccionar a opción
TEXT HELP
Instala Debian Stretch 64 bits.
ENDTEXT
Personalizando o SRCD con scripts de arranque
Isto pode ser moi importante xa que nos pode permitir definir os nosos propios scripts de clonación e restauración.
LABEL SystemRescueCDAuto
MENU LABEL ^System Rescue Cd 64 Automatico
KERNEL boot/srcd/rescue64 setkmap=es
APPEND initrd=boot/srcd/initram.igz netboot=nfs://172.20.0.100:/srv/nfs/srcd ar_source=nfs://172.20.0.100:/srv/nfs/srcd ar_nowait
- ar_source: Indica a ruta do arquivo autorun
- ar_nowait: Inidica que non espere
Hai que poñer un arquivo autorun en /srv/nfs/srcd Podemos definir alias en base a scripts que teñamos definidos no noso servidor
#!/bin/bash
dhclient eth0
mount -t nfs -o nolock gandalf:/NFS/images /mnt/backup
alias clonar=’/mnt/scripts/restaurarWindows.sh’
echo Funciona
exit 0
Engadindo unha contrasinal a unha opción de arrque
- Xeramos unha passwd encriptada con
# PASSWD Encriptada generada con
# openssl passwd -1 -salt sXiKzkus mypassword
- Engadimos a contrasinal o menú de arranque
LABEL SystemRescueCDAuto
MENU LABEL ^System Rescue Cd 64 Automatico
MENU PASSWD $1$sXiKzkus$XHG5rLQlceWdGB3gL0C8e.
KERNEL boot/srcd/rescue64 setkmap=es
APPEND initrd=boot/srcd/initram.igz netboot=nfs://172.20.0.100:/srv/nfs/srcd ar_source=nfs://172.20.0.100:/srv/nfs/srcd ar_nowait
Engadindo ISO's de utilidades
Engadindo un identificador de Hardware (HDT Hardware Deteccion Tool)
- Imos a engadir unha categoría Utilidades o noso menú dende a que arrancaremos varias ferramentas en formato .iso.
- HDT analiza o noso equipo e identifica o seu harware
- Creamos a carpeta para almacenar a iso do HDT
mkdir -p /srv/tftp/iso/hdt
- Descargamos a iso
cd /srv/tftp/iso/hdt
wget http://hdt-project.org/raw-attachment/wiki/hdt-0.5.0/hdt-0.5.2.iso
- Engadimos as entradas correspondentes o noso menú
MENU BEGIN UTILIDADES
MENU TITLE UTILIDADES
LABEL Detector de Hardware
MENU LABEL ^Detector de Hardware
LINUX libs/memdisk
INITRD iso/hdt/hdt-0.5.2.iso
APPEND iso
TEXT HELP
Información sobre o hardware do Sistema.
ENDTEXT
LABEL volver
MENU LABEL ^Volver
MENU EXIT
TEXT HELP
Volta o menu principal.
ENDTEXT
MENU END
Engadindo un Antivirus (AVG)
Neste caso queremos arrancar unha iso dun antivirus que nos permita escanear o noso equipo. O antivirus escollido é AVG Rescue CD. Pode conectarse a Internet para actualizar a súa base de virus
- Creamos a carpeta para almacenar a iso do AVG
mkdir /srv/tftp/iso/avg
- Descargamos a iso
cd /srv/tftp/iso/avg
wget http://download.avg.com/filedir/inst/avg_arl_cdi_all_120_150814a10442.iso
- Renomeamos a avg.iso
- Engadimos as entradas correspondentes o noso menú
LABEL AVG
MENU LABEL ^Antivirus AVG
LINUX libs/memdisk
INITRD boot/avg/avg.iso
APPEND iso
TEXT HELP
Escanea o Sistema en procura de Virus.
ENDTEXT
Nota: Para que a iso arranque, o equipo cliente necesita un mínimo de 1,5 GiB de RAM
Engadindo imaxes de disquetes
Engadindo entrada para Freedos
Freedos é un clónico libre de MS-DOS. Queremos ter a posibilidade de arracar Freedos remotamente, isto podería ser útil para actualizar a BIOS dun equipo vello que necesitase facelo a través dun disquete.
- Creamos a carpeta onde almacenaremos a imaxe
mkdir /srv/tftp/boot/freedos
- Descargamos a imaxe
cd /srv/tftp/boot/freedos
wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img
- Necesitamos un compoñente de syslinux chamado memdisk que permítenos crear discos na RAM. Así que descargamos o paquete syslinux, descomprimímolo e copiamos só o necesario.
cd /tmp
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.zip
unzip syslinux-6.03.zip
cp bios/memdisk/memdisk /srv/tftp/libs
- Engadimos a opción para o arranque no menú na categoría LIVE-CD
vi /srv/tftp/pxelinux.cfg/default
LABEL Freedos
MENU LABEL ^Freedos
KERNEL libs/memdisk
APPEND initrd=boot/freedos/fdboot.img
TEXT HELP
Inicia o S.O. FreeDos
ENDTEXT
- Se quixésemos modificar a imaxe de Freedos para engadirlle os arquivos necesarios para flashear a bios:
Montamos a imaxe do disco
mount -o loop fdboot.IMG /mnt
- Copiamos na carpeta /mnt os arquivos necesarios
- Desmontamos e listo