Disk Management


sudo blkid          # get label, UUID and type


Make a Bootable USB Drive

• All data will be wiped

# Write ISO to your USB flash drive
sudo dd bs=4M if=/path/to/iso of=/dev/sdX status=progress && sync

# bs                block size
# if                specify the source
# of                specify the destination
# status=progress   (optional) show progress
# sync              clear the cache


Format a bootable flash drive to normal

# List device names
sudo fdisk -l

# Clean flash drive
sudo wipefs --all /dev/sdb

# Create a new partition
sudo cfdisk /dev/sdb # select dos type > New > Write > Quit
# Type 83 - Linux; other: c - W95 FAT32 (LBA)

# Create file system
sudo mkfs.vfat -n 'label' /dev/sdb1 # format partition 1 as FAT sys

# If the above fails, overwrite drive with 0s. Then use cfdisk utility (see above)
sudo umount /dev/sdb
sudo dd if=/dev/zero of=/dev/sdb # takes a long time



Swap partition is more reliable than swap file but the size can't be changed
Swap file is for home use and the size can be changed easily at any time
• Rule of thumb: swap size

< 1G2G
> 8G2-4G

# Check swap size
sudo swapon
free -h

• Create/ Resize swap file

sudo fallocate -l 1G /swapfile
# -l        specify size of swap file

# For F2FS or XFS, use dd command
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

sudo chmod 600 /swapfile
sudo mkswap /swapfile       # format
sudo swapon /swapfile       # activate the swap
sudo swapon --show          # verify

◇ To make the change permanent, add the following to /etc/fstab

/swapfile none swap defaults 0 0

• Remove swap file

sudo swapoff -a /swapfile   # de-activate
sudo rm -f /swapfile
# Also remove the entry from /etc/fstab

• Swapiness
◇ Swapiness defines how often the kernel use RAM instead of swap (default = 60)

# Check swapiness
cat /proc/sys/vm/swapiness

# Change swapiness
sudo nano /etc/sysctl.conf

vm.swappiness=10 # add this line to sysctl.conf


Encrypt Storage Devices

• Backup data in target device first. This will overwrite and erase all data

# Install cryptsetup
sudo apt install cryptsetup

# List block devices (partition info)

# Encrypt the drive
sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1

# Open encrypted drive
sudo cryptsetup luksOpen /dev/sdb1 sdb1

# Once the encrypted drive is opened, it's mapped to /dev/mapper/sdb1
sudo fdisk -l

# Create file system on it
sudo mkfs.ext4 /dev/mapper/sdb1

# If you don't run your system in the parition, you can get rid of space reserved by ext4
sudo tune2fs -m 0 /dev/mapper/sdb1

• To use the encrypted volume

sudo mkdir /mnt/encrypted
sudo mount /dev/mapper/sdb1 /mnt/encrypted

• By default, root is required to access encrypted parition but you can change it with chown command

sudo chown -R `whoami`:users /mnt/encrypted

• When you're done with the encrypted volume, unmount it and close the mapped device

sudo umount /dev/mapper/sdb1
sudo cryptsetup luksClose sdb1

• To use the encrypted volume next time

sudo cryptsetup luksOpen /dev/sdb1 sdb1
sudo mount /dev/mapper/sdb1 /mnt/encrypted

• Auto mounted encrypted partitions at boot. Applicable only on LUKS encryption

lsblk                               # Get name of encrypted device
sudo cryptsetup luksUUID /dev/sdb1  # Get uuid of encrypted device
sudo nano /etc/crypttab

# Add the following line to /etc/crypttab
sdb1 /dev/disk/by-uuid/fd3c01ad-0e59-4bc1-9bda-7c61e00b36cf none luks
# none - no key files used
# You can use key files if your system partition is encrypted 

sudo mkdir /mnt/encrypted_sdb1      # Define mount point
sudo nano /etc/fstab

# Add the following line to /etc/fstab
/dev/mapper/sdb1 /mnt/encrypted_sdb1 ext4 defaults 0 2