Install Packages required to mount window partition in Ubuntu 24
sudo apt install ntfs-3g fuse3
Make Directory to mount Window Partition C
sudo mkdir -p /mnt/windows_c
Find partition to mount:
sudo fdisk -l
Output:
Disk /dev/loop0: 4 KiB, 4096 bytes, 8 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop1: 55.36 MiB, 58052608 bytes, 113384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop2: 63.7 MiB, 66789376 bytes, 130448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop3: 74.27 MiB, 77881344 bytes, 152112 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop4: 269.77 MiB, 282873856 bytes, 552488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop5: 73.88 MiB, 77463552 bytes, 151296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop6: 10.72 MiB, 11239424 bytes, 21952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop7: 91.69 MiB, 96141312 bytes, 187776 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: PM9B1 NVMe Samsung 512GB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D312188E-7631-40DA-9BB4-EB29F963E1A6
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 411647 409600 200M EFI System
/dev/nvme0n1p2 411648 673791 262144 128M Microsoft reserved
/dev/nvme0n1p3 673792 504090623 503416832 240G Microsoft basic data
/dev/nvme0n1p4 504090624 954650623 450560000 214.8G Linux filesystem
/dev/nvme0n1p5 954650624 956852223 2201600 1G Windows recovery environment
/dev/nvme0n1p6 956852224 997101567 40249344 19.2G Windows recovery environment
/dev/nvme0n1p7 997103616 1000187903 3084288 1.5G Windows recovery environment
Disk /dev/loop8: 505.09 MiB, 529625088 bytes, 1034424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop9: 11.11 MiB, 11649024 bytes, 22752 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop10: 301.45 MiB, 316096512 bytes, 617376 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop11: 38.83 MiB, 40714240 bytes, 79520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop12: 10.54 MiB, 11051008 bytes, 21584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop13: 500 KiB, 512000 bytes, 1000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop14: 149.63 MiB, 156901376 bytes, 306448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop16: 568 KiB, 581632 bytes, 1136 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop15: 1.77 MiB, 1855488 bytes, 3624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop17: 150.29 MiB, 157593600 bytes, 307800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
We have identified C: as /dev/nvme0n1p3
sudo mount -t ntfs-3g /dev/nvme0n1p3 /mnt/windows_c
As this failed with following error
NTFS signature is missing.
Failed to mount '/dev/nvme0n1p3': Invalid argument
The device '/dev/nvme0n1p3' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
Lets use other method:
sudo blkid
Output:
/dev/nvme0n1p4: UUID="2be2c7c1-62de-4734-8373-48e0fc083321" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="d2d1f772-7ad2-44b8-b4a6-c3651ff97179"
/dev/loop1: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/nvme0n1p7: LABEL="DELLSUPPORT" BLOCK_SIZE="512" UUID="AA46EDC646ED92FD" TYPE="ntfs" PARTUUID="56b859e8-8a4f-43f1-8673-39f46dc6ac4b"
/dev/nvme0n1p5: LABEL="WINRETOOLS" BLOCK_SIZE="512" UUID="AED6479BD64762A7" TYPE="ntfs" PARTUUID="d0944af5-6b66-4830-a766-71376d7b791b"
/dev/nvme0n1p3: TYPE="BitLocker" PARTLABEL="Basic data partition" PARTUUID="9838e955-a1ed-4bb2-b548-ff0bbfee5dea"
/dev/nvme0n1p1: LABEL_FATBOOT="ESP" LABEL="ESP" UUID="9280-D831" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="5c9392f9-e8a7-4bda-a20a-9cbbc370888e"
/dev/nvme0n1p6: LABEL="Image" BLOCK_SIZE="512" UUID="CEF647B2F647999B" TYPE="ntfs" PARTUUID="401fff82-a681-4e84-b2a7-617f3215afd4"
/dev/loop17: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop8: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop15: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop6: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop13: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop4: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop11: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop2: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop0: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop9: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop16: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop7: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop14: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop5: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop12: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop3: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/loop10: BLOCK_SIZE="131072" TYPE="squashfs"
/dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="b10249a2-2134-4fc3-ab2b-46a1239d75b8"
Install
sudo apt install dislocker
sudo mkdir /mnt/bitlocker
sudo dislocker -r -V /dev/nvme0n1p3 -- /mnt/bitlocker
The unlocked data will be accessible in the dislocker-file within /mnt/bitlocker:
sudo mount -o loop /mnt/bitlocker/dislocker-file /mnt/windows_c
Automounting Partitions at Boot:
we need to find the UUID of window partition.
Hence
sudo blkid /dev/nvme0n1p3
Output:
/dev/nvme0n1p3: TYPE="BitLocker" PARTLABEL="Basic data partition" PARTUUID="9838e955-a1ed-4bb2-b548-ff0bbfee5dea"
Edit fstab file:
sudo nano /etc/fstab
Add following at end of file:
# Mount the BitLocker partition using dislocker
UUID=9838e955-a1ed-4bb2-b548-ff0bbfee5dea /mnt/bitlocker dislocker defaults 0 0
# Mount the unlocked data
/mnt/bitlocker/dislocker-file /mnt/windows_c ntfs-3g defaults,windows_names,locale=en_US.utf8 0 0
If we prefer that partition is not mounted automatically then we need to update above to following
# Mount the BitLocker partition using dislocker, do not auto-mount
UUID=9838e955-a1ed-4bb2-b548-ff0bbfee5dea /mnt/bitlocker dislocker noauto 0 0
# Mount the unlocked data, do not auto-mount
/mnt/bitlocker/dislocker-file /mnt/windows_c ntfs-3g noauto,defaults,windows_names,locale=en_US.utf8 0 0
But then you have to manually mount & unmount it.
Manually Mounting whenever needed:
sudo dislocker -r -V /dev/nvme0n1p3 -- /mnt/bitlocker
sudo mount -o loop /mnt/bitlocker/dislocker-file /mnt/windows_c
Manually Unmounting at shutdown:
sudo umount /mnt/windows_c
sudo umount /mnt/bitlocker
I will prefer automated mounting approach.
Now I need to gracefully unmount it before shutdown automatically.
So lets have Script to Unmount Partitions
sudo nano /usr/local/bin/unmount_bitlocker.sh
Add following code into it
#!/bin/bash
# Unmount the unlocked data
umount /mnt/windows_c 2>/dev/null
# Unmount the dislocker mount
umount /mnt/bitlocker 2>/dev/null
save & exit.
Make script executable
sudo chmod +x /usr/local/bin/unmount_bitlocker.sh
Create a service to call this script
sudo nano /etc/systemd/system/unmount-bitlocker.service
Add following content to it
[Unit]
Description=Unmount BitLocker Partitions
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/unmount_bitlocker.sh
RemainAfterExit=yes
[Install]
WantedBy=halt.target reboot.target shutdown.target
Lets enable the service so it runs at shutdown.
sudo systemctl enable unmount-bitlocker.service
Now suppose you modified this service then to make it
work do following
sudo systemctl daemon-reload
sudo systemctl enable unmount-bitlocker.service
Test the Configuration: After making changes, you can test it by running:
sudo mount -a
Now, every time the system is shutting down, your script will
run and unmount the BitLocker partitions automatically & boot
time it will mount the system.
We need to test this setup by shutting down your system and
ensuring the partitions are unmounted as expected.
Automated mounting approach fails so /etc/fstab is modified as
# Mount the BitLocker partition using dislocker, do not auto-mount
UUID=9838e955-a1ed-4bb2-b548-ff0bbfee5dea /mnt/bitlocker dislocker noauto 0 0
# Mount the unlocked data, do not auto-mount
/mnt/bitlocker/dislocker-file /mnt/windows_c ntfs-3g noauto,defaults,windows_names,locale=en_US.utf8 0 0
I am creating script to run after boot:
sudo nano /usr/local/bin/mount_bitlocker.sh
Add following content to it
#!/bin/bash
# Mounting BitLocker-encrypted drive
sudo dislocker -r -V /dev/nvme0n1p3 -- /mnt/bitlocker
# Mount the dislocker file
sudo mount -o loop /mnt/bitlocker/dislocker-file /mnt/windows_c
save & exit.
Make script executable
sudo chmod +x /usr/local/bin/mount_bitlocker.sh
create a service
sudo nano /etc/systemd/system/mount_bitlocker.service
Add Following content to service
[Unit]
Description=Mount BitLocker Encrypted Drive
After=local-fs.target
[Service]
Type=oneshot
User=root
ExecStart=/usr/local/bin/mount_bitlocker.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Save & Exit.
Enable service:
sudo systemctl enable mount_bitlocker.service
Test Script Manually
sudo /usr/local/bin/mount_bitlocker.sh
I checked this approach now its working.