cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

target-export-device (2298B)


      1#!/bin/sh
      2#
      3# This script illustrates the sequence of operations in configfs to
      4# create a very simple LIO iSCSI target with a file or block device
      5# backstore.
      6#
      7# (C) Copyright 2014 Christophe Vu-Brugier <cvubrugier@fastmail.fm>
      8#
      9
     10print_usage() {
     11    cat <<EOF
     12Usage: $(basename $0) [-p PORTAL] DEVICE|FILE
     13Export a block device or a file as an iSCSI target with a single LUN
     14EOF
     15}
     16
     17die() {
     18    echo $1
     19    exit 1
     20}
     21
     22while getopts "hp:" arg; do
     23    case $arg in
     24        h) print_usage; exit 0;;
     25        p) PORTAL=${OPTARG};;
     26    esac
     27done
     28shift $(($OPTIND - 1))
     29
     30DEVICE=$1
     31[ -n "$DEVICE" ] || die "Missing device or file argument"
     32[ -b $DEVICE -o -f $DEVICE ] || die "Invalid device or file: ${DEVICE}"
     33IQN="iqn.2003-01.org.linux-iscsi.$(hostname):$(basename $DEVICE)"
     34[ -n "$PORTAL" ] || PORTAL="0.0.0.0:3260"
     35
     36CONFIGFS=/sys/kernel/config
     37CORE_DIR=$CONFIGFS/target/core
     38ISCSI_DIR=$CONFIGFS/target/iscsi
     39
     40# Load the target modules and mount the config file system
     41lsmod | grep -q configfs || modprobe configfs
     42lsmod | grep -q target_core_mod || modprobe target_core_mod
     43mount | grep -q ^configfs || mount -t configfs none $CONFIGFS
     44mkdir -p $ISCSI_DIR
     45
     46# Create a backstore
     47if [ -b $DEVICE ]; then
     48    BACKSTORE_DIR=$CORE_DIR/iblock_0/data
     49    mkdir -p $BACKSTORE_DIR
     50    echo "udev_path=${DEVICE}" > $BACKSTORE_DIR/control
     51else
     52    BACKSTORE_DIR=$CORE_DIR/fileio_0/data
     53    mkdir -p $BACKSTORE_DIR
     54    DEVICE_SIZE=$(du -b $DEVICE | cut -f1)
     55    echo "fd_dev_name=${DEVICE}" > $BACKSTORE_DIR/control
     56    echo "fd_dev_size=${DEVICE_SIZE}" > $BACKSTORE_DIR/control
     57    echo 1 > $BACKSTORE_DIR/attrib/emulate_write_cache
     58fi
     59echo 1 > $BACKSTORE_DIR/enable
     60
     61# Create an iSCSI target and a target portal group (TPG)
     62mkdir $ISCSI_DIR/$IQN
     63mkdir $ISCSI_DIR/$IQN/tpgt_1/
     64
     65# Create a LUN
     66mkdir $ISCSI_DIR/$IQN/tpgt_1/lun/lun_0
     67ln -s $BACKSTORE_DIR $ISCSI_DIR/$IQN/tpgt_1/lun/lun_0/data
     68echo 1 > $ISCSI_DIR/$IQN/tpgt_1/enable
     69
     70# Create a network portal
     71mkdir $ISCSI_DIR/$IQN/tpgt_1/np/$PORTAL
     72
     73# Disable authentication
     74echo 0 > $ISCSI_DIR/$IQN/tpgt_1/attrib/authentication
     75echo 1 > $ISCSI_DIR/$IQN/tpgt_1/attrib/generate_node_acls
     76
     77# Allow write access for non authenticated initiators
     78echo 0 > $ISCSI_DIR/$IQN/tpgt_1/attrib/demo_mode_write_protect
     79
     80echo "Target ${IQN}, portal ${PORTAL} has been created"