System administrators might find it useful to be able to install Xilinx ISE software silently, without GUI and without having to interact with the install process. This post describes how to use the batch mode installer that Xilinx provides, and how to apply a certain trick needed to make the install truly silent.

I needed to set-up an install script to make an unattended install of the Xilinx LabTools for our production machine at the South Pole for the TrackEngine project. The machines there need to have a kick-start, that is, being able to reproduce a fully working machine from a clean hard drive, installing operating system, drivers and software non-interactively with scripts. This was the machine hosting our PCIe board with the FPGA, and it needed the the ISE LabTools pack to be able to run Impact and the ChipScope server.

Files and directories

The downloaded compressed file for the Xilinx software will have a name similar to Xilinx_ISE_DS_Lin_12.3_M.70d.1.0.tar and unpacking it will put the install files in a directory with the same name. This is the directory that contains the GUI installer, xsetup.

The batch installer batchxsetup is located in bin/<platform>, in my example, this will be bin/lin64/.

Generate batch install example file

Generate a sample batch install file by running

$ batchxsetup -samplebatchscript batchScript

where batchScript is the name of the example batch file to generate. In the next step we will modify this file and then pass to the installer. The batchScript file specifies the options to use for the install.

Modify the batch install example file

Edit batchScript and change the following rows to set install location, whether to acquire a license key and whether to install cable drivers. The License Key option must be disabled in order to make the install silent, enabling it will launch the License Manager GUI 1.

# Some example settings:

destination_dir=/opt/Xilinx/12.3
# [...]
application=Acquire or Manage a License Key::0
application=Install Cable Drivers::1

Now, make sure one of the blocks further down in batchScript is uncommented, and the other commented, in order to choose what software to install. E.g., to install LabTools, the bottom of the file will read

################################################################
# Software Development Kit: Standalone Installation, uncomment this block and
# comment all other blocks to install Software Development Kit: Standalone Installation
################################################################

# package=Software Development Kit: Standalone Installation::0
# environment_variable=PATH::1
# environment_variable=LD_LIBRARY_PATH::1
# environment_variable=PATH::1


################################################################
# Lab Tools: Standalone Installation, uncomment this block and
# comment all other blocks to install Lab Tools: Standalone Installation
################################################################

package=Lab Tools: Standalone Installation::1
environment_variable=PATH::1
environment_variable=LD_LIBRARY_PATH::1
environment_variable=XILINX::1
environment_variable=PATH::1
environment_variable=LD_LIBRARY_PATH::1

Running the install

Now, initiating the install in batch mode is done by

$ sudo ./batchxsetup -batch batchScript # won't be silent

but unfortunately, batchxsetup will still show a license agreement that must be scrolled-through several screens by pressing Enter, and thereafter the user must accept with a "Y". There is an option to batchxsetup that is said to make it silent, but it won't help.

The trick is to send a long sequence of newlines and then a Y to the installer from a file. As long as the number of new-lines is larger than the number of screens to scroll through, it will work, so add some margin.

Hence, simply create a text file, e.g. named chars.txt, containing a large number of new-lines (I used some 2500) and then a Y character on the last line. I used some 2500 new-lines before the Y.

Now execute the installer like this:

$ sudo ./batchxsetup -batch batchScript < chars.txt # *will* be silent

and you will get a truly silent install.

Notes:

  1. If installing LabTools, no license is needed and no further action is required. For other packages, disabling managing a License Key requires some later manual or scripted actions so the software can find an appropriate license.