I have a Western Digital 250GB NTFS-formatted external hard drive that I use primarily to store backups of my Windows machine. Since I’m away from my house for a couple of days, I used the drive to bring along some entertainment, but encountered some troubles getting Debian Lenny to play nice with it:
After searching around for a bit, I found a helpful thread on the Ubuntu forums that explained that this problem could be caused by a few different things. First, with the drive plugged in, I ran
sudo fdisk -l
from the terminal, which brought up a summary of all disks currently recognized by the machine:
jon@debtop:/$ sudo fdisk -l
Disk /dev/sda: 40.0 GB, 40007761920 bytes 255 heads, 63 sectors/track, 4864 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xcccdcccd
Device Boot     Start        End     Blocks  Id System /dev/sda1  *          1         31     248976  83 Linux /dev/sda2             32       4864   38821072+ 83 Linux Disk /dev/dm-0: 39.7 GB, 39751725568 bytes 255 heads, 63 sectors/track, 4832 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 38.0 GB, 38067503104 bytes 255 heads, 63 sectors/track, 4628 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Disk /dev/dm-1 doesn't contain a valid partition table
Disk /dev/dm-2: 1681 MB, 1681915904 bytes 255 heads, 63 sectors/track, 204 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000
Disk /dev/dm-2 doesn't contain a valid partition table
Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x5b6ac646 Device Boot     Start        End     Blocks  Id System /dev/sdb1              1      30401  244196001   7 HPFS/NTFS
Judging by the size of the drives, I figured out that the OS saw my drive at the location /dev/sdb, and the partition that I wanted to mount (the only partition on the drive) at the location /dev/sdb1.
Now, to determine why Linux wasn’t mounting the drive, I checked the fstab file at /etc/fstab to see if there was some other entry for sdb that was preventing it from mounting correctly:
# /etc/fstab: static file system information. # # <file system> <mount point>  <type> <options>      <dump> <pass> proc           /proc          proc   defaults       0      0 /dev/mapper/debtop-root /              ext3   errors=remount-ro 0      1 /dev/sda1      /boot          ext2   defaults       0      2 /dev/mapper/debtop-swap_1 none           swap   sw             0      0 /dev/scd0      /media/cdrom0  udf,iso9660 user,noauto    0      0 /dev/fd0       /media/floppy0 auto   rw,user,noauto 0      0
Since there was no entry there that should have overwritten sdb, I gave up on that line of inquiry, and decided to try manually mounting the drive. I know that Debian can read ntfs drives using the -t ntfs argument for the mount command, so I navigated over to the /media/ directory and created a folder to mount the drive in:
jon@debtop:/$ cd /media/ jon@debtop:/media$ sudo mkdir WesternDigital jon@debtop:/media$ ls cdrom cdrom0 floppy floppy0 WesternDigital jon@debtop:/media$ sudo mount -t ntfs /dev/sdb1 /media/WesternDigital/ jon@debtop:/media$ sudo -s root@debtop:/media# cd WesternDigital root@debtop:/media/WesternDigital# ls KeePass.kdbx nws $RECYCLE.BIN System Volume Information workspace.tc
As you can see, the contents of my external drive were now accessible in the location where they ought to have been if Debian had correctly mounted the drive when it was plugged in. The only caveat to the process is that the mount function is available only to root users, meaning that the mountpoint was created by root, and my user account lacks the necessary permissions to read or write to the external drive:
I figured that this issue could be solved by using chmod to grant all users read and write permissions to the mountpoint:
root@debtop:/media# chmod +rw WesternDigital chmod: changing permissions of `WesternDigital': Read-only file system
Well what the hell does that mean? According to this post (again on the Ubuntu forums), the ntfs support in Linux is experimental, and as such, all ntfs drives are mounted as read only. Specifically, this drive is owned by the root user, and has only read and execute permisions, but lacks write permissions.
According to this thread on the slax.org forums, there is another ntfs driver for Linux called ntfs-3g that will allow me full access to my ntfs-formatted drive. After sucessfully adding the ntfs-3g drivers to my system, I dismounted the drive, and attempted to re-mount it with the following command:
mount -t ntfs-3g /dev/sdb1 /media/WesternDigital
This time, the mount command appeared to almost work, but I got an error message along the way, indicating that the drive had not been properly dismounted the last time it was used on Windows, and giving me the option to force the mount:
Mount is denied because NTFS is marked to be in use. Choose one action: Choice 1: If you have Windows then disconnect the external devices by clicking on the 'Safely Remove Hardware' icon in the Windows taskbar then shutdown Windows cleanly. Choice 2: If you don't have Windows then you can use the 'force' option for your own responsibility. For example type on the command line: mount -t ntfs-3g /dev/sdb1 /media/WesternDigital -o force
Well, since I didn”t have a Windows box lying about that I can use to dismount the drive properly, I’ll took a shot at using the force option. After warning me again that it was resetting the log file and forcing the mount, the machine finally mounted my drive with full permissions for the owner, group, and other users!
drwxrwxrwx 1 root root 4096 2009-09-18 15:40 WesternDigital
After a couple of manual tests, I confirmed that both my user account and the root user had full read/write/execute access to this drive, and that I could use it like any other drive that the system has access to. Further, thanks to the painful XBMC install process, I already had the codecs required to play all of the TV shows that I brought along.
I’m surprised Debian tried to mount NTFS using something other than ‘ntfs-3g’. My understanding was that ntfs-3g is pretty much the standard way to use and manipulate NTFS drives on Linux systems.
Also you can’t apply chmod to NTFS because it lacks the unix security permissions. That is most likely why you received an error trying to do so.
Debian chose ntfs over ntfs-3g because it didn’t have ntfs-3g installed when I initially attempted to mount the drive. Further, the drive hadn’t been properly dismounted the last time it was yanked from a machine, and had a flag set in it’s journaling system that may have been causing problems whatever ‘standard’ ntfs driver Debian Lenny shipped with. Apparently even ntfs-3g doesn’t support the entirety of the NTFS journaling system, so it isn’t much of a leap to consider that other implementations may not support it at all, and might have been confused by the open session flag.
As for permissions, once you understand what’s happening, it makes perfect sense. It didn’t occur to me that NTFS wouldn’t support the unix permissions system until I thought about it a little harder. I just kind of took it for granted that my limited knowledge of terminal commands would keep me afloat. Definitely a case of a little bit of knowledge being a bad thing.
I too had problems mounting a shared external drive in Lenny. This post was very helpful. Thanks very much!
We’re always happy to help
I had installed Ubuntu today over windows 7. now windows is not working. Also i cannot mount volume ntfs one. My ubuntu partition is done in ex2 file system. Plshelp me to solve this issue.
Error is :
Cannot mount volume.
Unable to mount the volume.
WoW nice, that ntfs-3g mount was tricky….
Thanks a ton, never find this solution anywhere else.
Cheers <3