El código ha sido probado en Ubuntu Karmic.
Requisitos: sed,wget y lftp, ejecutándose tftp en tu servidor.
- Editar las opciones de configuración.
- Ejecutar el código.
- Ahora puedes instalar Linux vía netboot.
El código:
#!/bin/bash
#
# Configuration
#
tftp_boot_dir=/var/lib/tftpboot
menu_bg_png_url=http://www.howtoforge.com/images/pxe_install_server_ubuntu_9.10
/howtoforge_pxe.png
#
ubuntu_stable=karmic
ubuntu_testing=lucid
#
debian_stable=lenny
debian_unstable=sid
debian_testing=squeeze
#
fedora_ver=12
#
centos_ver=5.4
#
mandriva_ver=2010.0
#
opensuse_ver=11.2
#
# DON'T TOUCH ANYTHING BELOW THIS
#
ubuntu_stable_url="http://archive.ubuntu.com/ubuntu/dists/$ubuntu_stable/main/
installer-i386/current/images/"
ubuntu_testing_url="http://archive.ubuntu.com/ubuntu/dists/$ubuntu_testing/main/
installer-i386/current/images/netboot/"
#
debian_stable_url="ftp://ftp.nl.debian.org/debian/dists/$debian_stable/main/
installer-i386/current/images/netboot/"
debian_unstable_url="ftp://ftp.nl.debian.org/debian/dists/$debian_unstable/main/
installer-i386/current/images/netboot/"
debian_testing_url="ftp://ftp.nl.debian.org/debian/dists/$debian_testing/main/
installer-i386/current/images/netboot/"
#
fedora_url="http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora.redhat.com/
linux/releases/$fedora_ver/Fedora/i386/os/images/pxeboot/"
#
centos_url="http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/$centos_ver/
os/i386/images/pxeboot/"
#
mandriva_url="http://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrivalinux/
official/$mandriva_ver/i586/isolinux/alt0/"
#
opensuse_url="http://download.opensuse.org/distribution/$opensuse_ver/
repo/oss/boot/i386/loader/"
#
# Make dirs exist
#
mkdir -p $tftp_boot_dir
cd $tftp_boot_dir
mkdir -p $tftp_boot_dir/ubuntu
mkdir -p $tftp_boot_dir/debian
mkdir -p $tftp_boot_dir/mandriva
mkdir -p $tftp_boot_dir/fedora
#
# Get Ubuntu Stable
#
echo "Getting Ubuntu Stable ($ubuntu_stable)"
echo "URL : $ubuntu_stable_url"
lftp -c "open $ubuntu_stable_url; mirror netboot/"
mv netboot/* $tftp_boot_dir
rm -fr netboot
rm -rf pxelinux.0/default
mv ubuntu-installer ubuntu/$ubuntu_stable
#
# Get Ubuntu Testing
#
echo "Getting Ubuntu Testing ($ubuntu_testing)"
echo "URL : $ubuntu_testing_url"
lftp -c "open $ubuntu_testing_url; mirror ubuntu-installer/"
mv ubuntu-installer $tftp_boot_dir/ubuntu/$ubuntu_testing
#
# Get Debian Stable
#
echo "Getting Debian Stable ($debian_stable)"
echo "URL : $debian_stable_url"
lftp -c "open $debian_stable_url; mirror debian-installer/"
mv debian-installer $tftp_boot_dir/debian/$debian_stable
#
#Debian UnStable
#
echo "Getting Debian UnStable ($debian_unstable)"
echo "URL : $debian_unstable_url"
lftp -c "open $debian_unstable_url; mirror debian-installer/"
mv debian-installer $tftp_boot_dir/debian/$debian_unstable
#
#Debian Testing
#
echo "Getting Debian Testing ($debian_testing)"
echo "URL : $debian_testing_url"
lftp -c "open $debian_testing_url; mirror debian-installer/"
mv debian-installer $tftp_boot_dir/debian/$debian_testing
#
# Get Fedora
#
echo "Getting Fedora ($fedora_ver"
echo "URL : $fedora_url"
mkdir -p fedora/$fedora_ver/i386
wget $fedora_url/initrd.img -O fedora/$fedora_ver/i386/initrd.img
wget $fedora_url/vmlinuz -O fedora/$fedora_ver/i386/vmlinuz
#
# Get CentOS
#
echo "Getting CentOS ($centos_ver"
echo "URL : $centos_url"
mkdir -p centos/$centos_ver/i386
wget $centos_url/initrd.img -O centos/$centos_ver/i386/initrd.img
wget $centos_url/vmlinuz -O centos/$centos_ver/i386/vmlinuz
#
# Get Mandriva
#
echo "Getting Mandriva ($mandriva_ver"
echo "URL : $mandriva_url"
mkdir -p mandriva/$mandriva_ver/i386
wget $mandriva_url/all.rdz -O mandriva/$mandriva_ver/i386/all.rdz
wget $mandriva_url/vmlinuz -O mandriva/$mandriva_ver/i386/vmlinuz
#
# Get Suse
#
echo "Getting Suse ($opensuse_ver"
echo "URL : $opensuse_url"
mkdir -p suse/$opensuse_ver/i386
wget $opensuse_url/initrd -O suse/$opensuse_ver/i386/initrd
wget $opensuse_url/linux -O suse/$opensuse_ver/i386/linux
#
# convert bootmenu Ubuntu(Stable)
#
OLD="ubuntu-installer"
NEW="ubuntu\/$ubuntu_stable"
DPATH="$tftp_boot_dir/ubuntu/$ubuntu_stable/i386/boot-screens/*.cfg"
BPATH="$tftp_boot_dir/backup/$ubuntu_stable"
TFILE="/tmp/out.tmp.$$"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
#
# convert bootmenu Ubuntu(Testing)
#
OLD="ubuntu-installer"
NEW="ubuntu\/$ubuntu_testing"
DPATH="$tftp_boot_dir/ubuntu/$ubuntu_testing/i386/boot-screens/*.cfg"
BPATH="$tftp_boot_dir/backup/$ubuntu_testing"
TFILE="/tmp/out.tmp.$$"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
#
# convert bootmenu Debian(Stable)
#
OLD="debian-installer"
NEW="debian\/$debian_stable"
DPATH="$tftp_boot_dir/debian/$debian_stable/i386/boot-screens/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_stable"
TFILE="/tmp/out.tmp.$$"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
#
# convert bootmenu Debian(UnStable)
#
OLD="debian-installer"
NEW="debian\/$debian_unstable"
DPATH="$tftp_boot_dir/debian/$debian_unstable/i386/boot-screens/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_unstable"
TFILE="/tmp/out.tmp.$$"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
DPATH="$tftp_boot_dir/debian/$debian_unstable/i386/boot-screens/kde/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_unstable/kde"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
DPATH="$tftp_boot_dir/debian/$debian_unstable/i386/boot-screens/lxde/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_unstable/lxde"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
DPATH="$tftp_boot_dir/debian/$debian_unstable/i386/boot-screens/xfce/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_unstable/xfce"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
#
# convert bootmenu Debian(Testing)
#
OLD="debian-installer"
NEW="debian\/$debian_testing"
DPATH="$tftp_boot_dir/debian/$debian_testing/i386/boot-screens/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_testing"
TFILE="/tmp/out.tmp.$$"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
DPATH="$tftp_boot_dir/debian/$debian_testing/i386/boot-screens/kde/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_testing/kde"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
DPATH="$tftp_boot_dir/debian/$debian_testing/i386/boot-screens/lxde/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_testing/lxde"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
DPATH="$tftp_boot_dir/debian/$debian_testing/i386/boot-screens/xfce/*.cfg"
BPATH="$tftp_boot_dir/backup/$debian_testing/xfce"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
else
echo "Error: Cannot read $f"
fi
done
#
# Copy vesamenu and get PNG for background
#
wget $menu_bg_png_url -O splash.png
cp ubuntu/$ubuntu_stable/i386/boot-screens/vesamenu.c32 .
echo "default vesamenu.c32" > pxelinux.cfg/default
echo "Menu Background splash.png" >> pxelinux.cfg/default
echo "Menu Title Boot Menu" >> pxelinux.cfg/default
#
# Create Menu Entries
#
echo "# Ubuntu Stable" >> pxelinux.cfg/default
echo "LABEL Ubuntu Stable ($ubuntu_stable)" >> pxelinux.cfg/default
echo "MENU LABEL Ubuntu Stable ($ubuntu_stable)" >> pxelinux.cfg/default
echo "KERNEL vesamenu.c32" >> pxelinux.cfg/default
echo "APPEND ubuntu/$ubuntu_stable/i386/boot-screens/menu.cfg" >> pxelinux.cfg/
default
echo "#" >> pxelinux.cfg/default
echo "# Ubuntu Testing" >> pxelinux.cfg/default
echo "LABEL Ubuntu Testing ($ubuntu_testing)" >> pxelinux.cfg/default
echo "MENU LABEL Ubuntu Testing ($ubuntu_testing)" >> pxelinux.cfg/default
echo "KERNEL vesamenu.c32" >> pxelinux.cfg/default
echo "APPEND ubuntu/$ubuntu_testing/i386/boot-screens/menu.cfg" >> pxelinux.cfg/default
echo "#" >> pxelinux.cfg/default
echo "# Debian Stable" >> pxelinux.cfg/default
echo "LABEL Debian Stable ($debian_stable)" >> pxelinux.cfg/default
echo "MENU LABEL Debian Stable ($debian_stable)" >> pxelinux.cfg/default
echo "KERNEL vesamenu.c32" >> pxelinux.cfg/default
echo "APPEND debian/$debian_stable/i386/boot-screens/menu.cfg" >> pxelinux.cfg/
default
echo "#" >> pxelinux.cfg/default
echo "# Debian UnStable" >> pxelinux.cfg/default
echo "LABEL Debian UnStable ($debian_unstable)" >> pxelinux.cfg/default
echo "MENU LABEL Debian UnStable ($debian_unstable)" >> pxelinux.cfg/default
echo "KERNEL vesamenu.c32" >> pxelinux.cfg/default
echo "APPEND debian/$debian_unstable/i386/boot-screens/menu.cfg" >> pxelinux.cfg/
default
echo "#" >> pxelinux.cfg/default
echo "# Debian Testing" >> pxelinux.cfg/default
echo "LABEL Debian Testing ($debian_testing)" >> pxelinux.cfg/default
echo "MENU LABEL Debian Testing ($debian_testing)" >> pxelinux.cfg/default
echo "KERNEL vesamenu.c32" >> pxelinux.cfg/default
echo "APPEND debian/$debian_testing/i386/boot-screens/menu.cfg" >> pxelinux.cfg/
default
echo "#" >> pxelinux.cfg/default
echo "# Fedora" >> pxelinux.cfg/default
echo "LABEL Fedora ($fedora_ver)" >> pxelinux.cfg/default
echo "MENU LABEL Fedora ($fedora_ver)" >> pxelinux.cfg/default
echo "KERNEL fedora/$fedora_ver/i386/vmlinuz" >> pxelinux.cfg/default
echo "APPEND append initrd=fedora/$fedora_ver/i386/initrd.img" >> pxelinux.cfg/
default
echo "#" >> pxelinux.cfg/default
echo "# CentOS" >> pxelinux.cfg/default
echo "LABEL CentOS ($centos_ver)" >> pxelinux.cfg/default
echo "MENU LABEL CentOS ($centos_ver)" >> pxelinux.cfg/default
echo "KERNEL centos/$centos_ver/i386/vmlinuz" >> pxelinux.cfg/default
echo "APPEND append initrd=centos/$centos_ver/i386/initrd.img" >> pxelinux.cfg/
default
echo "#" >> pxelinux.cfg/default
echo "# Mandriva" >> pxelinux.cfg/default
echo "LABEL Mandriva ($mandriva_ver)" >> pxelinux.cfg/default
echo "MENU LABEL Mandriva ($mandriva_ver)" >> pxelinux.cfg/default
echo "KERNEL mandriva/$mandriva_ver/i386/vmlinuz" >> pxelinux.cfg/default
echo "APPEND append initrd=mandriva/$mandriva_ver/i386/all.rdz vga=788
splash=silent automatic=method:http,network:dhcp,server:www.gtlib.gatech.edu,
directory:/pub/mandrake/official/2010.0/i586" >> pxelinux.cfg/default
echo "#" >> pxelinux.cfg/default
echo "# Suse" >> pxelinux.cfg/default
echo "LABEL Suse ($opensuse_ver)" >> pxelinux.cfg/default
echo "MENU LABEL Suse ($opensuse_ver)" >> pxelinux.cfg/default
echo "KERNEL suse/$opensuse_ver/i386/linux" >> pxelinux.cfg/default
echo "APPEND append initrd=suse/$opensuse_ver/i386/initrd splash=silent
showopts install=http://download.opensuse.org/distribution/$opensuse_ver/repo/oss/" >> pxelinux.cfg/default
echo "#" >> pxelinux.cfg/default
echo "prompt 0" >> pxelinux.cfg/default
echo "timeout 0" >> pxelinux.cfg/default
Fuente HowtoForge.
No hay comentarios:
Publicar un comentario