There are generally two stages to creating a filesystem on a disk. The first step is to format it so that the disk driver can read and write blocks on it. Modern hard disks come preformatted from the factory and need not be reformatted; floppy disks may be formatted on Linux using a utility program such as superformat or fdformat. The second step involves creating a filesystem, which means setting up the structures described in detail earlier in this chapter.
Ext2 filesystems are created by the mke2fs utility program; it assumes the following default options, which may be modified by the user with flags on the command line:
Block size: 1,024 bytes (default value for a small filesystem)
Fragment size: block size (block fragmentation is not implemented)
Number of allocated inodes: 1 inode for each 8,192 bytes
Percentage of reserved blocks: 5 percent
The program performs the following actions:
Initializes the superblock and the group descriptors.
Optionally, checks whether the partition contains defective blocks; if so, it creates a list of defective blocks.
For each block group, reserves all the disk blocks needed to store the superblock, the group descriptors, the inode table, and the two bitmaps.
Initializes the inode bitmap and the data map bitmap of each block group to 0.
Initializes the inode table of each block group.
Creates the /root directory.
Creates the lost+found directory, which is used by e2fsck to link the lost and found defective blocks.