Linux – What does “mounting a root file system” mean exactly

bootfilesystemsinitrdlinux

In the boot process of Linux we have the initrd that is a root file system and is mounted before the real root file system is ready to mount. What is the procedure of mounting? What should happen so we can say that file system is mounted? And why do we say "root file system" instead of just "file system"?

Best Answer

It says "Root filesystem" because there can be many other filesystems that are mounted at boot time. Root or / is like the C-Drive on Windows. A filesystem is mounted, when it is accessible to the higher level system functions via it's mountpoint.

About the process of mounting... I don't know how technical an answer you want so please don't feel offended by this over-simplification. This is how I would explain it to my customers: Plugging in a Flashdrive.

  1. User connects USB Flashdrive
  2. OS detects "something" is connected to USB-port X
  3. OS probes the port and finds out, that there is a flash drive
  4. OS assigns a device node to the device (let's say /dev/sdb)
  5. OS probes /dev/sdb and find a partition table with on primary partition
  6. OS assigns a device node to the partition (let's say /dev/sdb1)
  7. OS probes /dev/sdb1 and recognizes a FAT32 file system
  8. OS mounts the file system at /dev/sdb1 to a new mountpoint (like /media/pendrive/)
  9. The content of the file system is accessible to the system and thus to the user

The content of the device (raw data) is just a bunch of zeros and ones. When mounting a device, the system adds something like a "read/write-filter" on top of those zeros and ones, that translates the zeros and ones to actual files and vice versa.

For example: When you save "Hello World" to text file at /media/pendrive, then the filter translates this according to the file system's rules and in the end a series of zeros and ones and writes to /dev/sdb1.