mirror of
https://github.com/mbirth/wiki.git
synced 2024-12-25 23:04:06 +00:00
Added post about iPXE configs for different tools.
This commit is contained in:
parent
b96b50de21
commit
a19eb4957e
321
know-how/software/_posts/2016-03-05-ipxe-scripts-for-tools.md
Normal file
321
know-how/software/_posts/2016-03-05-ipxe-scripts-for-tools.md
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
---
|
||||||
|
title: iPXE Scripts for Tools
|
||||||
|
layout: default
|
||||||
|
created: 2016-03-05 00:36:55 +0100
|
||||||
|
updated: 2016-03-05 00:36:55 +0100
|
||||||
|
toc: true
|
||||||
|
tags:
|
||||||
|
- know-how
|
||||||
|
- software
|
||||||
|
- ipxe
|
||||||
|
- network
|
||||||
|
- booting
|
||||||
|
---
|
||||||
|
Most tools you want to boot are probably Linux systems. To boot them, you need
|
||||||
|
a *kernel* and some (initial) filesystem. One way is to load an *initrd*
|
||||||
|
(initial ramdisk) which contains only the basic stuff and mounts the big
|
||||||
|
filesystem itself. Or you can mount the "big" filesystem directly and use that
|
||||||
|
from the beginning.
|
||||||
|
|
||||||
|
You can find my current config [here](https://github.com/mbirth/ipxe-config).
|
||||||
|
And below you'll find detailed instructions for those tools.
|
||||||
|
|
||||||
|
![]({{ site.url }}/assets/ipxe05.jpg){: width="400px"}
|
||||||
|
|
||||||
|
|
||||||
|
Bootstrap
|
||||||
|
=========
|
||||||
|
|
||||||
|
For general preparation, I fill some variables with architecture relevant data,
|
||||||
|
e.g. if the system is 32bit or 64bit. And to spice things up, I also have a few
|
||||||
|
variables with colour codes. This is the code I use:
|
||||||
|
|
||||||
|
```
|
||||||
|
set esc:hex 1b
|
||||||
|
set bold ${esc:string}[1m
|
||||||
|
set orange ${esc:string}[33;0m
|
||||||
|
set yellow ${esc:string}[33;1m
|
||||||
|
set cyan ${esc:string}[36;1m
|
||||||
|
set resetfg ${esc:string}[39m
|
||||||
|
set resetbg ${esc:string}[49m
|
||||||
|
set resetbold ${esc:string}[22m
|
||||||
|
set reset ${esc:string}[0m
|
||||||
|
|
||||||
|
# Figure out if client is 64-bit capable
|
||||||
|
cpuid --ext 29 && set arch x86_64 || set arch x86
|
||||||
|
cpuid --ext 29 && set archb 64 || set archb 32
|
||||||
|
cpuid --ext 29 && set archl x86_64 || set archl i386
|
||||||
|
|
||||||
|
set chotkey ${bold}
|
||||||
|
set cname ${orange}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
AVG Rescue CD
|
||||||
|
=============
|
||||||
|
|
||||||
|
* [AVG Rescue CD](http://www.avg.com/ww-en/avg-rescue-cd)
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}AVG Rescue CD${reset}
|
||||||
|
set base-url ${boot-url}avg/
|
||||||
|
kernel ${base-url}vmlinuz max_loop=255 init=linuxrc vga=ask reboot=bios
|
||||||
|
initrd ${base-url}initrd.lzm
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
BitDefender Rescue CD
|
||||||
|
=====================
|
||||||
|
|
||||||
|
* [BitDefender Rescue CD](http://www.bitdefender.com/support/how-to-create-a-bitdefender-rescue-cd-627.html)
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}BitDefender Rescue CD${reset} (${archl})
|
||||||
|
set base-url ${boot-url}bitdefender/
|
||||||
|
kernel ${base-url}kernel.${archl} root=/dev/nfs real_root=/dev/nfs nfsroot=172.16.254.1:/volume1/web/ipxe/bitdefender/cd/ ip=${ip} loop=/rescue/livecd.squashfs looptype=squashfs livecd.nfsif=${mac} initrd udev cdroot nosplash lang=en
|
||||||
|
initrd ${base-url}initfs.${archl}
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
CloneZilla
|
||||||
|
==========
|
||||||
|
|
||||||
|
* [CloneZilla](http://clonezilla.org/)
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}Clonezilla${reset} (${arch})
|
||||||
|
set base-url ${boot-url}clonezilla/${arch}/
|
||||||
|
kernel ${base-url}vmlinuz boot=live union=overlay username=user config components noswap edd=on nomodeset nodmraid noeject locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no vga=normal net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 fetch=${base-url}filesystem.squashfs
|
||||||
|
initrd ${base-url}initrd.img
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
DFSee
|
||||||
|
=====
|
||||||
|
|
||||||
|
For [DFSee](http://www.dfsee.com/) the easiest way is to load the whole ISO
|
||||||
|
image into RAM and boot it from there.
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}DFSee${reset}
|
||||||
|
kernel ${boot-url}memdisk iso raw
|
||||||
|
initrd ${boot-url}dfsee/dfsee.iso
|
||||||
|
boot || goto failed
|
||||||
|
#sanboot --no-describe --drive 0x00 ${sanboot-url}dfsee/dfsee.iso
|
||||||
|
```
|
||||||
|
|
||||||
|
(The `sanboot` line didn't work for me for some reason. That's why I used
|
||||||
|
[memdisk](http://www.syslinux.org/wiki/index.php?title=MEMDISK) instead.)
|
||||||
|
|
||||||
|
|
||||||
|
FSecure
|
||||||
|
=======
|
||||||
|
|
||||||
|
Getting the [F-Secure Rescue CD](https://www.f-secure.com/en/web/labs_global/rescue-cd)
|
||||||
|
to boot via the network is a bit more complicated (if you want to avoid using
|
||||||
|
`memdisk`).
|
||||||
|
|
||||||
|
From the ISO image, you need the following:
|
||||||
|
|
||||||
|
* `boot/isolinux/fsecure/linux` --- kernel
|
||||||
|
* `boot/isolinux/fsecure/minirt.gz` --- init ramdisk
|
||||||
|
* `KNOPPIX/` --- folder with the remaining system files
|
||||||
|
|
||||||
|
Then proceed according to [this](http://www.syslinux.org/wiki/index.php?title=WDSLINUX#F-Secure_Antivirus_Rescue_CD):
|
||||||
|
|
||||||
|
* Copy the extracted `minirt.gz` file and `KNOPPIX/` folder to a temporary
|
||||||
|
location on a linux machine (e.g. `/root/tmp`)
|
||||||
|
* In the `/root/tmp` location create a folder called `fsecure` and change
|
||||||
|
into this directory
|
||||||
|
|
||||||
|
mkdir /root/tmp/fsecure
|
||||||
|
cd /root/tmp/fsecure
|
||||||
|
|
||||||
|
* Type the following command and press enter (this extracts all the files from
|
||||||
|
the `minirt.gz` file)
|
||||||
|
|
||||||
|
gunzip -c ../minirt.gz | cpio -idv
|
||||||
|
|
||||||
|
* Copy the `KNOPPIX` folder to the `mnt-system` folder (from the now extracted
|
||||||
|
`minirt.gz`)
|
||||||
|
|
||||||
|
cp -r ../KNOPPIX mnt-system
|
||||||
|
|
||||||
|
* Make a backup copy of the `init` file
|
||||||
|
|
||||||
|
cp init init.orig
|
||||||
|
|
||||||
|
* Edit the `init` file with the following modifications
|
||||||
|
|
||||||
|
* Find the `# findknoppix devices...` section and delete everything from the
|
||||||
|
`findknoppix()` method and replace it by `return 0`
|
||||||
|
|
||||||
|
Change
|
||||||
|
|
||||||
|
```
|
||||||
|
# findknoppix devices...
|
||||||
|
findknoppix(){
|
||||||
|
local dev
|
||||||
|
for dev in "$@"; do
|
||||||
|
[ -b "$dev" ] || continue
|
||||||
|
echo -n -e "\r${CRE}${BLUE}${SEARCHINGFOR} $DISTRO in: ${MAGENTA}$dev${NORMAL} "
|
||||||
|
trymount "$dev" /mnt-system >/dev/null 2>&1 || continue
|
||||||
|
if [ -r /mnt-system/"$knoppix_dir"/KNOPPIX ] ; then
|
||||||
|
# We must have also fsecure structure present else we might try to mount something wrong.
|
||||||
|
if [ -d /mnt-system/fsecure/rescuecd ] || [ -d /mnt-system/boot/isolinux/fsecure ] ; then
|
||||||
|
echo -e "\r${CRE}${GREEN}$DISTRO ${FOUNDAT}: ${MAGENTA}$dev${NORMAL} "
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
umount /mnt-system
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
into
|
||||||
|
|
||||||
|
```
|
||||||
|
# findknoppix devices...
|
||||||
|
findknoppix(){
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* Compress everything back into a file again by typing the following and
|
||||||
|
press enter
|
||||||
|
|
||||||
|
find . -print | cpio -o -H newc |gzip -9 -c - > ../minirt.gz.new
|
||||||
|
|
||||||
|
* Copy the new `minirt.gz.new` to the `fsecure` directory on the web server
|
||||||
|
and name it `minirt.gz`
|
||||||
|
|
||||||
|
* Copy the `linux` kernel to the same directory
|
||||||
|
|
||||||
|
This is the iPXE boot code:
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}F-Secure Rescue CD${reset}
|
||||||
|
set base-url ${boot-url}fsecure/
|
||||||
|
kernel ${base-url}linux ramdisk_size=100000 lang=en vt.default_utf8=0 apm=power-off vga=normal nomce loglevel=1 nolapic_timer nosound console=tty10 video=noblank
|
||||||
|
initrd ${base-url}minirt.gz
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
G4L - Ghost for Linux
|
||||||
|
=====================
|
||||||
|
|
||||||
|
* [G4L - Ghost for Linux](https://sourceforge.net/projects/g4l/)
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}G4L - Ghost for Linux${reset}
|
||||||
|
set base-url ${boot-url}g4l/
|
||||||
|
kernel ${base-url}bz4x2.8
|
||||||
|
initrd ${base-url}ramdisk.lzma
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
g4u - ghost for unix
|
||||||
|
====================
|
||||||
|
|
||||||
|
* [g4u - ghost for unix](http://www.feyrer.de/g4u/)
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}g4u - ghosting for unix${reset}
|
||||||
|
set base-url ${boot-url}g4u/
|
||||||
|
#kernel ${base-url}netbsd
|
||||||
|
#initrd ${base-url}miniroot.kmod
|
||||||
|
kernel ${boot-url}memdisk iso raw
|
||||||
|
initrd ${base-url}g4u-2.5.iso
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
GParted Live
|
||||||
|
============
|
||||||
|
|
||||||
|
* [GParted Live](http://gparted.org/livecd.php)
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}GParted Live${reset} (${arch})
|
||||||
|
set base-url ${boot-url}gparted/${arch}/
|
||||||
|
kernel ${base-url}vmlinuz boot=live union=overlay username=user config components noswap noeject ip= net.ifnames=0 nosplash fetch=${base-url}f
|
||||||
|
ilesystem.squashfs
|
||||||
|
initrd ${base-url}initrd.img
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
HDT - Hardware Detection Tool
|
||||||
|
=============================
|
||||||
|
|
||||||
|
[HDT](http://www.hdt-project.org/) comes as a small floppy image and can be
|
||||||
|
booted using the `sanboot` command.
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}Hardware Detection Tool${reset}
|
||||||
|
sanboot --no-describe --drive 0x00 ${sanboot-url}hdt/hdt.img || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Memtest86 V6
|
||||||
|
============
|
||||||
|
|
||||||
|
[Memtest86](http://www.memtest86.com/) comes as a usb flash drive image which
|
||||||
|
you can boot using [memdisk](http://www.syslinux.org/wiki/index.php?title=MEMDISK).
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}Memtest86 V6${reset}
|
||||||
|
kernel ${boot-url}memdisk
|
||||||
|
initrd ${boot-url}memtest86-6/memtest86-usb.img
|
||||||
|
boot || goto failed
|
||||||
|
#sanboot --no-describe --drive 0x00 ${sanboot-url}memtest86-6/memtest86-usb.img
|
||||||
|
```
|
||||||
|
|
||||||
|
(Again, `sanboot` didn't work for me.)
|
||||||
|
|
||||||
|
|
||||||
|
Memtest86+ V5
|
||||||
|
=============
|
||||||
|
|
||||||
|
[Memtest86+](http://www.memtest.org/) is the free and open-source alternative
|
||||||
|
to Memtest86. This is distributed as a ready-to-boot binary.
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}Memtest86+ V5${reset}
|
||||||
|
boot ${boot-url}memtest86+/memtest86+.bin || goto failed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
SystemRescueCD
|
||||||
|
==============
|
||||||
|
|
||||||
|
For the [SysRescCD](https://www.system-rescue-cd.org/), you need the
|
||||||
|
following files from the ISO image:
|
||||||
|
|
||||||
|
* `sysrcd.dat` --- "big" filesystem
|
||||||
|
* `sysrcd.md5` --- checksum to validate the sysrcd.dat
|
||||||
|
* `isolinux/rescue32` --- kernel for 32bit systems
|
||||||
|
* `isolinux/rescue64` --- kernel for 64bit systems
|
||||||
|
* `isolinux/initram.igz` --- initial ramdisk
|
||||||
|
|
||||||
|
Copy those to a directory `sysresccd` on your web server (where the `boot.ipxe`
|
||||||
|
is).
|
||||||
|
|
||||||
|
SysRescCD looks for the "big" filesystem for itself. You just have to point it
|
||||||
|
into the right direction with the `netboot` parameter.
|
||||||
|
|
||||||
|
```
|
||||||
|
echo Booting ${cname}SystemRescueCD${reset} (${archb})
|
||||||
|
set base-url http://diskstation:80/ipxe/sysresccd/
|
||||||
|
kernel ${base-url}isolinux/rescue${archb}
|
||||||
|
initrd ${base-url}isolinux/initram.igz
|
||||||
|
imgargs rescue${archb} setkmap=de dodhcp netboot=${base-url}sysrcd.dat
|
||||||
|
boot || goto failed
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue
Block a user