linuxfilesystemsusbntfsfat32

How do I change the filesystem of my 64GB USB, from FAT32 to anything which allows me to put a 35GB file from my x86_64 Linux machine onto the USB?


'uname -a' on my machine gives:

Linux ct-lt-966 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux

Currently the filesystem of my USB is MS-DOS 'FAT32' which has a ~4.5 GB maximum size for individual files. I want to change this filesystem to something else, which does not have a limit. (I am trying to put a 35GB file onto a 64GB USB but I believe most USB filesystems do not limit the size of individual files).

I have not found it clear what choices of USB filesystem that I have. I tried to change the filesystem to 'NTFS', but I could not install or locate 'mkfs.ntfs' or even 'ntfsprogs'. (I also tried installing with 'pacman' and 'yum' but apparently 'pacman' requires an aarch architecture and I could not get access to 'yum-config-manager' in order to enable any repos).

So to conclude, with my minimal prowess I am just looking for any way to change the filesystem of my 64GB USB to anything which will accept a 35GB file from my machine.

Thanks

Edit 1: Just planning to use the USB on this Linux machine, not Windows.


Solution

  • If there's nothing on the stick you want, or it's safe to delete it then basically:

    PLEASE BE CAREFUL WITH THIS PROCESS: selecting the wrong device can obliterate a disk you needed such as a $HOME or your root OS

    All the following is from memory and untested: I don't have a USB stick available right now to test fully.

    Start by plugging in the stick while tailing the syslog in a console and see where it gets mounted (hopefully it automounts which it should if it's a desktop based Linux you're running. Possibly not if it's a server)..

    sudo tail -f /var/log/syslog
    

    (it might be /var/log/messages depending on distro)

    then plug the stick. syslog should show it being allocated a device and a mount point. A file manager window may open depending on your config if you are in a GUI. For example, you might see it being loaded on /dev/sdc1 and mounted at /media/<yourusername>/USBKEY or something.

    Confirm by running lsblk and note the device for the key, i.e.

    $ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0 167.7G  0 disk 
    ├─sda1   8:1    0  69.9G  0 part /
    └─sda2   8:2    0  97.9G  0 part /home
    sdb      8:16   0 149.1G  0 disk 
    └─sdb1   8:17   0 149.1G  0 part /mnt/snapshots
    sdc      8:32   0 931.5G  0 disk 
    └─sdc1   8:33   0 931.5G  0 part /storage
    sdd      8:48   0 465.8G  0 disk 
    └─sdd1   8:49   0 465.8G  0 part /mnt/backup
    sr0     11:0    1  1024M  0 rom  
    

    Unmount the stick (if it mounted) but leave it plugged in. Assuming again your device is at /dev/sdc1...

    umount /dev/sdc1
    

    Now run cfdisk in a terminal if you have it (friendlier) or fdisk if not, passing it the device related to your USB stick, without the partition number.

    man cfdisk
    sudo cfdisk /dev/sdc
    

    This should show the current FAT32 partition. Delete it, then create a new partition of type 'Linux', following the defaults for start and end blocks which will be suggested in such a way as to fill the available space.

    When done, select the option to Write the changes. Again, DOUBLE AND TRIPLE CHECK you have the right device or you will blow away your main disk probably.

    Once the changes are written, you can create the ext4 file system;

    sudo mkfs.ext4 /dev/sdc1
    

    And after it completes, you should be able to re-plug your stick and find that it remounts, this time with a file system that can take your large files.

    This isn't the only way to achieve this, but it's probably the least fiddly. For the sake of repetition, don't make a mistake with the device identifiers. If you're unsure, ask.