#! /bin/bash SYS=`uname -r` if [ -f /etc/debian_version ]; then OS=debian elif [ -f /etc/redhat-release ]; then OS=redhat systemctl stop firewalld.service &> /dev/null else OS=unknown fi MACHINE_TYPE=`uname -m` if [ ${MACHINE_TYPE} != 'x86_64' ]; then echo "ERROR, only 64bit operating systems are supported, please reinstall x86 64 bit OS" exit 1 fi if [ -d /mnt/huge ]; then echo >> /dev/null else echo "Creating huge node" mkdir -p /mnt/huge fi if ! mount | grep hugetlbfs >> /dev/null ; then mount -t hugetlbfs nodev /mnt/huge fi for file in /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages ; do if [ -e $file ] ; then if [ "$(cat $file)" != "2048" ] ; then echo 2048 > $file fi fi done PATH=$PATH:/sbin:/usr/sbin if ! lsmod | grep -q igb_uio ; then echo "Loading kernel drivers for the first time" modprobe uio if [ $? -ne 0 ]; then echo "Failed inserting uio module, please check if it is installed" exit 1 fi km=ko/$SYS/igb_uio.ko if [ ! -e $km ]; then echo "ERROR: We don't have precompiled igb_uio.ko module for your kernel version" echo Will try compiling automatically. { cd ko/src && make && make install && cd - } &> /dev/null || { echo Automatic compilation failed. echo "You can try compiling yourself, using the following commands:" echo "\$cd ko/src " echo "\$make " echo "\$make install " echo "\$cd - " echo "Then try to run TRex again" exit 1 } echo Success. fi if [ -e $km ]; then insmod $km if [ $? -ne 0 ]; then echo "Failed inserting igb_uio module" exit 1 fi fi fi # try to bind the ports from the configuration file (new DPDK) PARENT_ARGS="$0 $@" source find_python.sh $PYTHON ./dpdk_setup_ports.py --parent "$PARENT_ARGS"