How to install TrueNAS SCALE 25.10 on a partition instead of the full disk + mirror boot and data partition at a later stage This article provides a technical guide for installing TrueNAS SCALE on a 16GB partition of a large NVMe drive, rather than using the entire disk, to conserve storage space. It details how to modify the installer script to create a smaller boot partition, then manually partition the remaining disk space for a data pool using command-line tools like `parted` and `sgdisk`. The guide also explains how to later mirror the boot and data partitions to a second drive by cloning the partition table and creating a ZFS mirror. The TrueNAS installer doesn’t have a way to use anything less than the full device. This is a waste of capacity when installing to large NVMe which is usually several hundred of GB or even TB. TrueNAS SCALE will use only a few GB for its system files so installing to a 16GB partition is sufficient. This guide covers for TrueNas Scale 24.04 to 25.10 You can to modify the installer script before starting the installation process. 1. Boot TrueNAS Scale installer from USB/ISO 2. Select shell in the first menu instead of installing 3. While in the shell, find and open the installer and edit using vi For TrueNasScale before 24.10 - https://github.com/truenas/truenas-installer/blob/release/24.04.2.5/usr/sbin/truenas-install L460 vi /usr/sbin/truenas-install For TrueNasScale 24.10+ - https://github.com/truenas/truenas-installer/blob/76a188e9048f26bca1a88f5d46a552742b3db286/truenas installer/install.py L81 vi /usr/lib/python3/dist-packages/truenas installer/install.py 4. in vi you can use "set number" to easily see on what line of code you are 5. make the changes on line 81 as follows: await run "sgdisk", "-n3:0:+16GiB", "-t3:BF01", disk.device 6. exit vi and type exit to return from the shell 7. Select Install/Upgrade from the Console Setup menu without rebooting, first and install to NVMe drive. 8. Remove the USB and reboot. Next we re-partition the nvme. You can perform this next setp on console or enable ssh via TrueNas Gui 1. Login to the linux shell. 2. Verify the created partition and their alignment bash truenas admin@truenas ~ $ sudo fdisk -l /dev/nvme0n1 Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors Disk model: CT1000P3PSSD8 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: 67X88FDC-3A4E-43FC-BA2F-AD279703FBFF Device Start End Sectors Size Type /dev/nvme0n1p1 4096 6143 2048 1M BIOS boot /dev/nvme0n1p2 6144 1054719 1048576 512M EFI System /dev/nvme0n1p3 1054720 34609151 33554432 16G Solaris /usr & Apple ZFS truenas admin@truenas ~ $ for p in 1 2 3; do sudo parted /dev/nvme0n1 align-check optimal $p; done 1 aligned 2 aligned 3 aligned 3. create a partition allocating the rest of the disk. bash truenas admin@truenas ~ $ sudo parted parted name 3 boot-pool parted unit KiB parted print parted mkpart ssd-pool 17304576kiB 100% parted print Model: CT1000P3PSSD8 nvme Disk /dev/nvme0n1: 976762584kiB Sector size logical/physical : 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 2048kiB 3072kiB 1024kiB bios grub, legacy boot 2 3072kiB 527360kiB 524288kiB fat32 boot, esp 3 527360kiB 17304576kiB 16777216kiB zfs boot-pool 4 17304576kiB 976761856kiB 959457280kiB ssd-pool truenas admin@truenas ~ $ for p in 1 2 3 4; do sudo parted /dev/nvme0n1 align-check optimal $p; done 1 aligned 2 aligned 3 aligned 4 aligned 4. setup the zpool for the UI to pick it up sudo zpool create ssd-pool /dev/nvme0n1p4 sudo zpool export ssd-pool NOTE: you can ignore the error message "cannot mount '/ssd-pool': failed to create mountpoint: Read-only file system" 5. use the TrueNas Gui - Storage Dashboard - Import Pool Re- Creating a mirrored Boot and Data Pool: