Other Languages: ComoNetbootInstall Espanol
ContentsBRTableOfContents(3) |
Basic: Hands-On Interactive Network Desktop Install
The following high-level instructions allow you to PXE boot and install Ubuntu just as if you had a CD in the drive. This means you can also use the client as a LiveCD system -- without the CD!
- Install an NFS server and a TFTP server on a system on your network. (See more info about TFTP setup below.)
- Download the ISO you want to boot over your network.
- Mount the ISO and copy all the files to the NFS server, and export the directory.
Copy the contents of install/netboot from the CD into the tftpboot directory on your TFTP server. (Or [http://archive.ubuntu.com/ubuntu/dists/feisty/main/installer-i386/current/images/netboot/netboot.tar.gz grab it from archive.ubuntu.com] if you don't have this directory on your CD.)
Copy vmlinuz and initrd.gz from the CD. You may have to search for them, they're usually in /install or /casper. Grab the one under /casper if it's there. (The Alternative CD does not have casper, so I think this section does not apply to that CD - DT, 31/07/2007.) Put them into the tftpboot directory; rename them to be something unique if you will have more than one version in the directory.
Edit pxelinux.cfg/default to point one of the LABEL entries to your kernel and initrd, with the following options to tell casper to mount / via NFS -- your entry should look a lot like these three lines:
LABEL edubuntu kernel vmlinuz-edubuntu-iso append vga=normal initrd=initrd-edubuntu-iso boot=casper netboot=nfs nfsroot=10.20.1.2:/opt/ltsp/edudesktop-iso --
nfsroot points to your NFS server and the path to the directory where you copied all the contents of the CD.Set the following options in dhcpd.conf on your DHCP server:
next-server 10.20.1.2; # this is your TFTP server filename "pxelinux.0"; # put this in verbatim
- Profit!
man casper for more information about casper, which is what makes this so easy.
Basic: Hands-On Interactive Network Server Install
These steps allow you to install an Ubuntu distro from over your network, as if you had booted and installed it from the Ubuntu installation CD.
Services needed, on a server (or servers) :
- dhcp or bootp: to provide netboot server support,
- tftp: to feed the first boot image to the netboot client machine, when requested by the netboot server,
- http, ftp or nfs: to supply the Ubuntu distro to the client machine during the installation process.
- The client machine must be able to boot from its network card, else from a diskette that you built to 'netboot'.
This page focusses on the combination of dhcp, tftp, and http. In the examples below 'myserver' is the server for these. (Each of these can be run on a separate server if desired.)
Install and configure the dhcp server. Eg to install:
root@myserver:~ # apt-get install dhcp3-server
Configure the dhcp server to tell the clients what to boot. I added a default host name, you don't need it but it comes in handy for other things.
root@myserver:~ # cat /etc/dhcp3/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.254; } # put your DNS IP's here: option domain-name-servers 192.168.1.7, 68.87.66.196 ; filename="ubuntu/feisty/alternate/install/netboot/pxelinux.0"; root@myserver:~ # /etc/init.d/dhcp3-server restart Stopping DHCP server: dhcpd3. Starting DHCP server: dhcpd3.
- Install and configure the Trivial File Transfer Protocol server. The tftpd-hpa package is recommended. Install it. It is enabled via /etc/default/tftpd-hpa, {{{RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot" }}} Also note its base directory. The default setting is shown above.
Mount the CD (media or image) under the tftpboot base directory found above,eg
root@myserver:/var/lib/tftpboot/ubuntu/feisty$ mount -o loop feisty-alternate-i386.iso alternate/
or, you can instead copy the contents of the CD into that location, instead of leaving the ISO mounted.(This part might need more info, eg about configuring the netboot server via tftpboot/ubuntu-installer/i386/pxelinux.cfg/default. Using the files from the Alternative CD, the Ubuntu installer still insisted on looking for a CD. I needd to use another linux kernel and initrd.gz, to get a different Installer. I did not have casper: dunno if that is significant. Ayway see [https://help.ubuntu.com/community/Installation/Netboot] - DT 31/07/2007)
Install and configure Apache, eg:
root@myserver:~ # apt-get install apache2
Make a symlink from apache's doc Root to the CD
root@myserver:/var/www # ln -s /var/lib/tftpboot/ubuntu/
Or copy the /ubuntu directory from the CD into here.To use a pure ftp server like the vs-ftp server instead of Apache, install the ftp server, and configure it for anonymous ftp access. Then copy the /ubuntu directory from the CD into the anonymous ftp home. With vs-ftpd, this is set to /home/ftp. (Check /etc/passwd to confirm the anonymous ftp home.) Next test that anonymous ftp works and finds the installation stuff. eg via 'ftp localhost' on that machine. The install needs to be done in 'expert' mode, so you can select the ftp protocol instead of the default 'http'.- Boot up the client machine, set its bios to net boot and you should get the Ubuntu screen and Boot: prompt. Yippee!
Advanced: Hands-Off, Preseeded Network Server Install
The above is for an interactive install, just as if you booted from CD. The following addresses preseeding, which enables a Hands Off Install where all the questions have been answered and fed to the installer. In addition, the following does not pull anything from the Internet.
A handful of preseed options need to be passed via kernel options. The kernel only supports 255 chars, so things are cramped. To accommodate this, I dumped some of the paths and made symlinks. That gave me just enough space for now. Note that the path/name of the kernel gets appended, so even trimming that helped.
{{{root@sahara:/var/lib/tftpboot # ln -s ubuntu-installer/i386/initrd.gz root@sahara:/var/lib/tftpboot # ln -s ubuntu-installer/i386/linux}}}
/var/lib/tftpboot/pxelinux.cfg/default
# pxelinux.cfg/default # display u0buntu-installer/i386/boot-screens/syslinux.txt default menu prompt 1 timeout 150 ontimeout boothd label menu # makes a menu out of this file, allows editing the options on the client kernel menu.c32 label boothd # boot from the first HD # (this is what happens if nothing is pressed for 15 seconds) localboot 0 label ubuntu-feisty-normal # ubuntu installer kernel ubuntu-feisty/linux append vga=normal initrd=ubuntu-feisty/initrd.gz ramdisk_size=14984 root=/dev/rd/0 rw -- label ubuntu-feisty-hands-off # ubuntu installer # The 'kernel' and 'initrd' paths must identify files under tftpboot. # For example, on my system I have /var/lib/tftpboot/ubuntu-feisty/linux and /var/lib/tftpboot/ubuntu-feisty/initrd.gz. kernel ubuntu-feisty/linux append initrd=ubuntu-feisty/initrd.gz ramdisk_size=14984 root=/dev/rd/0 rw preseed/locale=en_US kbd-chooser/method=us netcfg/wireless_wep= netcfg/choose_interface=eth0 netcfg/get_hostname= preseed/url=http://192.168.1.7/preseed-feisty.cfg vga=6 --
netcfg/get_hostname= Is blank so that it will pick up the host-name supplied by the DHCP server.
netcfg/choose_interface=eth0 - You may wish to specify eth1 or wlan0 for laptops if you want it to setup the wifi card, not the wired port.
Note for client-specific PXE configurations: The DHCP server can't pass it, but pretending that the MAC address of your wireless card is 12 : CD : 56 : AB : 78 : EF you can specify a custom pxelinux.cfg/01-12-dc-56-ab-78-ef (lowercase) instead. If you are using static dhcp, you can also use the IP address in hex for a per-machine or per-subnet or per-network configuration. See http://syslinux.zytor.com/pxe.php#config for more information. Basically, say you have three wireless cards where the IP in hex translated to caf12d5e, caf12d6b, caf124ea, you could specify pxelinux.cfg/caf12d and pxelinux.cfg/caf12. The first two would match to the first config file and the third would match to the second config file.
See http://www.debian.org/releases/etch/example-preseed.txt for an example preseed file, and be sure to note the debconf-get-selections example commands. Here are the important changes for using the copy of the install CD on your server instead of the Internet repositories during the install:
d-i mirror/country string enter information manually d-i mirror/http/hostname string sahara # This is whatever HTTP server you have set up d-i mirror/http/directory string /ubuntu # This is the /ubuntu directory from the install CD copied (or linked) under the webroot of your HTTP server d-i mirror/suite string feisty # Name your ubuntu version here d-i mirror/http/proxy string
Here is my current dhcpd.conf
ping-check = 1; log-facility local7; option domain-name "sahara.net"; option time-servers 192.168.1.1; option broadcast-address 192.168.1.255; option domain-name-servers 63.240.76.4, 204.127.198.4; option routers 192.168.1.1; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.254; } # Hoary test boxes group { filename="pxelinux.0" ; # You need a next-server option if TFTP and DHCPd aren't on the same system. next-server sahara; # 192.168.1.2 does not exist on my lan. # I am setting it like this to make sure the box doesn't find # a repo on the net to pull sources from. # It would be good I can figure out how to i # limit these setting to the install phase # (including the 2nd part after the reboot ) option domain-name-servers 192.168.1.2 ; option routers 192.168.1.2 ; host dwl650p { hardware ethernet 00:05:5d:5a:81:f0 ; option host-name "dwl650p" ; } # tsp2 6100 - a=wired, b=wifi host tsp2a { hardware ethernet 00:00:39:fa:ff:f3 ; option host-name "tsp2a" ; } host tsp2b { hardware ethernet 00:02:2d:b0:c8:6c ; option host-name "tsp2b" ; } host tsp1 { hardware ethernet 00:00:39:88:31:a6 ; option host-name "tsp1" ; } host e400 { hardware ethernet 00:60:08:b0:62:0d ; # fixed-address 192.168.1.181 ; option host-name "e400" ; } }
If your box doesn't have the option to boot from lan (like one of mine) you can make a boot disk that will do that part.
http://etherboot.sourceforge.net
I am pleased to say that I was able to read, download, build, run, make the floppy in under 30 min.
"Etherboot does not (yet) offer support for PCMCIA cards." so the older laptops will have to wait.
Advanced: Network install using apt-mirror
apt-mirror is a Perl script for maintaining a mirror of the Debian or Ubuntu installation sets. It is often set up as a cron job to download updates to the mirror automatically. Updates are downloaded incrementally using parallel threads. Contents of the mirror are typically served via a web server to the local network.
apt-mirror can be installed on most Unix machine from the tarball. On Debian or Ubuntu, the apt-mirror package can usually be installed by apt-get with the appropriate addition to sources.list. See the [http://apt-mirror.sourceforge.net/ apt-mirror project home page] for details.
For basic instructions pertaining to Ubuntu, see [http://www.howtoforge.com/local_debian_ubuntu_mirror How To Create A Local Debian/Ubuntu Mirror With apt-mirror]. Some modifications are required to the mirror configuration to work in conjunction with netboot. Netboot requires debian-installer. The following snippet from an example configuration is reported to work:
deb http://mirrors.kernel.org/ubuntu feisty main main/debian-installer restricted restricted/debian-installer deb http://mirrors.kernel.org/ubuntu feisty-updates main restricted deb http://mirrors.kernel.org/ubuntu feisty-security main restricted clean http://mirrors.kernel.org/ubuntu
You will need to modify your apt-mirror configuration file accordingly. Often this file is located at /etc/apt/mirrors.list. Note that not everyone chooses to mirror the security files unless the mirror updates regularly.
If your mirror is configured to support netboot, the following directories should be present:
/ubuntu/dists/feisty/restricted/debian-installer/ /ubuntu/dists/feisty/main/debian-installer/
If these portions of the file tree are not present on your mirror, the Feisty netboot installer displays a generic error screen beginning with the text "The installer failed to download a file from the mirror."
Surprisingly, my netboot installation of the Feisty server release set did not install openssh-server by default. After all this work setting up netboot, it was back to the console again for a couple of minutes.
Pile of PXE related links:
http://freshmeat.net/projects/syslinux/
http://syslinux.zytor.com/memdisk.php
http://support.3com.com/infodeli/tools/nic/mba.htm New Universal NDIS Driver for DOS
http://www.qualystem.com/en/dualboot.html
http://unattended.sourceforge.net/step-by-step.php
http://unattended.sourceforge.net/advanced.php#pxe
http://syslinux.zytor.com/archives/2003-June/002185.html
http://www.intel.com/design/network/drivers/int21143.htm
http://www.tux.org/pub/distributions/tinylinux/tomsrtbt/
http://www.winimage.com/winimage.htm
http://www.weird-solutions.com/docs/pxe_booting.pdf
http://www.weird-solutions.com/bin/util/tftp_root.zip
http://marc.herbert.free.fr/linux/win2linstall.html Install GNU/Linux without any CD, floppy, USB-key, nor any other removable media.
http://osdev.berlios.de/netboot.html - Network-booting Your Operating System - the part I like: "...loads the GRUB, the second-stage loader, off the server." --- PPC Mac related links
http://www.macgeekery.com/hacks/how_to_install_debian_via_network_boot_from_a_mac