Install Ubuntu on a NTFS partition
The Ubuntu installer does not allow me to install on NTFS partitions, but certain circumstances requires me to do so. Is it possible?
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).
Supposedly, wubi is an Ubuntu installer which allows to "install and uninstall Ubuntu in the same way as any other Windows application" - I never tried this but I suppose the whole partition is contained in a file which can be on an NTFS drive.
http://www.ubuntu.com/download/ubuntu/windows-installer
I'm pretty sure it's not possible to install Ubuntu on an NTFS partition in the traditional sense of the word - i.e. as a stand-alone OS which directly accesses the drive etc. For one thing, filesystem permissions models are quite different etc.
However, you can access NTFS partitions from an Ubuntu which is installed on a, for example, ext4-partition.