how to setup a tftp server to boot live distros
Go to file
.[d]. e368d031a0 Update 'README.md'
INIT
2022-02-02 11:23:38 +00:00
README.md Update 'README.md' 2022-02-02 11:23:38 +00:00

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .[d].
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh+MMMMMMMMMMMMMMhsMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm/ oMMMMMMMMMMMMMMm +NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy`  yMMMMMMMMMMMMMMM- -mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMs+dMMMMMMMMMM+    sMMMMMMMMMMMMMMM-  `dMMMMMMMMMMms/NMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMM+ .omMMMMMM:     -MMMMMMMMMMMMMMo    `yMMMMMMMy: `dMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMM-   /dMMM+       sMMMMMMMMMMMMh      `hMMMNo`   sMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMd     :dm        `mMMMMMMMMMMN.       .NNo`    .MMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMM:      -         :MMMMMMMMMMs         :`      sMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMs                 ymNMMMMMNm.                 NMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMy                    `-/-`                   .MMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMo                                            .NMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMNh+.                                               :sdMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMhso+:.                                                      `-/+syMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMM-                                                                 dMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMM`   `.:+/.                                              `/s+:.    sMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMNo   -oms.             .//-`               `:/:`            `+md+`  .hMMMMMMMMMMMMMMM
MMMMMMMMMMMMMNs`                        .odNdo.       .ohmd+`                        :dMMMMMMMMMMMMM
MMMMMMMMMMMNo`                             ..           .-                             :hMMMMMMMMMMM
MMMMMMMMMd+`                                                                             -sNMMMMMMMM
MMMMMMNs-                         `..                          `/-.                        `+dMMMMMM
MMMNy:                       ./sdNMMMh:                      `sNMMMNds/.                      .odMMM
MM+                       :ymMMMMMMMMMMh.                   +NMMMMMMMMMMmo-                      /NM
MMMh:                  .sNMMMMMMMMMMMMMMN-                `hMMMMMMMMMMMMMMMm+`                 :hMMM
MMMMMd:`       ``-:+shmMMMMMMMMMMMMMMMMMMN.               hMMMMMMMMMMMMMMMMMMMmhs+/-..``````./dMMMMM
MMMMMMMMMNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMo              .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy              .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN.             /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN+`         `+NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs.    -hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdyymMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

####################

PRE-REQUISITES

####################

sudo apt install dnsmasq pxelinux syslinux-efi nginx

####################

CREATING PATHS

####################

sudo mkdir -p /srv/tftp/{bios,efi64,pxelinux.cfg} sudo mkdir -p /srv/tftp/linux/arch/garuda_wayfire sudo mkdir -p /srv/tftp/linux/debian/{debian_v11,parrot_v4_home,kali_v2021} sudo mkdir -p /var/www/html/linux/arch/garuda_wayfire/garuda/x86_64 sudo mkdir -p /var/www/html/linux/debian/{debian_v11,parrot_v4_home,kali_v2021}

################################################################

COPYING BASE DATA FOR PXE BIOS BOOTING TO OUR HOSTING PATH

################################################################

sudo cp
/usr/lib/syslinux/modules/bios/{ldlinux,vesamenu,libcom32,libutil}.c32
/usr/lib/PXELINUX/pxelinux.0
/srv/tftp/bios

################################################################

COPYING BASE DATA FOR PXE UEFI BOOTING TO OUR HOSTING PATH

################################################################

sudo cp
/usr/lib/syslinux/modules/efi64/ldlinux.e64
/usr/lib/syslinux/modules/efi64/{vesamenu,libcom32,libutil}.c32
/usr/lib/SYSLINUX.EFI/efi64/syslinux.efi
/srv/tftp/efi64

###############################

GET THE DEBIAN LIVE IMAGE

###############################

wget https://cdimage.debian.org/images/unofficial/non-free/images-including-firmware/11.1.0-live+nonfree/amd64/iso-hybrid/debian-live-11.1.0-amd64-gnome+nonfree.iso -O /tmp/debian.iso

###############################################################

MOUNT THE DEBIAN LIVE IMAGE, WE ARE COPYING FILES FROM IT

###############################################################

sudo mount -o loop -t iso9660 /tmp/debian.iso /media

###################################################

COPY THE FILES WE NEED FROM THE MOUNTED IMAGE

###################################################

sudo cp -rf /media/live/initrd.img-* /srv/tftp/linux/debian/debian_v11/initrd sudo cp -rf /media/live/vmlinuz-* /srv/tftp/linux/debian/debian_v11/vmlinuz sudo cp -rf /media/live/filesystem.squashfs /var/www/html/linux/debian/debian_v11

############################

UNMOUNT THE LIVE IMAGE

############################

sudo umount /media

#########################################

REMOVE IMAGE, IT'S NO LONGER NEEDED

#########################################

rm /tmp/debian.iso

###############################

GET THE PARROT LIVE IMAGE

###############################

wget https://download.parrot.sh/parrot/iso/4.11.3/Parrot-home-4.11.3_amd64.iso -O /tmp/parrot.iso

###############################################################

MOUNT THE DEBIAN LIVE IMAGE, WE ARE COPYING FILES FROM IT

###############################################################

sudo mount -o loop -t iso9660 /tmp/parrot.iso /media

###################################################

COPY THE FILES WE NEED FROM THE MOUNTED IMAGE

###################################################

sudo cp -rf /media/live/initrd.img-* /srv/tftp/linux/debian/parrot_v4_home/initrd sudo cp -rf /media/live/vmlinuz-* /srv/tftp/linux/debian/parrot_v4_home/vmlinuz sudo cp -rf /media/live/filesystem.squashfs /var/www/html/debian/parrot_v4_home

############################

UNMOUNT THE LIVE IMAGE

############################

sudo umount /media

#########################################

REMOVE IMAGE, IT'S NO LONGER NEEDED

#########################################

rm /tmp/parrot.iso

#############################

GET THE KALI LIVE IMAGE

#############################

wget https://cdimage.kali.org/kali-2021.4/kali-linux-2021.4-live-amd64.iso -O /tmp/kali.iso

#############################################################

MOUNT THE KALI LIVE IMAGE, WE ARE COPYING FILES FROM IT

#############################################################

sudo mount -o loop -t iso9660 /tmp/kali.iso /media

###################################################

COPY THE FILES WE NEED FROM THE MOUNTED IMAGE

###################################################

sudo cp -rf /media/live/initrd.img-* /srv/tftp/linux/debian/kali_v2021/initrd sudo cp -rf /media/live/vmlinuz-* /srv/tftp/linux/debian/kali_v2021/vmlinuz sudo cp -rf /media/live/filesystem.squashfs /var/www/html/linux/debian/kali_v2021

############################

UNMOUNT THE LIVE IMAGE

############################

sudo umount /media

#########################################

REMOVE IMAGE, IT'S NO LONGER NEEDED

#########################################

rm /tmp/kali.iso

################################

GET THE BASE ARCHLINUX ISO

################################

wget https://arch.mirror.constant.com/iso/2021.12.01/archlinux-2021.12.01-x86_64.iso -O /tmp/arch.iso

#############################################################

MOUNT THE ARCH LIVE IMAGE, WE ARE COPYING FILES FROM IT

#############################################################

sudo mount -o loop -t iso9660 /tmp/arch.iso /media

###################################################

COPY THE FILES WE NEED FROM THE MOUNTED IMAGE

###################################################

sudo cp -rf /media/arch/x86_64/* /var/www/html/linux/arch/garuda_wayfire

############################

UNMOUNT THE LIVE IMAGE

############################

sudo umount /media

#########################################

REMOVE IMAGE, IT'S NO LONGER NEEDED

#########################################

rm /tmp/arch.iso

###############################

GET THE LIVE GARUDA IMAGE

###############################

wget https://mirrors.fossho.st/garuda/iso/garuda/wayfire/211129/garuda-wayfire-linux-zen-211129.iso -O /tmp/garuda.iso

###############################################################

MOUNT THE GARUDA LIVE IMAGE, WE ARE COPYING FILES FROM IT

###############################################################

sudo mount -o loop -t iso9660 /tmp/garuda.iso /media

###################################################

COPY THE FILES WE NEED FROM THE MOUNTED IMAGE

###################################################

sudo cp -rf /media/boot/amd_ucode.img /srv/tftp/linux/arch/garuda_wayfire/amd_ucode sudo cp -rf /media/boot/intel_ucode.img /srv/tftp/linux/arch/garuda_wayfire/intel_ucode sudo cp -rf /media/boot/initramfs-* /srv/tftp/linux/arch/garuda_wayfire/initramfs sudo cp -rf /media/boot/vmlinuz-* /srv/tftp/linux/arch/garuda_wayfire/vmlinuz sudo cp -rf /media/garuda/x86_64/* /var/www/html/linux/arch/garuda_wayfire/garuda/x86_64

############################

UNMOUNT THE LIVE IMAGE

############################

sudo umount /media

#########################################

REMOVE IMAGE, IT'S NO LONGER NEEDED

#########################################

rm /tmp/garuda.iso

##################################

USING OUR OWN DNSMASQ CONFIG

##################################

sudo cat << EOF > /etc/dnsmasq.d/pxe.conf port=0 interface=enp2s0 # <- HERE YOUR NETWORK INTERFACE dhcp-range=192.168.1.0,proxy # <- HERE YOUR LOCAL IP RANGE, MAYBE 192.168.0.0 enable-tftp tftp-root=/srv/tftp pxe-service=x86PC,"PXELINUX (BIOS)",bios/pxelinux pxe-service=x86-64_EFI,"PXELINUX (EFI)",efi64/syslinux.efi log-queries log-facility=/var/log/dnsmasq.log EOF

######################################

CREATE OUR LOCAL BOOTMENU CONFIG

######################################

? THE LAN IPS BELOW THAT READ '192.168.1.36' NEED TO BE CHANGED TO YOURS

cat << EOF > /tmp/config MENU TITLE PXE Boot Menu DEFAULT vesamenu.c32

MENU BEGIN Arch
MENU TITLE Arch

    LABEL arch_live
        MENU LABEL ^Garuda - Wayfire
        KERNEL ::linux/arch/garuda_wayfire/vmlinuz
        INITRD ::linux/arch/garuda_wayfire/intel_ucode,::linux/arch/garuda_wayfire/amd_ucode,::linux/arch/garuda_wayfire/initramfs
        APPEND misobasedir=garuda ip=dhcp misolabel=GARUDA_WAYFIRE_HARPYEAGLE miso_http_srv=http://192.168.1.36/linux/arch/garuda_wayfire/ checksum docache ar_source=http://192.168.1.36/linux/arch/garuda_wayfire/ autoruns=no ar_nodel ar_wait
        SYSAPPEND 3

    MENU END

MENU BEGIN Debian
MENU TITLE Debian

    LABEL debian_live
        MENU LABEL ^Debian v11 - Gnome
        KERNEL ::linux/debian/debian_v11/vmlinuz
        INITRD ::linux/debian/debian_v11/initrd
        APPEND dhcp components locales=en_US.UTF-8 boot=live fetch=http://192.168.1.36/linux/debian/debian_v11/filesystem.squashfs

    LABEL parrot_live
        MENU LABEL ^ParrotOS v4 - Mate
        KERNEL ::linux/debian/parrot_v4_home/vmlinuz
        INITRD ::linux/debian/parrot_v4_home/initrd
        APPEND dhcp components locales=en_US.UTF-8 boot=live fetch=http://192.168.1.36/linux/debian/parrot_v4_home/filesystem.squashfs

    LABEL kali_live
        MENU LABEL ^Kali v2021 - Kde
        KERNEL ::linux/debian/kali_v2021/vmlinuz
        INITRD ::linux/debian/kali_v2021/initrd
        APPEND dhcp components locales=en_US.UTF-8 boot=live fetch=http://192.168.1.36/linux/debian/kali_v2021/filesystem.squashfs

    MENU END

LABEL local
    MENU LABEL Boot from local drive
    LOCALBOOT 0xffff

EOF

#############################

SET THE BOOTMENU CONFIG

#############################

sudo mv /tmp/config /srv/tftp/pxelinux.cfg/default

##################################################

##################################################

cd /srv/tftp && sudo ln -rs pxelinux.cfg bios && sudo ln -rs pxelinux.cfg efi64

###########################

START/RESTART DNSMASQ

###########################

sudo systemctl restart dnsmasq

########################################################################

HOST FILES VIA WEBSERVER

########################################################################

sudo echo "ONLINE" > /var/www/html/index.html sudo rm index.nginx-debian.html sudo chown -Rf www-data:www-data /var/www/html

########################################################################

BOOT FROM NIC

########################################################################

FROM THE MACHINE YOU WILL TFTP BOOT FROM, REBOOT IT AND ENTER THE COMPUTER'S

BIOS/UEFI. LOOK FOR THE PXE SETTING, AND BE SURE THAT ITS ENABLED AND THAT

YOUR BOOT PRIORITY FOR PXE BOOTING IS FIRST ON THE LIST. SAVE, EXIT, BOOT.

########################################################################

NOTES

########################################################################

IF YOU DON'T HAVE ENOUGH RAM TO STORE THE LIVE IMAGE, IT WILL CRASH ON

THE KERNEL BOOT, SIZE UP THE FILES, COUNT YOUR MEMORY, IF THE CONTENTS

ARE LARGER THAN THE RAM, WELL. THAT SUX, WORK WITH SMALLER LIVE images

LIKE PARROT/MATE ETC...

######################################################################### .[d].