Scripts (download initrd, Linux kernels,…) and configurations files (PXE, preseed,…) for PXE server
Go to file
Jeremy Gardais 6c70fef83b Harmonize all pressed files 2016-07-26 13:55:22 +02:00
config Ensure to load the preseed files from the new path and correct Debian 2016-07-22 17:01:14 +02:00
preseed/debian Harmonize all pressed files 2016-07-26 13:55:22 +02:00
pxelinux.cfg First commit. 2014-09-08 09:49:55 +02:00
scripts Correct the syslog configuration file path. 2016-07-25 16:16:24 +02:00
.gitignore Ignore installer directory 2016-07-20 12:09:21 +02:00
CHANGELOG.md Correct the syslog configuration file path. 2016-07-25 16:16:24 +02:00
README.md README.md: add Preseed description 2016-07-26 11:43:26 +02:00
chain.c32 First commit. 2014-09-08 09:49:55 +02:00
gpxelinux.0 First commit. 2014-09-08 09:49:55 +02:00
menu.c32 First commit. 2014-09-08 09:49:55 +02:00
pxelinux.0 First commit. 2014-09-08 09:49:55 +02:00
reboot.c32 First commit. 2014-09-08 09:49:55 +02:00
vesamenu.c32 First commit. 2014-09-08 09:49:55 +02:00

README.md

tftpboot

  1. Overview
  2. Description
  3. How to use it
  4. TODO

Overview

All needed files to set up a PXE server.

Description

PXE files

Use some bootloaders files provide by:

  • pxelinux debian package:
    • gpxelinux.0
    • pxelinux.0
  • syslinux-common debian package:
    • chain.c32
    • menu.c32
    • reboot.c32
    • vesamenu.c32

To get those files from the packages of APT repositories:

mkdir -p temp_pxe_files
cd temp_pxe_files
aptitude download pxelinux syslinux-common
ar p pxelinux*.deb data.tar.xz | tar xJ -C . --strip-components=4 ./usr/lib/PXELINUX/{g,}pxelinux.0
ar p syslinux-common*.deb data.tar.xz | tar xJ -C . --strip-components=6 ./usr/lib/syslinux/modules/bios/{chain,menu,reboot,vesamenu}.c32

The MD5 checksum can mismatch between the files from this repo and those from Debian's packages.

Configuration files

Contains the files which defines the PXE menu. The first one will:

  • Call all others menu.cfg from subdirectories (debian/, clonezilla/,…) as an entry.
  • Define a timeout (4 seconds).
  • Define the default entry (boot on local first disk).

config/debian/menu.cfg

  1. Provide PXE entries for:
  • Debian Jessie (Stable) amd64.
  • Debian Jessie (Stable) amd64 with additionnals firmwares (see make_debian_initrd_with_firmware.sh script).
  • Debian Jessie (Stable) amd64 with additionnals firmwares and preseed file.
  • Debian Jessie (Stable) amd64 for minions with preseed (Mate as default GUI).
  • Debian Jessie (Stable) amd64 for minions with preseed (Cinnamon as default GUI).
  • Debian Jessie (Stable) amd64 for minions with preseed (Gnome 3 as default GUI).
  • Debian Jessie (Stable) i386.
  • Debian Wheezy (oldStable) amd64 with additionnals firmwares (see make_debian_initrd_with_firmware.sh script).
  • Debian Wheezy (oldStable) amd64 with additionnals firmwares and preseed file.
  • Debian Wheezy (oldStable) amd64 with preseed (Gnome 3 as default GUI).
  • Debian Wheezy (oldStable) i386.
  • Debian Sid (unstable) amd64.
  • Debian Sid (unstable) amd64 with additionnals firmwares (see make_debian_initrd_with_firmware.sh script).
  • Debian Sid (unstable) i386.
  1. If you want to use with your own TFTPD server, you need te set your IP server! Replace all occurrences of 129.20.27.239 by the IP of your TFTPD server to be able to load the preseed files!

Preseed

A preseed file can be loaded by the Debian-Installer to answer all questions Preseeding provides a way to set answers to questions asked by the Debian-Installer, without having to manually enter the answers. This makes it possible to fully automate most types of installation and even offers some features not available during normal installations. More informations on Debian wiki.

Commons configurations

  • Localization:
    • Language: English
    • Country: France
    • Locale: en_US.UTF-8 (US English)
    • Keyboard: fr-latin9 (French)
  • Hardware:
    • Network configuration (IP, hostname, domain): automatic (from DHCP server)
    • Load additionnals firmwares if availables.
  • Account:
    • Create a root account.
    • root password: SHA-256 hash of the password
    • Don't create a normal user (be sure to allow remote connection for root! See late_command info).
  • Timezone
    • Timezone: Europe/Paris
    • NTP server: ntp.univ-rennes1.fr
  • Partitionning
    • Use the entire first disk (sda or vda aka virtual hdd) with LVM.
    • Purge all LVM, RAID,… partitions or informations already set on the first disk.
    • Partitionning:
      Device Mount point Size Description
      /dev/sda1 /boot 200 - 250 Mb Bootloader (Grub)
      /dev/sda2 LVM 16 Gb - 100% Physical Volume for LVM
      lv_root / 1 - 2 Gb root partition
      lv_usr /usr 4 - 10 Gb Non-essential system resources (binaries, libraries, documentations,…)
      lv_var /var 4 - 8 Gb Variable files (databases, cache, log,…)
      lv_tmp /tmp 1 - 2 Gb Temporary files cleaned between system reboots
      lv_home /home 2 - 3 Gb User's home directories (saved files, personnal settings,…)
      lv_srv /srv 512 MB - 2 Gb Specific datas for this system
      lv_opt /opt 512 MB - 4 Gb Optional application
      lv_swap SWAP 512 Mb - 100% RAM size Swap sapce
      lv_free /mnt/free free space See below
  • APT:
    • Installation from internet (repository: ftp.fr.debian.org)
    • Add a repository for Puppet (http://apt.puppetlabs.com) and the GPG key.
    • Select ssh-server and standard in tasksel for installation.
    • Add additionnals packages: tmux, puppet, zsh and tftp-hpa (to be able to download the latecommand archive from the PXE server).
  • Bootloader:
    • Install Grub on the MBR of the first disk.
  • late_command
    • Define ZSH as the default shell.
    • Permit root login via SSH with it's password.
    • Download and extract a latecommand archive from this repository.
    • Run the script from

lv_free - /mnt/free
The preseed's partitionning need to allocate all the disk space. If it's not define, it will put it in the last defined partition all extra free space. So lv_free is a temporary LV that you can destroy and use the space to resize any other LV.

Scripts

See the scripts's README.md file for more informations.

How to use it

  • Put the data of this repository on the PXE server:
    • Clone the repository with https URL or with SSH to /var/lib/tftpboot.
    • Download the last archive: wget https://git.ipr.univ-rennes1.fr/cellinfo/tftpboot/archive/master.tar.gz
  • Install a TFTP server (tftpd-hpa package for Debian's based systems or tftp-server for Redhat's based systems).
  • Start the tftpd's service:
    • sudo service tftpd-hpa start
    • sudo systemctl start tftpd-hpa
  • You can test if the TFTP server provide the files with a TFTP client (tftp-hpa) by downloading a file with the command:
    • tftp $IP.SRV.TFTP -c get README.md /tmp/README.md_from_tftpd_server
  • Set your IP in some files instead of the default one 129.20.27.239:
    • debian menu.cfg to be able to load the preseed files (preseed/url=tftp://SRV.IP.AD.DR/)
    • Jessie preseed file to download the postinstall script from your TFTPD server (in-target /usr/bin/tftp SRV.IP.AD.DR)
    • Wheezy preseed file to download the postinstall script from your TFTPD server (in-target /usr/bin/tftp SRV.IP.AD.DR)

TODO

  • Add a tiny preseed file that could be loaded for a manual install.
  • Download the latecommand archive from this repository instead of the TFTPD server?
  • Add Debian Stretch support #1