Reference Operating System
NetFPGA-10G development should be possible on any Linux distribution which supports the Xilinx ISE Design Suite. We currently build under 13.4. Xilinx provides a list of officially-supported Linux distributions for ISE Design Suite 13.4 here.
We have adopted** Fedora 14 (x86_64)** as our reference operating system for software development with NetFPGA-10G. Install images for Fedora are available from mirrors.fedoraproject.org. We adopted this Linux distribution as our reference operating system because it has a modern Linux kernel with features required by the NetFPGA-10G Network Interface driver.
We are providing this guide to setting up a Fedora 14 machine for NetFPGA-10G development to help users get up and running as easily as possible. Note however that we cannot undertake to support users who adopt this (or any other) Linux distribution for their development work.
Installing Fedora 14
- Choose a mirror server near you from those listed on mirrors.fedoraproject.org
- Navigate to fedora/linux/releases/14/Fedora/x86_64/iso/
- Download the 3.3GB DVD ISO installation image (Fedora-14-x86_64-DVD.iso)
- Burn the image to blank DVD and boot your PC from it
- Be sure to enable "Software Development" in the "Tasks" list during the installation as shown below - this ensures that essential development tools are installed
- Complete the installation and add any device drivers that are required to make your system usable.
- Disable SELinux as it interferes with Xilinx tools. Edit /etc/sysconfig/selinux
# vim /etc/sysconfig/selinux
and set the value of SELINUX to disabled.
- Configure gdm to allow root login. To do this, comment the following line (prepending a #):
auth required pam_succeed_if.so user != root quiet
in the following files.
# vim /etc/pam.d/gdm # vim /etc/pam.d/gdm-password # vim /etc/pam.d/gdm-fingerprint
- After this, logout and login as root. A warning message pops up indicating the vulnerabilities of providing a root login in the gdm. Accept this message.
- Delete the user account.
# userdel <username>
- Configure services disabling those not required and enabling those required.
chkconfig abrtd off chkconfig avahi-daemon off chkconfig bluetooth off chkconfig cpuspeed off chkconfig nfslock off chkconfig pcscd off chkconfig rpcgssd off chkconfig rpcidmapd off chkconfig sendmail off chkconfig ip6tables off chkconfig NetworkManager off - WARNING: This service can disable the nic of your workstation! If this happens, change the option to "on" and reboot system. chkconfig httpd on chkconfig network on WARNING: This service can disable the nic of your workstation! If this happens, change the option to "off" and reboot system.
- Tweak all network interface configuration files /etc/sysconfig/network-scripts/ifcfg-*:
set NM_CONTROLLED to no set ONBOOT to yes
- Disable IPv6. Edit /etc/sysctl.conf adding the line:
# Disable ipv6 altogether net.ipv6.conf.all.disable_ipv6=1
Additional Required Installation Packages
Once you have a working Fedora 14 system, a number of additional software packages must be installed. These are required for hosting the NetFPGA-10G card and building the reference NIC driver. You should use Fedora's built-in package manager (yum) to install these packages where possible. If yum can't find a package for you, use the links provided below to obtain RedHat installation package files (RPMs) which you can install manually using rpm -i . Note that if you use yum behind a HTTP proxy server, you may need to modify yum's configuration file (/etc/yum.conf) to add a line like this:
proxy=http://(proxy address):(port number)/
(Replace with the IP address or name of the HTTP proxy server. Replace with the port number for HTTP requests.)
First step is to do
# yum update
Install the following mandatory packages.
|Package||Version||How to Install||Used for|
|gcc gcc-c++||updated version||yum install gcc gcc-c++||installing gcc and gcc+ compiler|
|lrzsz||lrzsz.x86_64||0.12.20-27.fc12||Download an RPM from pkgs.org|
|minicom||minicom.x86_64 2.5-3.fc14||yum install minicom||RS-232 link to NetFPGA-10G card|
|libusb-devel||libusb-devel.x86_64||yum install libusb-devel||Third-party driver for Xilinx JTAG programming cable|
|glibc.i686||glibc.i686 2.12.90-17||yum install glibc.i686||32-bit statically-linked Microblaze compiler and binutils|
|scapy||scapy.noarch 126.96.36.199-4.fc14||yum install scapy||NetFPGA-10G simulations|
|xterm||xterm||yum install xterm||used for isim simulation|
yum install libXp emacs java-devel libnet-devel iperf screen vnc-server mplayer openmotif
Installing Xilinx ISE Design Suite on Fedora 14
The Xilinx ISE Design Suite is not officially supported on the Fedora 14 (x86_64) distribution. However, a number of installation steps can be followed to allow the tools to install and run correctly. There are two main issues which need to be overcome:
- When enabled, the security features in SELinux prevent the Xilinx ISE Design Suite installer from running; the SELinux enforcement mode must be set to "Permissive" or SELinux must be disabled entirely
- The newer Linux kernel in Fedora 14 prevents the proprietary driver for the USB JTAG programming cable from installing correctly; a third-party replacement driver must be used
Follow these steps to install the Xilinx ISE Design Suite:
- In Fedora's System menu, select Administration -> SELinux Management.
- Set the SELinux Current Enforcing Mode to Permissive to turn off the security features in SELinux, which conflict with the ISE Design Suite installation. Note that the SELinux default may revert to Enforcing on the next boot. You may wish to disable SELinux entirely by selecting Disabled from the System Default Enforcing Mode menu.
If local policy demands that SElinux should be enforcing, or you simply prefer to run with SElinux enabled, check /var/log/messages for SElinux security messages. Examine each warning message as directed, and then set the security policy with the appropriate permissions for the Xilinx tools. You can also do it from CLI by modifying /etc/sysconfic/selinux
- Download the ISE Design Suite Linux installation tarball from the Xilinx website's Downloads section.
- Follow the installation instructions in the Xilinx ISE Design Suite Installation and Licensing Guide. Select "System Edition" to install the complete set of tools.
- Disable "Install Cable Drivers". So untick the option shown in the image.
- Install the tools to the default location in /opt/Xilinx/.
- Please untick the box indicating " import tool preference from previous version ". This is necessary to run the Xilinx tool chain in batch mode.
- If you intend to use a Xilinx USB JTAG programming cable, download the libusb-based third-party driver written by Michael Gernoth, which is available from rmdir.de/~michael/xilinx/
- Attach your Xilinx USB JTAG programming cable to the computer and follow all the installation instructions in the README included with the third-party driver. Please refer below
tar -xvf usb-driver-HEAD-xxxxxxx.tar.gz cd usb-driver-HEAD-xxxxxxx source /opt/Xilinx/13.4/ISE_DS/settings64.sh make ./setup_pcusb cp libusb-driver.so /usr/local/lib/libusb-jtag-driver.so export LD_PRELOAD=/usr/local/lib/libusb-jtag-driver.so
- To run the Xilinx tools, start a new shell and run the Xilinx ISE Design Suite settings script:
This defines a number of environment variables needed to run the ISE Design Suite.
- Launch Xilinx ISE 13.2 using:
- Launch Impact, the Xilinx FPGA and CPLD programming tool, using:
Building the NetFPGA-10G Reference NIC driver
If you plan to use the NetFPGA-10G card in hosted mode as an ethernet NIC, you will need to compile and install the included driver. Go to the Driver Getting Started page for instructions.
Other Linux Distributions
We've tested NetFPGA-10G on Fedora 14. We cannot provide support for users on this or any other Linux distribution. NetFPGA-10G development should be possible on any Linux distribution which supports the Xilinx ISE Design Suite, although you may not be able to build and use the NetFPGA-10G NIC driver with older Linux kernels.
For users on Red Hat Enterprise Linux 4.x/5.x or CentOS 4.x/5.x, you will need to install at least the following packages before attempting NetFPGA-10G development. In the case of each package, search with yum before looking for source code or pre-built RPMs in other places.
- python, version 2.5 or newer. The system python installation in RedHat 4/5 and CentOS 4/5 is old, but should not be replaced to avoid interfering with the operation of yum and other system components. We recommend obtaining the source for python 2.7 from python.org/download/. Compile python and install it to a local directory, ensuring that the main binary is named python27 or equivalent to prevent it from interfering with the machine's older pre-installed version. Be sure that the shell script located in tools/scripts/link_py_interpreter.sh within the NetFPGA-10G repository correctly locates your python 2.7 binary.
- scapy, a program for manipulating packets, available from www.secdev.org/projects/scapy/
- fxload, for downloading to EZ-USB-powered devices, available as an RPM from pkgs.org, among other places
- minicom, for serial communication with a NetFPGA-10G board over the RS232 interface
- glibc.i686 (on 64-bit systems)
This is not an exhaustive list.