C++ Code to Access Linux Hard Disk Sectors (with a LoopBack Virtual Hard Disk)
Hi all,
I'm kind of new to programming in Linux & c/c++. I'm currently writing a FileManager using Ubuntu Linux(10.10) for Learning Purposes. I've got started on this project by creating a loopback device to be used as my virtual hard disk. After creating the loop back hard disk and mounting it has the following configuration.
Code:
$> sudo fdisk -l /dev/loop0
Disk /dev/loop0: 10 MB, 10977280 bytes
255 heads, 63 sectors/track, 1 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/loop0 doesn't contain a valid partition table
Now what I want to do is develop a c++ program to read & write files to this loop back device,which I'm using to simulate an actual hard disk,at the blocks & sectors level. So far I've come up with the following code. But I'm still unable to read files from the hard disk one block at a time.
Code:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char block[512];
int length=0;
cout<<"Implementation of the File Handler Read Method..."<<endl;
FILE *f = fopen("/dev/loop0", "r");
if(f == NULL)
{
cout<<"Error In Opening the HardDisk File Retuning Error..."<<endl;
return -1;
}
//Read One Block of Data to Buffer
length = fread(block, 1, sizeof(block), f);
/* Do something with the data */
cout<<"Length : "<<length<<endl;
return 0;
}
When I run this Program All what I get is the message for NULL.
"Error In Opening the HardDisk File Retuning Error...".
Could you please help me by pointing what am I doing wrong here ?. So I could open the loopback device as a file an access it at the sectors & block level.
Hi all
I am facing a strange problem.
I am using a sun ultra10 spark machine.
first i took a 20gb IDE hard disk and installed solaris 5.8.
But due to some requirement i have to reinstall the OS but this time solaris 2.6.
and now the hard disk capacity is only showing 8gb.
Where the 12gb... (3 Replies)
I had an issue with a second hard disk in my machine. I have a sparc station running solaris 7. It was working fine but now it wont mount on boot up and when you try to mount it manually it gives an I/O error. I tried a different disk as a control which was fine. What I want to know is if my... (3 Replies)
:eek: I use this Solaris to run CMS a call acounting software package for my job. No one could run reports today because it said the this when you logged on
"The following file systems are low, and could adversely affect server performance:
File system /: 99%full"
Can some one please explain... (9 Replies)
Hi guys i have created a linux machine in virtual box now i want to add some hard disk space into it.
How would i do this.
Please help.
Machine details are as below
# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID:... (7 Replies)
hi
I've a fresh installation of SCO 5.0.7 on the IDE hard disk.
For SCSI hard disk I can declare, for example blc disk driver using:
# mkdev hd 0 SCSI-0 0 blc 0but it works for IDE hard disk? (3 Replies)
When we write a programme,we declare variables and compiler allocates memory to them.I want to get access to the physical block number of hard-disk where actually the data is stored by the programme "
Some one help me out... (1 Reply)
When we write a programme,we declare variables and compiler allocates memory to them.I want to get access to the physical block number of hard-disk where actually the data is stored by the programme "
Some one help me out... (3 Replies)
Discussion started by: nagraz007
3 Replies
LEARN ABOUT DEBIAN
disktype
DISKTYPE(1) BSD General Commands Manual DISKTYPE(1)NAME
disktype -- disk format detector
SYNOPSIS
disktype file...
DESCRIPTION
The purpose of disktype is to detect the content format of a disk or disk image. It knows about common file systems, partition tables, and
boot codes.
USAGE
disktype can be run with any number of regular files or device special files as arguments. They will be analyzed in the order given, and the
results printed to standard output. There are no switches in this version. Note that running disktype on device files like your hard disk
will likely require root rights.
See the online documentation at <http://disktype.sourceforge.net/doc/> for some example command lines.
RECOGNIZED FORMATS
The following formats are recognized by this version of disktype.
File systems:
FAT12/FAT16/FAT32, NTFS, HPFS, MFS, HFS, HFS Plus, ISO9660, ext2/ext3, Minix, ReiserFS, Reiser4, Linux romfs, Linux cramfs, Linux
squashfs, UFS (some variations), SysV FS (some variations), JFS, XFS, Amiga FS/FFS, BeOS BFS, QNX4 FS, UDF, 3DO CD-ROM file system,
Veritas VxFS, Xbox DVD file system.
Partitioning:
DOS/PC style, Apple, Amiga "Rigid Disk", ATARI ST (AHDI3), BSD disklabel, Linux RAID physical disks, Linux LVM1 physical volumes, Linux
LVM2 physical volumes, Solaris x86 disklabel (vtoc), Solaris SPARC disklabel.
Other structures:
Debian split floppy header, Linux swap.
Disk images:
Raw CD image (.bin), Virtual PC hard disk image, Apple UDIF disk image (limited).
Boot codes:
LILO, GRUB, SYSLINUX, ISOLINUX, Linux kernel, FreeBSD loader, Sega Dreamcast (?).
Compression formats:
gzip, compress, bzip2.
Archive formats:
tar, cpio, bar, dump/restore.
Compressed files (gzip, compress, bzip2 formats) will also have their contents analyzed using transparent decompression. The appropriate com-
pression program must be installed on the system, i.e. gzip(1) for the gzip and compress formats, bzip2(1) for the bzip2 format.
Disk images in general will also have their contents analyzed using the proper mapping, with the exception of the Apple UDIF format.
See the online documentation at <http://disktype.sourceforge.net/doc/> for more details on the supported formats and their quirks.
HOMEPAGE
http://disktype.sourceforge.net/
AUTHOR
Christoph Pfisterer <chrisp@users.sourceforge.net>
SEE ALSO file(1), gpart(8)
Feb 21, 2005