DGND3700 V1 PXE Extended Network Boot Ubuntu
Contents
Extending PXE Boot with USB
- Create a folder 'pxe' in the root of your USB attached drive.
- Turn on NFS from the network services menu. (Supports NFS 2/3/4) if you are intend to boot Linux distro's such as Ubuntu.
- In this example I will assume the DGND3700 has IP 192.168.0.1 and the drive label is Seagate500 (and thus mounted as such) and you have a NFS share to it mounted on your machine under /net (Suggest AutoFS)
Get required files
Quick method
Copy contents of /usr/pxe from the router to pxe/ folder just created as a starting point (telnet/ssh in and copy to mounted USB drive or via Filezilla).
Latest from Syslinux
Get the latest git, build it, copy it
sudo apt-get install git nasm uuid-dev
cd ~
git clone git://git.kernel.org/pub/scm/boot/syslinux/syslinux.git
cd syslinux
make bios
find ~/syslinux/bios/ -type f \( -name lib*.c32 -o -name ldlinux.c32 -o -name lpxelinux.0 -o -name vesamenu.c32 -o -name memdisk -o -name hdt.c32 \) -exec cp {} /net/192.168.0.1/media/Seagate500/pxe/ \;
Example
I will use the below as a visual example as it will probably make most sense.
I am doing this from my laptop with a NFS share to the router, rather than physically moving the drive over.
Download
Download whatever Ubuntu you want, in this example I will use
Ubuntu 12.04.4 (32bit)
Ubuntu 14.04 (64 bit)
Extract
Open each Ubuntu .iso in archive manager, create a target folder, extract some of the folders in the .iso to create this structure (The 'casper' folder is the only vital one if you want to save a few Mb); Just download chntpw straight into the folder you made for it.
Dir Structure
- Note I also have Parted Magic 4.8 and chntpw here, I just haven't made them part of this example.
rich@rich:/net/192.168.0.1/media/Seagate500/pxe$ tree -L 2 . ├── 12.04.4 │ ├── .disk │ ├── casper │ ├── dists │ ├── pool │ ├── preseed │ └── ubuntu -> . ├── 14.04 │ ├── .disk │ ├── casper │ ├── dists │ ├── pool │ ├── preseed │ └── ubuntu -> . ├── background.jpg ├── chntpw │ └── cd140201.iso ├── default ├── hdt.c32 ├── ldlinux.c32 ├── libcom32.c32 ├── libgpl.c32 ├── libmenu.c32 ├── libutil.c32 ├── lpxelinux.0 ├── memdisk ├── memtest -> memtest86-4.3.7.bin ├── memtest86-4.3.7.bin ├── memtest86plus-5.01.bin ├── menu.c32 ├── pci.ids ├── pmagic │ ├── bzImage │ └── initramfs └── vesamenu.c32
Reset Permissions (if needed)
Depending on how/what you used to extract, permissions/ownership can get messy. To reset;
cd /net/192.168.0.1/media/Seagate500/ chown -R 1000:1000 pxe find pxe -type f -exec chmod 644 {} \; find pxe -type d -exec chmod 755 {} \;
Append pxe/default with this;
LABEL - MENU LABEL Ubuntu Live OS MENU DISABLE LABEL -> Ubuntu 12.04.4 LTS (x32) KERNEL 12.04.4/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/media/Seagate500/pxe/12.04.4 initrd=12.04.4/casper/initrd.lz quiet splash -- locale=en_GB bootkbd=gb console-setup/layoutcode=gb LABEL -> Ubuntu 12.04.4 LTS (x32) (copy to RAM) KERNEL 12.04.4/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/media/Seagate500/pxe/12.04.4 initrd=12.04.4/casper/initrd.lz quiet splash toram -- locale=en_GB bootkbd=gb console-setup/layoutcode=gb LABEL -> Ubuntu 14.04 LTS (x64) KERNEL 14.04/casper/vmlinuz.efi APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/media/Seagate500/pxe/14.04 initrd=14.04/casper/initrd.lz quiet splash -- locale=en_GB bootkbd=gb console-setup/layoutcode=gb LABEL -> Ubuntu 14.04 LTS (x64) (copy to RAM) KERNEL 14.04/casper/vmlinuz.efi APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/media/Seagate500/pxe/14.04 initrd=14.04/casper/initrd.lz quiet splash toram -- locale=en_GB bootkbd=gb console-setup/layoutcode=gb MENU SEPARATOR LABEL -> Parted Magic 4.8 KERNEL pmagic/bzImage INITRD pmagic/initramfs MENU SEPARATOR LABEL -> Chntpw (Windows password changer) KERNEL memdisk iso raw INITRD chntpw/cd140201.iso
Simple as that, plug something in to a wired LAN port and you should be able to boot straight into Ubuntu!
Comments
blog comments powered by Disqus