This project assignment is designed to give you experience in
creating, formatting, mounting, and unmounting Linux
You will create a disk image file and
The commands you will use (and which you should lookup in the
man pages) are
losetup (LOopback SETUP),
/etc/fstab (also documented in the man pages).
Disk image files can be used to create bootable media and RAM disks. 2 An image of an entire CD (or of many CDs) can be stored on a hard disk. (This is how CD duplicators or juke-boxes work.)
Make sure you keep an accurate system journal of any and all changes you make to your system! You will need to turn this in, along with the answers to the questions asked below.
Answer the following questions and perform the following tasks:
myfs.img”. Image files are regular files that hold filesystems. They must be carefully created and formatted. To create a 10 MB filesystem you must start by creating a 10 MB image file. (Verify you have 10 MB of free disk space before starting this! If not use a smaller count of say
1000.) Use the
ddcommand for this:
dd if=/dev/zero of=/tmp/myfs.img bs=1k count=10000
In this example the image file was created in
By default on many systems, that will be a RAM disk.
That is no problem, as long as you complete this project without a
reboot (or the image file will be lost).
If that may be an issue, make sure to create the image file some place
that isn't a RAM disk, such as
Where ever you put it, make sure you have sufficient disk space for it!
/dev/loop0(or another loopback device) which will be associated with the image file:
losetup /dev/loop0 /tmp/myfs.img
/dev/loop0as an unformatted disk. (You can see this by running
lsblk.) Use the
mkfscommand to format it (and thus the image file) as an
ext4filesystem. (The type for a CD would be
isofor Linux and
HSFSfor Solaris. Such image files can also be created and mounted, usually read-only though.) This command is actually a common front-end for a family of related commands, one for each filesystem type. What is the actual command ultimately invoked to create an
ext4filesystem? (Use the man pages to determine this.)
mkfs -t ext4 /dev/loop0 10000
mkdir /mnt/myfs mount -t ext4 /dev/loop0 /mnt/myfs
dfcommand. How much free space shows for your filesystem? Why is this less than 10 MB?
cd /mnt/myfs”. Run the command “
ls”. What files and/or directories were created automatically? What is their purpose?
vi(or some other method):
cd /mnt/myfs vi foo # add a few lines to the file
Now run the
df command again.
Is the output any different?
If so why?
Finally, run the command “
What is the inode number of your new
You cannot unmount a filesystem if it is in use.
If the current working directory of any process (such as your
shell) is any directory in that filesystem, or if any process
has any file open from that filesystem (such as
then the device will be considered busy.
Use the commands
see what files are in use and what processes are using them.
(See the man pages for details on these commands.)
Run the commands “
fuser -cuv /mnt/myfs”
lsof -Rw +D /mnt/myfs”.
What was the output?
What is the meaning of the options used?
cd umount /dev/loop0
What happened this time?
fsckcommand on your filesystem. The
fsckcommand is actually a common front-end for a family of related commands, one for each type of file system. What is the actual command that is run? (Use the man pages to determine this.)
fsck -CVfp /dev/loop0What is the purpose (or meaning) of each of these options used with
fsck. There are many ways to corrupt the image, such as using a tool such as
hexediton the image file. But it is hard to know exactly where to corrupt the image, in a way that matters and that can be repaired.
Instead you will use a tool “
can be used to examine and edit image files.
You will change the link count field of your new file from
“1” to “2”.
You will need to know your file's inode number in order to
run this command.
In the command line below, the inode number for the file
foo was “13”.
If you inode number is different, use that instead.
Once you have unmounted the filesystem (the previous step),
run this command (including the quotes and the angle-brackets):
debugfs -wR 'sif <13> links_count 2' /dev/loop0
(This command is part of the “
package; you can install it as root with
dnf install e2fsprogs”.)
Now re-run the same
fsck command as before.
What was the output this time?
tune2fscommand is used to examine and optionally modify the superblock of
extfilesystems. Use the man page to determine how to use this command to list the default values used in your filesystem. What are the default values for
fsckcheck is forced)
fsckcheck is forced)
losetup -d /dev/loop0
/etc/fstabfile. Each line of this file contains what to mount, the mount point (where to mount it), the
mountoptions to use, and other information. To automatically mount your filesystem at boot time add this entry to the
/tmp/myfs.img /mnt/myfs ext4 owner,loop 0 0What is the meaning of the fields and options used? (Read the man page for
fstabto find out.) What is the name of the similar file for Solaris? Are the fields the same in the Solaris file as for the Linux
fstabfile? If not what are the differences?
fstaband verify they work:
mount /mnt/myfsNote that even without the
/etc/fstabline, the command
mount -t ext4 -o loop /tmp/myfs.img /mnt/myfswill work. In this case
mountwill automatically associate
/tmp/myfs.imgwith an unused loop device, and
umountwill automatically break the connection. (Earlier we merely took advantage of the fact that
/dev/loop0was already associated with
/tmp/myfs.img, so different
mountoptions were used.)
/tmpwill eventually be automatically deleted, either during a reboot or from a
cronjob. What will eventually happen if you don't remove the line from
/etc/fstab? Would that still happen, if you added the
noauto” to the
filecommand can be helpful to determine the type of these image files, so you can use the right tools to examine them.)
XFS is the Red Hat default filesystem for enterprise systems, and is popular with large storage systems. What the concepts of storage volumes you learned for ext4 apply, the command are different, and some parameters cannot be changed. (Disk quotas also work differently.)
dnf install xfsprogs
Then, create a larger image file:
dd if=/dev/zero of=/tmp/myfs.img bs=1k count=100000
/dev/loop0, then format at type XFS. What are the exact commands you used?
Examine the output. What is the block size? How large are inodes?
Note that disk partitions (but not logical volumes) also can have
labels and UUIDs that are independent of the ones for
You can view these with the command (run as root)
lsblk --fs -o +PARTLABEL,PARTUUID”.
xfsvolume”, and confirm the new label is set correctly, and that the UUID hasn't changed.
/dev/loop0in your command). Now unmount the volume. Finally, mount it again, by specifying the UUID, not the device name. What were the exact commands you used? Which one is commonly preferred, and why?
ext4image from the
The answers and journal entries from the above list describing the steps you have taken to create and use a filesystem.
You can submit your project as email to . Please see your syllabus for more information about submitting projects.
ext4tools, and loop devices) are different or not available on most Unix systems. For Solaris, see the “
lofiadm” command to work with the loop devices, “
3, ... Back
man initrd”). This is because the virtual memory system is so efficient. To create a real ram disk is easy provided you kernel is configured to include the “
ramfs” and/or the “
tmpfs” filesystem. Then:
mkdir /mnt/ramdisk mount -t ramfs none /mnt/ramdiskThat's it! You can now create files there. All files will be lost when the ram disk is unmounted. Back