Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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