Sponsored Content
Full Discussion: Access a File as a Device?
Top Forums UNIX for Advanced & Expert Users Access a File as a Device? Post 302621091 by mij on Monday 9th of April 2012 08:16:54 PM
Old 04-09-2012
I had the same question, and was surprised not to have found any explanation on the web, so thanks to Corona688 for revealing it has a very simple answer.

As a result I have put together a quick script to automate the process. It is a bit rough and the images I have only contain one partition so I have not been able to test it with anything beyond the first partition. If there is a problem it will be with the larger numbers exceeding the shell's maximum integer size (which is also why I could not do the calculations in awk, as it only seems to support signed longints).

It works fine for me though with single partition USB stick images up to 16GB. I have called it mount-img and the usage is:

Code:
mount-img <image-file> <partition-number> <mount-point>

Code:
#!/bin/sh

eval MI_IMAGE="$1"

if [ ! -e "$MI_IMAGE" ]; then
   echo "${0##*/}: No such file or directory"
   exit
elif [ -d "$MI_IMAGE" ]; then
   echo "$1: Is a directory"
   exit
elif [ ! "$2" ]; then
   echo "${0##*/}: partition number not specified"
   exit
elif [ ! "$2" -ge "1" 2>/dev/null ]; then
   echo "${0##*/}: invalid partition number"
   exit
fi

MI_PART=$(( $2 + 1 ))
MI_INFO=`/sbin/fdisk -ul "$MI_IMAGE" 2>/dev/null | grep -E "Sector size \(logical/physical\):|^$MI_IMAGE"`
MI_SECTOR="${MI_INFO#*: }"
MI_SECTOR="${MI_SECTOR%% bytes*}"

if [ "$MI_PART" -gt "`echo "$MI_INFO" | wc -l`" ]; then
   echo "${0##*/}: partition number too high"
   exit
elif [ ! "$3" ]; then
   echo "${0##*/}: mount point not specified"
   exit
elif [ ! -e "$3" ]; then
   echo "${0##*/}: mount point $3 does not exist"
   exit
elif [ ! -d "$3" ]; then
   echo "${0##*/}: mount point $3 is not a directory"
   exit
fi

MI_OPTS=`echo "$MI_INFO" | awk -v l="$MI_PART" 'NR==l {printf "%s/%s",$(NF-4),$(NF-3)}'`
MI_OFFSET=$(( ${MI_OPTS%/*} * $MI_SECTOR  ))
MI_LIMIT=$(( (${MI_OPTS#*/} - ${MI_OPTS%/*}) * $MI_SECTOR  ))
mount -o loop,offset=$MI_OFFSET,sizelimit=$MI_LIMIT "$1" "$3"

This User Gave Thanks to mij For This Post:
 

10 More Discussions You Might Find Interesting

1. Linux

Non exclusive sound device access!!

Hi, I was wondering if any of you guys know of way to make applications that use sound device on linux to access it in a "non-exclusive manner", the aim is to be able to use more than one application that requires the sound device. Thanks (0 Replies)
Discussion started by: andryk
0 Replies

2. Linux

attempt to access beyond end of device

Hi, we have running 8 box sles 9 cluster and on an nfs filesystem we have the problem which is grepped from /var/log/messages. Jun 8 13:40:46 qnclpx02 kernel: attempt to access beyond end of device Jun 8 13:40:46 qnclpx02 kernel: sdat: rw=0, want=8894615912, limit=314572800 Is there... (1 Reply)
Discussion started by: ortsvorsteher
1 Replies

3. UNIX for Dummies Questions & Answers

controll access to a device

Hello everyone, I write a program (Linux & Solaris) that will run as non-root user, but the program must have rw access to a device /dev/ipmi (on linux) or /dev/bmc (on solaris). What is the standard way of granting such access? Linux: chmod on /dev/ipmi ? suid root my program? Solaris:... (1 Reply)
Discussion started by: Pavel.Bures
1 Replies

4. Homework & Coursework Questions

The pseudo-device provides a “backdoor” for gaining root access for a particular user.

Problem statement. In this part of the assignment, delegates will create a pseudo-device and write a device driver for it. The pseudo-device provides a “backdoor” for gaining root access for a particular user. Instead of compiling the device driver into the kernel, delegate will create a module.... (1 Reply)
Discussion started by: nyjilgeorge1
1 Replies

5. OS X (Apple)

Not mounted, no-driver USB device in terminal (how to access?)

hi, i am on a quest to access and even mount if possible a drive on os x. there is no driver for the device, but it lists fine in the system profiler. can i access its location from the terminal? how? here is what i get on the system profiler: Speed: Up to 480 Mb/sec Manufacturer: SAMSUNG ... (3 Replies)
Discussion started by: sontarieh
3 Replies

6. UNIX for Advanced & Expert Users

How the user process can access the character device loaded by my module

I am trying to load into the kernel a system-call dynamically (without restarting the kernel and compailing it) in an attempt to (once in kernel mode) write to user process's memory. (I know there is a way to do this with the ptrace interface but it is not an option.) I know the only way to... (1 Reply)
Discussion started by: hopelessProgram
1 Replies

7. Cybersecurity

Can't access my device DJI Phantom 3 which uses UNIX. Need Help please!

Equipment: DJI Phantom 3 I have the root and passwords access, but I cannot find out how to access the equipment. There is a USB port going to a miniUSB that connects to the equipment, but on Windows is detecting the connection as being a Serial Port (COM3). I need some help in order to gain... (5 Replies)
Discussion started by: nobr3ga
5 Replies

8. Ubuntu

Cannot access or boot encrypted drive (gave up waiting for root device...)

I cannot access or boot from my C drive. I'm running Zorin 9 and the drive is a Samsung SSD. The disk was encrypted on install, and that has not given me any problems before. When I start the system it gets to the memory test page, and does not then load the password prompt, which it used to.... (1 Reply)
Discussion started by: David4321
1 Replies

9. UNIX for Dummies Questions & Answers

Exclusive access for few IPs to NTP device

How to provide a client exclusive access to the NTP device or NTP server. Example: 1. Configured md5 authentication for a subnet added below restriction line to the subnet as below in ntp.conf file. Also configured the keys and md5 authentication working . restrict 192.168.1.0 mask... (1 Reply)
Discussion started by: iqtan
1 Replies

10. HP-UX

Failed to open tape device /dev/rmt/0mn:Device busy (errno = 16)

Hi, Unable to make tape backup, please help. /opt/ignite/bin/make_tape_recovery -a /dev/rmt/?mn -I -v -m tar -x inc_entire=vg00 * Creating local directories for configuration files and archive. ======= 04/25/16 16:28:08 IST Started /opt/ignite/bin/make_tape_recovery. (Mon... (4 Replies)
Discussion started by: anuragr
4 Replies
escape(1)							Mail Avenger 0.8.3							 escape(1)

NAME
escape - escape shell special characters in a string SYNOPSIS
escape string DESCRIPTION
escape prepends a "" character to all shell special characters in string, making it safe to compose a shell command with the result. EXAMPLES
The following is a contrived example showing how one can unintentionally end up executing the contents of a string: $ var='; echo gotcha!' $ eval echo hi $var hi gotcha! $ Using escape, one can avoid executing the contents of $var: $ eval echo hi `escape "$var"` hi ; echo gotcha! $ A less contrived example is passing arguments to Mail Avenger bodytest commands containing possibly unsafe environment variables. For example, you might write a hypothetical reject_bcc script to reject mail not explicitly addressed to the recipient: #!/bin/sh formail -x to -x cc -x resent-to -x resent-cc | fgrep "$1" > /dev/null && exit 0 echo "<$1>.. address does not accept blind carbon copies" exit 100 To invoke this script, passing it the recipient address as an argument, you would need to put the following in your Mail Avenger rcpt script: bodytest reject_bcc `escape "$RECIPIENT"` SEE ALSO
avenger(1), The Mail Avenger home page: <http://www.mailavenger.org/>. BUGS
escape is designed for the Bourne shell, which is what Mail Avenger scripts use. escape might or might not work with other shells. AUTHOR
David Mazieres Mail Avenger 0.8.3 2012-04-05 escape(1)
All times are GMT -4. The time now is 07:37 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy