| #!/bin/bash |
| |
| |
| ############################################################## |
| # |
| # Copyright (c) International Business Machines Corp., 2003 |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See |
| # the GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| # |
| # FILE : isofs.sh |
| # USAGE : isofs.sh <optional> -n (no clean up) |
| # |
| # DESCRIPTION : A script that will test isofs on Linux system. |
| # It makes ISO9660 file system with different options and also |
| # mounts the ISO9660 file system with different mount options. |
| # |
| # REQUIREMENTS: |
| # |
| # HISTORY : |
| # 06/27/2003 Prakash Narayana (prakashn@us.ibm.com) |
| # 07/28/2005 Michael Reed (mreed10@us.ibm.com) |
| # - Changed the directory where the filesytems were being created |
| # from /etc to copying /etc to /tmp/for_isofs_test/etc and |
| # creating the file systems there |
| # - Added the -n option to not remove the directories created for |
| # debugging purposes |
| # - Added -d option to specify a different directory to copy to /tmp |
| # to make the file system |
| # |
| # CODE COVERAGE: 40.5% - fs/isofs (Total Coverage) |
| # |
| # 23.7% - fs/isofs/dir.c |
| # 46.0% - fs/isofs/inode.c |
| # 22.9% - fs/isofs/joliet.c |
| # 50.0% - fs/isofs/namei.c |
| # 38.5% - fs/isofs/rock.c |
| # 10.7% - fs/isofs/util.c |
| # |
| ############################################################## |
| |
| USAGE="$0" |
| NO_CLEANUP="" |
| |
| usage() |
| { |
| echo "USAGE: $USAGE <optional> -n -h -d [directory name]" |
| exit |
| } |
| |
| #Initialize directory variables |
| MNT_POINT="/tmp/isofs_$$" |
| COPY_DIR="/etc/" |
| TEMP_DIR="/tmp/for_isofs_test" |
| MAKE_FILE_SYS_DIR=$TEMP_DIR$COPY_DIR |
| |
| while getopts :hnd: arg |
| do case $arg in |
| d) |
| COPY_DIR=$OPTARG |
| MAKE_FILE_SYS_DIR="/tmp/for_isofs_test"$COPY_DIR |
| ;; |
| h) |
| echo "" |
| echo "n - The directories created will not be removed" |
| echo "d - Specify a directory to copy into /tmp" |
| echo "h - Help options" |
| echo "" |
| usage |
| echo "" |
| ;; |
| n) |
| NO_CLEANUP="no" |
| ;; |
| esac |
| done |
| |
| |
| ############################################################## |
| # |
| # Make sure that uid=root is running this script. |
| # Validate the command line arguments. |
| # |
| ############################################################## |
| |
| if [ $UID != 0 ] |
| then |
| echo "FAILED: Must have root access to execute this script" |
| exit 1 |
| fi |
| |
| |
| mkdir -p -m 777 $MNT_POINT |
| mkdir -p $MAKE_FILE_SYS_DIR |
| |
| |
| if [ -e "$COPY_DIR" ]; then |
| cp -rf $COPY_DIR* $MAKE_FILE_SYS_DIR |
| else |
| echo "$COPY_DIR not found" |
| echo "use the -d option to copy a different directory into" |
| echo "/tmp to makethe ISO9660 file system with different" |
| echo "options" |
| usage |
| fi |
| |
| |
| |
| # Make ISO9660 file system with different options. |
| # Mount the ISO9660 file system with different mount options. |
| |
| for mkisofs_opt in \ |
| " " \ |
| "-J" \ |
| "-hfs -D" \ |
| " -R " \ |
| "-R -J" \ |
| "-f -l -D -J -L -R" \ |
| "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" |
| do |
| echo "Running mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR Command" |
| mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR |
| if [ $? != 0 ] |
| then |
| rm -rf isofs.iso $MNT_POINT |
| echo "FAILED: mkisofs -o isofs.iso $mkisofs_opt $MAKE_FILE_SYS_DIR failed" |
| exit 1 |
| fi |
| for mount_opt in \ |
| "loop" \ |
| "loop,norock" \ |
| "loop,nojoliet" \ |
| "loop,block=512,unhide" \ |
| "loop,block=1024,cruft" \ |
| "loop,block=2048,nocompress" \ |
| "loop,check=strict,map=off,gid=bin,uid=bin" \ |
| "loop,check=strict,map=acorn,gid=bin,uid=bin" \ |
| "loop,check=relaxed,map=normal" \ |
| "loop,block=512,unhide,session=2" |
| # "loop,sbsector=32" |
| do |
| echo "Running mount -o $mount_opt isofs.iso $MNT_POINT Command" |
| mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT |
| if [ $? != 0 ] |
| then |
| rm -rf isofs.iso $MNT_POINT |
| echo "FAILED: mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT failed" |
| exit 1 |
| fi |
| echo "Running ls -lR $MNT_POINT Command" |
| ls -lR $MNT_POINT |
| exportfs -i -o no_root_squash,rw *:$MNT_POINT |
| exportfs -u :$MNT_POINT |
| umount $MNT_POINT |
| done |
| rm -rf isofs.iso |
| done |
| |
| ####################################################### |
| # |
| # Just before exit, perform the cleanup. |
| # |
| ####################################################### |
| |
| if [ "$NO_CLEANUP" == "no" ]; then |
| echo "$MAKE_FILE_SYS_DIR and $MNT_POINT were not removed" |
| echo "These directories will have to be removed manually" |
| else |
| rm -rf $TEMP_DIR |
| rm -rf $MNT_POINT |
| fi |
| |
| |
| echo "PASSED: $0 passed!" |
| exit 0 |