Difference between revisions of "TFTP server manage netboot kernels"
Line 46: | Line 46: | ||
− | = | + | =Prepare NetBoot kernel= |
− | |||
+ | '''Make sure that the server you're gonna use to extract the kernel has all the drivers setup and doesn't need a reboot before starting''' | ||
− | + | ||
− | If your client(s) will use some | + | == If your client(s) will use some specifics drivers then you MUST install these drivers before going through the following steps. |
+ | |||
+ | |||
+ | You need to be very careful, especially if you plan to use some smart-card reader! | ||
Line 191: | Line 194: | ||
* Don't forget to adjust the rights to 755 for every distribution | * Don't forget to adjust the rights to 755 for every distribution | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Kernel modules and source== | ||
+ | |||
+ | -- This is an optional step ; but it can avoid many bugs -- | ||
+ | |||
+ | |||
+ | If you're using a local kernel as the default NetBoot kernel, then you need to do copy the ''modules'' + ''kernel source'' to every distribution. | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | # Copy kernel modules | ||
+ | cp -r /lib/modules/`uname -r` /nfs/trusty/lib/modules | ||
+ | |||
+ | # Copy kernel sources | ||
+ | cp -r /usr/src/linux-headers-`uname -r` /nfs/trusty/usr/src | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | Note that '''you have to adjust the /nfs'''/XXX |
Revision as of 09:47, 21 August 2014
Contents
TFTP configuration
TFTP can manage different configurations, up to 1 per host!
This is how a ThinClient (= netBoot client) will retrieve its configuration:
As you can see you have 3 possibilities:
1. MAC @ filter. Configuration file name must be:
- Start with ARP type '01-'
- all in lower case hexadecimal
- dash '-' separators instead of ';'
for example a MAC @ 88:99:AA:BB:CC:DD would search for the filename 01-88-99-aa-bb-cc-dd.
2. IP @ filter. Configuration file name must be:
- host IP / network address in hexadecimal
- all in upper case
e.g. 192.0.2.91 -> C000025B
3. Default configuration
To learn more about all the available option, check out http://www.syslinux.org/wiki/index.php/PXELINUX.
Prepare NetBoot kernel
Make sure that the server you're gonna use to extract the kernel has all the drivers setup and doesn't need a reboot before starting
== If your client(s) will use some specifics drivers then you MUST install these drivers before going through the following steps.
You need to be very careful, especially if you plan to use some smart-card reader!
Now, we have to specify which kernel to use and which distributions are available for NetBoot.
Create the default configuration file:
vim /tftpboot/pxelinux.cfg/default
Put the following:
# Debian 7.x
LABEL wheezy
kernel images/wheezy/vmlinuz
initrd images/wheezy/initrd.img
# Ubuntu 14.04
LABEL trusty
kernel images/trusty/vmlinuz
initrd images/trusty/initrd.img
# Prompt user for selection
PROMPT 1
# No timeout
TIMEOUT 0
- Each LABEL is a specific configuration that will displayed on the NetBoot menu.
- PROMPT 0 = enable user prompt so you can choose the configuration
- TIMEOUT 0 = timeout (in seconds) before the default option is chosen. 0 == no timeout
Note that I used a reference to "trusty/", that's a folder I need to create later on.
Init Kernel files
Create directories
Create the target kernel folders. You should create 1 folder for each distribution you'd like to provide in NetBoot.
# Debian 7.x
mkdir -p /tftpboot/images/wheezy
# Ubuntu 14.04
mkdir -p /tftpboot/images/trusty
Prepare initramfs to boot over NFS
This step must to be run on the machine that has the kernel you are going to serve to your clients.
>>> In our case it has to be run on the TFTP server
Copy initramfs settings for PXE boot
cp -r /etc/initramfs-tools /etc/initramfs-pxe
Adjust PXE boot configuration
cd /etc/initramfs-pxe/
vim /etc/initramfs-pxe/initramfs.conf
Add / adjust the following options:
BOOT=nfs
MODULE=netboot
Copy and prepare kernel
You have to copy your current kernel files to the boot folder:
# Debian 7.x
cp /boot/vmlinuz-`uname -r` /tftpboot/images/wheezy/vmlinuz
cp /boot/initrd.img-`uname -r` /tftpboot/images/wheezy/initrd.img
# Ubuntu 14.04
cp /boot/vmlinuz-`uname -r` /tftpboot/images/trusty/vmlinuz
cp /boot/initrd.img-`uname -r` /tftpboot/images/trusty/initrd.img
Enable NFS boot on target kernel:
mkinitramfs -d /etc/initramfs-pxe -o /tftpboot/images/trusty/initrd.img
Adjust rights:
chmod -R 755 /tftpboot/images/
Notes:
- Do NOT use some symlink for "vmlinuz" and "initrd.img" !! It won't work.
- If you don't want to use `uname -r` [current kernel version and architecture] then adjust the values to target kernel number + architecture
- You have to run mkinitramfs for each kernel you'll provide
- Don't forget to adjust the rights to 755 for every distribution
Kernel modules and source
-- This is an optional step ; but it can avoid many bugs --
If you're using a local kernel as the default NetBoot kernel, then you need to do copy the modules + kernel source to every distribution.
# Copy kernel modules
cp -r /lib/modules/`uname -r` /nfs/trusty/lib/modules
# Copy kernel sources
cp -r /usr/src/linux-headers-`uname -r` /nfs/trusty/usr/src
Note that you have to adjust the /nfs/XXX