Download Syslinux 4 03 Meet
Home; Adam smith; capital asset; depreciation; durable; economics; s; non-renewable resource; physical capital; production; service; stock.
Preface While the covers the network install part over a Preboot eXecution Environment (PXE), it’s assuming that this is already in place. There’s an in the Citrix knowledge center on this topic but covers a Windows environment only. This is basically leveraging Windows Server DHCP and the Citrix Provisioning Services. When I started to prepare the I needed to create such an environment. Due to the fact I anyway carry a Linux VM which runs all possible infrastructure services (and needs almost no resources ), I just added these services/configurations to that VM. G2 Drivers Test Checklist.
And finally, why not sharing the experience. Required Services The basic services and files required for a PXE based network install of XenClient • DHCP Environment • TFTP Server • FTP Server (or HTTP) • pxelinux.0 (boot file) • XenClient install media / ISO file I’m using Debian Lenny as my preferred OS, but the setup is quit similar for many distros and quit a few popular such as Ubuntu are based on Debian. The installation is straight forward. Install DHCP Server.
Synsrv:~# apt-get install dhcp3-server Reading package lists. Done Building dependency tree Reading state information. Done The following packages were automatically installed and are no longer required: libmd5-perl Use 'apt-get autoremove' to remove them. The following extra packages will be installed: dhcp3-client dhcp3-common Suggested packages: resolvconf avahi-autoipd dhcp3-server-ldap The following NEW packages will be installed: dhcp3-server The following packages will be upgraded: dhcp3-client dhcp3-common 2 upgraded, 1 newly installed, 0 to remove and 163 not upgraded. Need to get 848kB of archives. After this operation, 786kB of additional disk space will be used. Do you want to continue [Y/n]?
Y Get:1 lenny/updates/main dhcp3-client 3.1.1-6+lenny5 [225kB] Get:2 lenny/updates/main dhcp3-common 3.1.1-6+lenny5 [291kB] Get:3 lenny/updates/main dhcp3-server 3.1.1-6+lenny5 [332kB] Fetched 848kB in 0s (1270kB/s) Preconfiguring packages. (Reading database. 113805 files and directories currently installed.) Preparing to replace dhcp3-client 3.1.1-6+lenny4 (using./dhcp3-client_3.1.1-6 +lenny5_i386.deb).
Unpacking replacement dhcp3-client. Preparing to replace dhcp3-common 3.1.1-6+lenny4 (using./dhcp3-common_3.1.1-6 +lenny5_i386.deb). Unpacking replacement dhcp3-common.
Selecting previously deselected package dhcp3-server. Unpacking dhcp3-server (from./dhcp3-server_3.1.1-6+lenny5_i386.deb).
Processing triggers for man-db. Setting up dhcp3-common (3.1.1-6+lenny5).
Setting up dhcp3-client (3.1.1-6+lenny5). Setting up dhcp3-server (3.1.1-6+lenny5). Starting DHCP server: dhcpd3. Install TFTP Server.
Synsrv:~# apt-get install tftpd-hpa Reading package lists. Done Building dependency tree Reading state information. Done The following packages were automatically installed and are no longer required: libmd5-perl Use 'apt-get autoremove' to remove them. The following NEW packages will be installed: tftpd-hpa 0 upgraded, 1 newly installed, 0 to remove and 163 not upgraded. Need to get 34.6kB of archives.
After this operation, 98.3kB of additional disk space will be used. Get:1 lenny/main tftpd-hpa 0.48-2.3 [34.6kB] Fetched 34.6kB in 0s (176kB/s) Preconfiguring packages. Selecting previously deselected package tftpd-hpa. (Reading database.
113807 files and directories currently installed.) Unpacking tftpd-hpa (from./tftpd-hpa_0.48-2.3_i386.deb). Processing triggers for man-db. Setting up tftpd-hpa (0.48-2.3). Starting HPA's tftpd: in.tftpd. Install FTP Server. Synsrv:~# apt-get install proftpd Reading package lists.
Done Building dependency tree Reading state information. Done The following packages were automatically installed and are no longer required: libmd5-perl Use 'apt-get autoremove' to remove them. The following NEW packages will be installed: proftpd 0 upgraded, 1 newly installed, 0 to remove and 162 not upgraded. Need to get 195kB of archives.
After this operation, 233kB of additional disk space will be used. Get:1 lenny/updates/main proftpd 1.3.1-17lenny6 [195kB] Fetched 195kB in 0s (570kB/s) Selecting previously deselected package proftpd.
(Reading database. 113813 files and directories currently installed.) Unpacking proftpd (from./proftpd_1.3.1-17lenny6_all.deb). Setting up proftpd (1.3.1-17lenny6). Install syslinux (for pxelinux.0). Synsrv:~# apt-get install syslinux Reading package lists.
Done Building dependency tree Reading state information. Done The following packages were automatically installed and are no longer required: libmd5-perl Use 'apt-get autoremove' to remove them. The following NEW packages will be installed: syslinux 0 upgraded, 1 newly installed, 0 to remove and 162 not upgraded. Need to get 0B/62.5kB of archives.
After this operation, 139kB of additional disk space will be used. Selecting previously deselected package syslinux. (Reading database. 113808 files and directories currently installed.) Unpacking syslinux (from./syslinux_2%3a3.71+dfsg-5_i386.deb).
Processing triggers for man-db. Setting up syslinux (2:3.71+dfsg-5). Make the XenClient installation media available: This is not really an install, but we need grant access to the packages from the installer media. To keep that simple just copy the installer ISO to e.g. /root and mount the iso file. Synsrv:~# mount -o loop /root/XenClient_1_0_installer.iso /mnt synsrv:~# ls -la /mnt total 28 drwxr-xr-x 5 walterh walterh 2048 2010-09-28 12:49. Drwxr-xr-x 21 root root 4096 2010-04-02 11:08.
Drwxr-xr-x 2 walterh walterh 2048 2010-09-28 12:49 isolinux drwxr-xr-x 2 walterh walterh 2048 2010-09-28 12:49 packages.main drwxr-xr-x 2 walterh walterh 2048 2010-09-28 12:49 usb_inst -rwxr-xr-x 1 walterh walterh -09-28 12:49 usb_inst.sh We’ll need some files from the isolinux for booting and the packages.main directory for the installation. Configuring the services While I enjoy the beauty and speed of a command line, on most systems I just install, so I can configure most of the system and services by a nice web frontend. DHCP Server configuration: If you’re running a DHCP server already on Windows you need to add dhcp option 66/67 to the dhcp configuration for the scope. This specifies the bootserver (tftp server) and the bootfile (pxelinux.0). On a Linux dhcp3-server you just add the two corresponding lines to the /etc/dhcp3/dhcpd.conf file.
Synsrv:~# mkdir -p /var/lib/tftpboot synsrv:~# /etc/init.d/tftpd-hpa start Starting HPA's tftpd: in.tftpd. FTP Server configuration: Proftp is the primary choice for Linux FTP servers. By default proftp wouldn’t serve anonymous access, what we really want for an easy access to the XenClient install files. To enable anonymous access you have to add or uncomment the respective lines in the /etc/proftpd/proftpd.conf. The home directory for the anonymous ftp user will be /home/ftp.
# After anonymous login, daemon runs as user/group ftp. User ftp Group ftp # The client login 'anonymous' is aliased to the 'real' user 'ftp'. UserAlias anonymous ftp # Deny write operations to all directories, except for 'incoming' where # 'STOR' is allowed (but 'READ' operations are prohibited) DenyAll DenyAll AllowAll After applying the changes, restart the proftp daemon. Synsrv:~# /etc/init.d/proftpd restart Stopping ftp server: proftpd.
Starting ftp server: proftpd. Synsrv:~# Configuring the XenClient network installation The first thing your computer will do when PXE booting is requesting a IP by sending a DHCP Discover as broadcast on the subnet. When everything is configured properly the DHCP Offer from you DHCP server will include information about your bootserver and bootfilename.
Consequently we need to make sure all required files for the kernel boot are found in the TFTP root directory, which is /var/lib/tftpboot. You need to copy the content of the directory isolinux from the XenClient install media to the TFTP root. We need at least the following files: • bootmsg.txt • mboot.c32 • vmlinuz • xen.gz • rootfs.gz The mboot.c32 is a comboot module for Syslinux that loads images using the Multiboot protocol. The bootmsg.txt is typically version/copyright information e.g. From the vendor and the remaining ones are kernel xen modules and root fielsystem which is being booted. Additionally we need to copy the pxelinux.0 file to the TFTP root from the syslinux package we installed previously. This is being found in /usr/lib/syslinux.
Synsrv:~# cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot synsrv:~# When a computer is booted form the network, got the bootserver / bootfile information, the pxelinux.0 file will be downloaded using tftp. PXELINUX is a SYSLINUX derivative, for booting Linux from a network server using a network ROM conforming to the Intel PXE (Pre-Execution Environment) specification. In the next step of the network boot a PXE configuration file will be searched for. It will look for a file in the tftproot/pxelinux.cfg directory. First it will look for file which represents the own Ethernet datalink address, then it will translate the own IP adrees into HEX and search for these strings and when not found removing one HEX digit and search again. This would result in a search for these files: pxelinux.cfg/01-00-14-22-a1-53-85 pxelinux.cfg/C0A80146 pxelinux.cfg/C0A8014 pxelinux.cfg/C0A801 pxelinux.cfg/C0A80 pxelinux.cfg/C0A8 pxelinux.cfg/C0A pxelinux.cfg/C0 pxelinux.cfg/C pxelinux.cfg/default This would mean, that you at least need to create the file /var/lib/tftpboot/pxelinux.cfg/default.
For my labs I actually created multiple files to balance the load on the two FTP servers I used. This is a sample file I used. Default xc-synergy label xc-synergy DISPLAY bootmsg.txt kernel mboot.c32 append xen.gz console=com1,vga max_dom0_vcpus=1 com1=100,8n1,magic --- vmlinuz quiet console=xencons root=/dev/ram rw start_install answerfile=tftp://192.168.1.58/answerfile.who --- rootfs.gz So, you see that after displaying the bootmsg.txt, it will load mboot.c32 as kernel and uses the append for loading xen and vmlinux as well as specifies the rootfilesystem. This has all to be on a single line. Note: On the very end of the line I’ve specified the answerfile which will be used for the XenClient installation. This file is being downloaded using TFTP from our TFTP root directory.
This is the content of my /var/lob/tftpboot/answerfile.who. Frame 7: 371 bytes on wire (2968 bits), 371 bytes captured (2968 bits) Ethernet II, Src: 06:51:d4:d5:d7:64 (06:51:d4:d5:d7:64), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol, Src: 192.168.1.50 (192.168.1.50), Dst: 255.255.255.255 (255.255.255.255) User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68) Bootstrap Protocol Message type: Boot Reply (2) Hardware type: Ethernet Hardware address length: 6 Hops: 0 Transaction ID: 0x83b461f0 Seconds elapsed: 0 Bootp flags: 0x0000 (Unicast) 0..
Owner@blackbox:~$ ls -l /bin/sys* -rwxr-xr-x 1 root root 51800 Dec 9 19:43 /bin/syslinux owner@blackbox:~$ syslinux bash: /bin/syslinux: No such file or directory owner@blackbox:~$ head -c 16 /bin/syslinux ELFowner@blackbox:~$ stat -c '%A%a' /bin/syslinux -rwxr-xr-x 755 owner@blackbox:~$ stat -c '%A%a' /bin/sed -rwxr-xr-x 755 As you can see, I've been trying to mess around with syslinux. I downloaded the zip and copied out the binary to /bin/ as root. (Yes, I know that's not how you're supposed to install things, I'm just messing around trying to learn.) The file is there and seems to have the same permissions as any other file in there, but bash tells me 'No such file'. I get similar behavior from sh as from bash, and same running in su as with normal user, and I got similar behavior trying './syslinux' when I had the file on the Desktop and was cd'ed to it. Before I put the file in /bin/, running 'syslinux' (no./) would give me the 'not installed' message as expected. I can fully understand some message telling me I didn't install it right or something, but how is it 'No such file' when there clearly is such a file?
Owner@blackbox:~$ file /bin/syslinux /bin/syslinux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0xf3a2d4a4f0, stripped owner@blackbox:~$ type -a syslinux syslinux is /bin/syslinux owner@blackbox:~$ uname -a Linux blackbox 3.2.0-2-amd64 #1 SMP Sun Mar 4 22:48:17 UTC 2012 x86_64 GNU/Linux I hadn't thought about this being a 32-bit binary on a 64-bit system. Should that make a difference? On Debian or Ubuntu, I think you have to have the libc6-i386 package to run 32-bit executables.
Even for statically-linked binaries like that, I think there needs to be a fair bit of prep work in the overall system to launch a 32-bit binary on a 64-bit machine, and that package has everything needed to make it work. (Dynamic executables might also need 32-bit versions of whatever libraries they use, in addition to the basic infrastructure to run 32-bit code.) This is probably true of most distros, but I don't know what the required package is called on anything but Debian.