How to: Install Ubuntu 25.10 with LUKS and without LVM

Because of the new Flutter installer in Ubuntu, several things have broken. For example, the ability to install Ubuntu Desktop using only LUKS, without LVM. Yes, I know: LVM is nice and LVM is flexible. However, an additional abstraction layer is not helpful when errors occur during recovery, and it is not especially easy for someone without prior knowledge to adjust disks and volume groups within an LVM installation correctly. In various forum posts there are many workarounds, such as installing without encryption and then adding LUKS later, but I don’t understand why the installer can’t handle this properly. Every Debian installation medium does it without major problems. Ubuntu, unfortunately, does not. Therefore, after hours of trying every possible forum suggestion, I have found a way to achieve a simple, reproducible installation of Ubuntu 25.10 Desktop with LUKS and without LVM. To achieve this, we use a plain‑old installation medium and a special file (autoinstall.yaml) that contains everything we need.

Preparation

  • USB installation media with Ubuntu 25.10
  • textfile autoinstall.yaml preferably on a second USB drive / or somewhere online

Tested with

Tested on: Ubuntu 25.10, MS Surface Laptop
Last Update: 2026-04-03

Environment

  • UEFI Notebook
  • Secure Boot enabled (you can check that with “mokutil –sb-state”)

Steps

1. Boot from installation media

When booting is complete, place your autoinstall.yaml on the desktop.

Important things to change:

  • This is a YAML file, so spaces and layout is crucial.
  • Adjust language and keyboard layout as needed.
  • Use mkpasswd to generate your user password. In doubt choose whatever you like, because you can always change it later.

Your file contents will be like:

#cloud-config
autoinstall:
  version: 1
  locale: en_US.UTF-8   # adjust if you need another language
  keyboard:
    layout: en   # adjust if you need another language

  identity:
    hostname: ubuntu   # set your hostname
    username: user   # set your user
    password: ""   # mkpasswd --method=SHA-512

  ssh:
    install-server: false
    allow-pw: false

  storage:
    config:
      - type: disk
        id: disk0
        path: /dev/nvme0n1   # DOUBLE CHECK TWICE!
        ptable: gpt
        wipe: superblock
        grub_device: false   # grub_device must be on EFI and not on disk

      - type: partition
        id: part-efi
        device: disk0
        size: 512M
        flag: boot
        grub_device: true   # here

      - type: partition
        id: part-boot
        device: disk0
        size: 1G

      - type: partition
        id: part-luks
        device: disk0
        size: -1

      - type: dm_crypt
        id: dm-crypt0
        volume: part-luks
        key: "password"   # password for LUKS

      - type: format
        id: fmt-efi
        volume: part-efi
        fstype: fat32
        label: EFI

      - type: format
        id: fmt-boot
        volume: part-boot
        fstype: ext4
        label: boot

      - type: format
        id: fmt-root
        volume: dm-crypt0   # directly LUKS, no LVM
        fstype: ext4
        label: root

      - type: mount
        id: mnt-efi
        device: fmt-efi
        path: /boot/efi

      - type: mount
        id: mnt-boot
        device: fmt-boot
        path: /boot

      - type: mount
        id: mnt-root
        device: fmt-root
        path: /

  packages:
    - cryptsetup
    - cryptsetup-initramfs

  late-commands:
    # ensure update-initramfs
    - curtin in-target -- update-initramfs -u -k all

2. Run the installer

Once your file is ready on the desktop you can run the installer by calling “Install Ubuntu 25.10”:

Choose the automated mode with autoinstall file:

Click on “select file…” and provide the autoinstall.yaml file on your desktop:

When you click on Import, the file will be parsed and if you continue, everything will be installed and the system rebooted automatically.

After successful installation your partition layout will look like:

3. Adjustment

I have used “password” as LUKS password for the encryption of /dev/nvme0n1p3. Remember: Your device name can differ!

We should change the password now. The following command will ask you for the current and for the new password:

sudo cryptsetup luksChangeKey /dev/nvme0n1p3

In case you used just a temporary user password, don’t forget to change it, too.

4. Enjoy!