Install Ubuntu on a NTFS partition

No. NTFS doesn't support Linux file permissions so you can't install a Linux system on it.


It is possible to install Ubuntu on a NTFS partition.

Image Creation

You need to create an image file on your NTFS partition. Try boot up your Ubuntu Live CD, start a terminal, change directory into your NTFS partition, and create a image file:

cd /media/ubuntu/<your_ntfs_partition>/
mkdir linux
cd linux/
dd if=/dev/zero of=./linux.img bs=1M count=32768
mkfs.ext4 ./linux.img

This will create an image file of size 32GB with EXT4 at linux/linux.img

Loopback Filesystem Setup

Now, create a virtual block device at /dev/sdX where X is a non-occupied block device character (i.e. I only have /dev/sda, so I used /dev/sdb);

Also choose a minor number (in this case 200) that is not in use with ls -al /dev:

sudo mknod /dev/sdb b 7 200
sudo losetup /dev/sdb ./linux.img

Installing Ubuntu

You can now launch the Ubuntu installer and install Ubuntu on /dev/sdX, make sure you have install the bootloader to your real disk (or EFI partition) if you don't have Windows installed on that disk. After the installation, you need to get the kernel and initrd file name by mounting the image:

sudo mkdir /media/ubuntu/rfs
sudo mount -o loop /dev/sdb /media/ubuntu/rfs
ls -al /media/ubuntu/rfs/boot

Mark down the kernel and initrd filename, in my case that's vmlinuz-4.4.0-31-generic, and initrd.img-4.4.0-31-generic.

Bootloader

I have a Windows on my NTFS partition, so I have chosen Grub2Win as my bootloader. However, if you don't have Windows installed and insisted to use a NTFS partition (which is no point to do so though), GRUB should have installed on your disk in the previous step. No matter you use Grub2Win or the original GRUB, You need to edit your GRUB config and use the following:

echo Booting linux...

loopback loop0 (hd0,1)/linux/linux.img
set root=(loop0)
linux /boot/vmlinuz-4.4.0-31-generic root=/dev/sda1 loop=/linux/linux.img rw verbose nosplash
initrd /boot/initrd.img-4.4.0-31-generic

You need to edit (hd0,1) and /dev/sda1 to the NTFS partition that your linux image resides in. You may use the GRUB command line to get it. Also modify the kernel and initrd filenames according to your installation. Make sure your GRUB have NTFS and loopback support.

Now, when you boot the disk, you can boot into Ubuntu with GRUB. I have written my steps and procedure to here, but I am using Grub2Win as I mentioned earlier.


I'm not sure what your "certain circumstances" are, but you are better off resizing the partition and letting Ubuntu have its own space. You can always resize/move the Ubuntu partition later.

You cannot install Linux on an NTFS system for security, technical, and other reasons (for example, NTFS is supported by a user-space driver).