Giter Site home page Giter Site logo

opensuse_trough_pxe's Introduction

Instalación PXE de Open SUSE 15.5

Este proyecto consiste enla instalación de un servidor PXE para instalar un sistema operativo Open SUSE Leap 15.5.

Ver vídeo YouTube:

YouTube Video

En mi caso he decidido hacerlo con Vagrant para facilitar el proceso de crear las máquinas virtuales con las características necesarias.

Máquinas que utilizaremos:

  • Servidor PXE (Debian 11)
  • Router-Firewall (Debian 11)
  • Cliente (Máquina vacía)

La máquina de Servidor PXE será la que sirva los archivos necesarios para realizar la instalación a través de la red y el Router-Firewall redirigirá el tráfico de internet a la máquina cliente y viceversa para que así esta tenga conexión para realizar todas las descargas necesarias.

Vagrantfile que utilizaré es el siguiente:

Vagrant.configure("2") do |config|
    
#Definimos la máquina virtual del servidor
  config.vm.define "serverPXE" do |subconfig|
    #Indicamos el sistema operativo
    subconfig.vm.box = "debian/bullseye64"
    subconfig.vm.hostname = "serverPXE"
    #Indicamos la ip que tendrá dentro de nuestra lan
    subconfig.vm.network :private_network, ip: "192.168.1.10",
    virtualbox__intnet: "PXElan"
    
    subconfig.vm.provider :virtualbox do |vb|
      vb.name = "serverPXE"
      vb.gui = false
      vb.memory = "4096"
      vb.cpus = "4"
    end
  end
  
  #Creamos la máquina cliente
  config.vm.define "client", autostart: false do |cli|
    cli.vm.box = "TimGesekus/pxe-boot"
    cli.vm.hostname = "client"
    cli.ssh.connect_timeout = 1
    #Indicamos que obtendrá dirección IP por dhcp
    cli.vm.network "private_network", type: "dhcp",
    :adapter => 1, virtualbox__intnet: "PXElan"

    cli.vm.provider :virtualbox do |vb|
      vb.name = "client"
      vb.gui = true
    end 
  end
    
  #Creamos la máquina del router
  config.vm.define "router" do |subconfig|
    subconfig.vm.box = "debian/bullseye64"
    subconfig.vm.hostname = "router"
    subconfig.vm.network :private_network, ip: "192.168.1.1",
    virtualbox__intnet: "PXElan"
      
  	#Ejecutamos en ella los comandos necesarios para convetirlo en un router
    subconfig.vm.provision "shell", inline: <<-SHELL
      apt update && apt install -y iptables

      echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
      sysctl -p

      iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
      iptables-save > /etc/iptables.up.rules
    SHELL
    
    subconfig.vm.provider :virtualbox do |vb|
      vb.name = "RouterFirewall"
      vb.gui = false
      vb.memory = 512
      vb.cpus = 1
    end
  end
end

Pasos a seguir para preparar el servidor de forma manual

Levantamos las máquinas

vagrant up

image-20240305173656194

Nos conectamos a la máquina de servidor

vagrant ssh serverPXE

Ejecutamos los siguientes comandos:

sudo su -

Descargar paquetes

apt update && apt install -y nfs-kernel-server dnsmasq unzip

image-20240305174144811

Crear carpeta para archivos de sistema

mkdir syslinux && cd syslinux

Descargamos los fichero de kernel

wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.zip

unzip syslinux*

image-20240305174235660

Descargamos archivos de grub y de shim

cd /tmp
apt-get download shim.signed grub-efi-amd64-signed
dpkg -x grub* ~/grub
dpkg -x shim-signed_1* ~/shim

image-20240305174324661

Creamos el directorio donde se alojarán los archivos del servidor tftp

mkdir -p /tftp/{bios,boot,grub}

Copiamos los ficheros de configuración

Para poder copiar los archivos de la carpeta /vagrant debemos tenerlos en el mismo directorio que nuestro Vagrantfile
cp -v /vagrant/files/exports /etc/exports

cp -v /vagrant/files/dnsmasq.conf /etc/dnsmasq.conf

cd ~/syslinux

cp -v bios/{com32/{elflink/ldlinux/ldlinux.c32,libutil/libutil.c32,menu/{menu.c32,vesamenu.c32}},core/{pxelinux.0,lpxelinux.0}} /tftp/bios

cd ~

cp -v grub/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed  /tftp/grubx64.efi
cp -v shim/usr/lib/shim/shimx64.efi.signed  /tftp/grub/bootx64.efi

cp -v /boot/grub/{grub.cfg,unicode.pf2} /tftp/grub/


sudo ln -s /tftp/boot  /tftp/bios/boot

mkdir /tftp/bios/pxelinux.cfg
cp -v /vagrant/files/default /tftp/bios/pxelinux.cfg/default

Preparamos la imagen iso para la instalación

Descargamos la imagen iso

cd ~

wget https://download.opensuse.org/distribution/leap/15.5/iso/openSUSE-Leap-15.5-DVD-x86_64-Media.iso -O /vagrant/opensuse.iso

image-20240305174907428

Creamos las carpetas para alojar la iso

mkdir -p /var/www/html/opensuse

mount /vagrant/opensuse.iso /mnt

cp -rfv /mnt/* /var/www/html/opensuse

umount /mnt

mkdir -p /tftp/boot/opensuse/loader

cp -rfv /var/www/html/opensuse/boot/x86_64/loader/linux /tftp/boot/opensuse/loader

cp -rfv /var/www/html/opensuse/boot/x86_64/loader/initrd /tftp/boot/opensuse/loader

Creamos el fichero default

nano /tftp/bios/pxelinux.cfg/default

DEFAULT menu.c32
MENU TITLE PANEL PXE - ABELSRZ
PROMPT 0 
TIMEOUT 0

MENU COLOR TABMSG   37;40   #ffffffff #00000000
MENU COLOR TITLE    1;36;40 #ffffffff #00000000 
MENU COLOR SEL      30;46   #ffffffff #00000000
MENU COLOR UNSEL    40;37   #ffffffff #00000000
MENU COLOR BORDER   37;40   #ffffffff #00000000


LABEL OpenSUSE
        kernel /boot/opensuse/loader/linux
        append initrd=/boot/opensuse/loader/initrd splash=silent ip=dhcp install=nfs://192.168.1.10:/var/www/html/opensuse boot=loader ramdisk_size=512000 ramdisk_blocksize=4096 language=es_ES keytable=es quiet quiet showopts

Reiniciamos los servicios

systemctl restart dnsmasq
systemctl restart nfs-kernel-server

Probamos si funciona

vagrant up pxeclient

Instalación automática

El archivo automated.sh hace todo el proceso de preparación del servidor PXE de forma automática.

opensuse_trough_pxe's People

Contributors

abelsrzz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.