How do I create a file and mount it as a filesystem?
Solution 1
Your procedure is correct, but when mounting a file image as a filesystem you have to add the -o loop
option to the mount
command:
mount -t ext3 -o loop file /media/fuse
Also, the -t ext3
option is not strictly required, because mount
can automatically determine the filesystem type.
Solution 2
I tried to apply the steps and comments from the previous answer. It still took some work to figure it out, so I've added another answer for people after me.
The following procedure creates a local file named file
and mounts it on a local directory named mounted_file
.
- Create a fixed size file with e.g.
which creates a file of 100 times 1000 bytes (100 kB) filled with zeroes.dd if=/dev/zero of=file bs=1000 count=100
- Format it with the desired file system, create a directory, mount it, and get permission to use it (owner is root):
Themkfs.ext3 file mkdir mounted_file/ sudo mount -o loop file mounted_file/ sudo chmod -R 777 mounted_file/
-o loop
parameter is optional nowadays. - To clean up afterwards:
sudo umount mounted_file/ rmdir mounted_file/ rm file
Use mkfs.ext3 -n file
to see the details of the file system that will created. If desired e.g. the block size (-b block-size
) and number of inodes (-N number-of-inodes
) can be changed.
Note that we can also run out of inodes (total number of files and directories) instead of diskspace, which is usually not clearly communicated.
Related videos on Youtube
johnny
Updated on September 18, 2022Comments
-
johnny over 1 year
How do I create a file of size 10M, format it with ext3 filesystem and then mount it in /media/fuse?
I tried with
mkfs -t ext3 file
then to mount it
mount -t ext3 file /media/fuse
It didn't work because it said that file wasn't a block device. Can anybody help me?
-
enzotib over 12 yearsYou just have to add
-o loop
to the mount command. -
samme4life over 12 yearsA great tutorial here: ibm.com/developerworks/linux/library/l-linux-filesystem
-
Anonymous over 12 yearsTo loop-mount a ISO file, I do this
mount -o loop file.iso /media/iso
. -
Sanam Patel about 12 years@enzotib Can you post that as an answer to be upvoted/accepted please?
-
enzotib about 12 years@TomBrossman: done
-
Mohammed Noureldin over 2 yearsFor completeness, I had to specify the size when creating the filesystem file, like this:
mkfs -t ext4 file 10240
This will create a file system with a size of 10 MB.
-
-
maniat1k13 about 12 yearshe is right but forgot to add the way to create a file
dd if=/dev/zero of=file bs=1024 count=10240
this is the way to create a 10Mb file... then you can format it withmkfs.ext3
-
enzotib over 10 yearsNow
mount
does not need the-o loop
option anymore, it can understand by itself we it need it. -
mekb almost 3 yearsi get an error
Not enough space to build proposed filesystem while setting up superblock
onmkfs.ext3 file
, i've created the file with dd, adding more in size doesn't do anything -
mekb almost 3 yearsnevermind, the file didn't end in .fs
-
thomasrutter about 2 yearsJust to elaborate on the top answer with further explanation of why this is (was) needed:
mount
operates on block devices. To the kernel, a file is not a block device. It can become a block device, however, by configuring a loop device to use it as backing. This is what you're doing with-o loop
. In recent times loop device handling is a lot easier: since kernel 2.6.35 loop devices set up during mount are now destroyed automatically when unmounted, and the mount command can automatically set up a loop device with just-o loop
instead of specifying a particular loop device. -
thomasrutter about 2 yearsAnd as other comments state, recently mount is smart enough to do the loop setup transparently without even
-o loop