Skip to main content

Mount Point, Identify Your SSD’s UUID, udev Rules.

Adding an entry to your /etc/fstab file allows you to configure your external SSD to mount automatically at boot with a consistent path. Here’s how you can do it:

1. Identify Your SSD’s UUID or Device Name

  • First, you need to identify your external SSD's UUID or device name. You can do this by running:
    sudo blkid
  • Look for your SSD in the output. It will look something like this:
    /dev/sdb1: UUID="1234-5678" TYPE="ext4"
  • Note down the UUID (e.g., 1234-5678) or device name (e.g., /dev/sdb1).

2. Create a Mount Point

  • Create a directory where you want to mount your SSD, e.g.:
    sudo mkdir /media/your-username/your-external-ssd
  • Replace your-username with your actual username.

3. Edit /etc/fstab

  • Open the /etc/fstab file in a text editor with root privileges:
    sudo nano /etc/fstab
  • Add a new line at the end of the file. The format is:
    UUID=1234-5678  /media/your-username/your-external-ssd  ext4  defaults  0  2
  • If you’re using the device name instead of UUID:
    /dev/sdb1  /media/your-username/your-external-ssd  ext4  defaults  0  2
  • Replace ext4 with the appropriate filesystem type if your SSD uses a different one (e.g., ntfs for NTFS).

Explanation of the fields:

  • UUID or /dev/sdXY: The identifier for your SSD.
  • Mount Point: The directory where the SSD will be mounted.
  • Filesystem Type: The type of filesystem on the SSD (ext4, ntfs, etc.).
  • Mount Options: defaults works in most cases. You can specify other options if needed.
  • Dump: Usually 0. It’s related to backup utility, dump.
  • Fsck Order: Usually 2 for non-root filesystems, or 0 if you don’t want the filesystem checked at boot.

4. Test the Configuration

  • Before rebooting, you can test if the SSD mounts correctly:
    sudo mount -a
  • If there are no errors, your SSD should be mounted to the specified mount point.

5. Reboot and Verify

  • Finally, reboot your system:
    sudo reboot
  • After the reboot, verify that the SSD is mounted at the correct mount point:
    df -h

This setup will ensure that your SSD automatically mounts to the specified directory every time you boot your system.

The /etc/fstab file is executed during the boot process, not when an external drive is plugged in. Therefore, if you add an entry for an external drive to /etc/fstab, the system will attempt to mount it automatically during boot. If the drive is not connected at that time, the boot process might be delayed, or you might encounter errors.

For Mounting When Plugging in the Drive

If you want the external drive to mount automatically when plugged in (rather than during boot), you have a few options:

1. Use udev Rules

  • You can create a udev rule to automatically mount the drive when it's connected. Here's how:

    • Create a script to mount the drive:

      sudo nano /usr/local/bin/mount-external-ssd.sh

      Add the following content to the script:

      #!/bin/bash
      mount /media/your-username/your-external-ssd

      Make the script executable:

      sudo chmod +x /usr/local/bin/mount-external-ssd.sh
    • Create a udev rule:

      sudo nano /etc/udev/rules.d/99-external-ssd.rules

      Add the following content, using your drive’s UUID:

      ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_UUID}=="1234-5678", RUN+="/usr/local/bin/mount-external-ssd.sh"

      Replace 1234-5678 with your drive’s actual UUID. You can find it using blkid.

    • Reload udev rules:

      sudo udevadm control --reload-rules

With this setup, your drive should automatically mount to the specified directory whenever it's plugged in.

2. Use udisksctl or autofs (Simpler)

  • udisksctl: This tool can be used to mount devices manually when plugged in, without modifying /etc/fstab.
    udisksctl mount -b /dev/sdb1
  • autofs: This service can automatically mount filesystems on demand when accessed. It’s more advanced but provides dynamic mounting and unmounting.

3. File Manager Automation (Desktop Environments)

  • If you are using a desktop environment (e.g., GNOME, KDE), it often has built-in tools to automatically mount external drives when they are plugged in. You can configure this in the file manager settings under “Removable Media” or “Devices” settings.

In summary, /etc/fstab is best for drives that are permanently connected or for ensuring that a drive is mounted at boot. For an external drive that you plug in and unplug regularly, consider using udev rules, autofs, or desktop environment settings for dynamic mounting.

Yes, the UUID (Universally Unique Identifier) for a filesystem is always the same for that filesystem, regardless of when or where the device is plugged in. The UUID is assigned to the filesystem when it is created (formatted) and remains constant unless the filesystem is reformatted or the UUID is manually changed.

Key Points About UUID:

  1. Consistency Across Systems: The UUID stays the same across different systems and sessions. This makes it a reliable identifier for mounting drives in fstab, udev rules, or other configurations.

  2. Different from Device Names: Unlike device names (e.g., /dev/sda1, /dev/sdb1), which can change depending on the order in which devices are connected or the system's boot sequence, the UUID does not change. This is why UUIDs are preferred in configurations where consistent identification is necessary.

  3. Finding the UUID:

    • You can find the UUID of a filesystem using the blkid command:
      sudo blkid /dev/sdXn
      Replace /dev/sdXn with your device’s name.
  4. Changing the UUID:

    • If you need to change the UUID for some reason, you can do so with the tune2fs command (for ext2/ext3/ext4 filesystems) or xfs_admin (for XFS filesystems). For example:
      sudo tune2fs -U random /dev/sdXn
      This will generate a new random UUID for the specified device.

Summary:

The UUID for a specific filesystem remains the same every time the drive is plugged in, making it a reliable identifier for various system configurations.

In the /etc/fstab file, the fsck order is represented by the last field (usually the sixth one) and controls the order in which filesystems are checked by fsck during the system boot process. This field can be set to 0, 1, or 2:

Understanding fsck Order Values

  1. 0: Do Not Check

    • If this field is set to 0, the filesystem is not checked at boot. This is typically used for non-essential filesystems, network drives, or swap partitions that don’t need a fsck check.

    • Example:

      UUID=1234-5678  /mnt/external  ext4  defaults  0  0
  2. 1: Check First (Root Filesystem)

    • This value is reserved for the root filesystem (/). Only one filesystem should have this value in /etc/fstab. During the boot process, fsck will check this filesystem first, before any others.

    • Example:

      UUID=abcd-efgh  /  ext4  defaults  0  1
  3. 2: Check After Root Filesystem

    • Filesystems with this value will be checked after the root filesystem. If there are multiple filesystems with 2, they will be checked in the order they are listed in /etc/fstab.

    • Example:

      UUID=ijkl-mnop  /home  ext4  defaults  0  2
      UUID=qrst-uvwx /var ext4 defaults 0 2
    • Typically, non-root filesystems (like /home, /var, or /mnt/external) use this value.

When to Use Each Value

  • 0: Use for filesystems that don’t need to be checked, such as external drives, network shares, or filesystems where fsck checks might cause issues.
  • 1: Reserved exclusively for the root filesystem.
  • 2: Use for all other local filesystems that need to be checked.

Considerations

  • Performance: Running fsck on large filesystems can take time, so choose 2 for important non-root filesystems and 0 for less critical ones to optimize boot time.
  • Error Recovery: Having fsck checks in place can help recover from filesystem errors automatically, so use 2 judiciously on important data partitions.

Example /etc/fstab Configuration

UUID=abcd-efgh  /      ext4  defaults  0  1
UUID=ijkl-mnop /home ext4 defaults 0 2
UUID=qrst-uvwx /var ext4 defaults 0 2
UUID=1234-5678 /mnt/external ext4 defaults 0 0

In this example:

  • The root filesystem (/) is checked first.
  • /home and /var are checked after the root filesystem.
  • The external drive is not checked during boot.

In udev, the numbering of rules files determines the order in which they are processed. The numbers at the beginning of the filenames are used to specify this order. Here’s a breakdown of how this works:

Numbering and Order

  1. Lower Numbers:

    • Files with lower numbers (e.g., 10-, 20-, 30-) are processed earlier.
    • These are generally used for rules that need to run early in the device handling process.
  2. Higher Numbers:

    • Files with higher numbers (e.g., 90-, 99-) are processed later.
    • These are used for rules that should apply after other rules have been processed.

Range of Numbers

  • Range: The range of numbers is not strictly limited, but in practice, you might see rules with numbers ranging from 01- to 99-. The actual number you use depends on your specific needs and the number of rules files you have.

  • Example Naming Conventions:

    • 10-local.rules: This might be processed early to set up initial device handling.
    • 50-network.rules: This might handle network-related devices, processed after more general rules.
    • 90-usb.rules: This could be used for USB devices, processed later.
    • 99-custom.rules: This is often used for custom rules that should be processed last.

Practical Considerations

  • Consistency: Maintain consistency in numbering to keep track of rule processing order. If you create new rules and need them to be processed before or after existing rules, adjust the numbering accordingly.

  • Custom Numbers: You can use any number as long as it fits your desired order. For instance, if you have a specific rule that needs to come after 50-, you might use 60- for your new rule.

Creating and Managing Rules

  • Creating a Rule File:

    • Use a number in the filename to define when it should be processed relative to other rules.
    • Example:
      sudo nano /etc/udev/rules.d/30-my-custom.rules
  • Reload Rules:

    • After creating or modifying rule files, reload udev rules:
      sudo udevadm control --reload-rules
  • Trigger Rules:

    • To test your rules without rebooting, you can trigger them manually:
      sudo udevadm trigger

In summary, the numbering system in udev rules files helps manage the order in which rules are applied. While the actual range can vary, using a clear and consistent numbering scheme will help ensure that your rules are processed in the correct sequence.