I have a librem 14v1 which came with a 2TB nvme drive. I’m looking to replace my aging slimbook 14 with the librem. The slimbook has a 4TB nvme drive in it. I bought and installed a brand new 4TB nvme drive into the librem14v1. The SeaBIOS sees the drive as 3.6TB. Neither latest arch (as of 2022-05-22) installer nor ubuntu, debian, trisequel, nor pureos will create a 3.5TB parition on the drive. cfdisk returns a seek error when trying to write the 3.5TB partition. All of the installers fail at the point where they actually have to write the default partitions to disk. They all work if I limit the partition sizes to 2TB or less.
Fwiw, the slimbook is UEFI, so it supports up to 8TB nvme (I’ve tried it as a test).
I disabled and deactivated TPM via bios thinking it might be the issue, to no avail.
The librem shipped with, and is running, SeaBIOS 18.104.22.168-gebd8e08. The system reports built on 2021-06-18.
I’ve seen other posts here which suggest SeaBIOS only supports 512-byte sectors and therefore only 2TB. Before I attempt to upgrade SeaBIOS to 1.16, is this true? SeaBIOS 1.15 released a lot of nvme fixes/support.
I have 2.5TB of user data on one partition, not including the OS/system/boot part, so having 2 2TB partitions isn’t really an option (and frankly shouldn’t be needed in today’s laptops).
Limitations of a BIOS, if any, should only relate to booting from the drive, rather than relating to partitioning.
I think the actual limit that you are hitting relates to the type of partition table. I am assuming that you are attempting to put an msdos partition table on the drive. That has a hard limit of 2TB (assuming 512 byte blocks, real or emulated). That is not bad for early 80s technology but …
msdos partition table is obsolete, replaced by GPT.
This is interrelated with UEFI (c.f. BIOS) but there is no real dependency on UEFI.
Use of sudo fdisk -l /dev/yourdisk will tell you the partition table type (where yourdisk is presumably something like nvme0n1).
So does the installer give you the choice of using GPT instead of msdos partition table? If not, does the installer give you the choice of manually partitioning and then using existing partitions for the install?
Most people in this situation would have a smaller drive for booting and keep the 4TB drive solely for user data (and no need to partition it at all if you won’t want to). However at the moment the Librem 14 itself is stopping you doing that.
Another option therefore is to have smaller boot+root partitions (big enough to install Linux and not run out of space for upgrades and additional software, small enough not to detract from the remaining space for user data) e.g. 0.25 TB for boot+root and 3.75 TB for user data. However for this to work reliably, it is typically the case that the boot partition must be towards the beginning of the disk (in the first 2TB, but really preferably first).
Thank you for the response. Here’s what I’ve tried:
bare drive from factory (zero partitions, not even gpt headers). install of PureOS fails when it tries to write the default partitions to disk, but doesn’t show the error, just shows the commands that fails.
pre-create the partitions, 500MB ext4 for /boot, 3.6TB ext4 for /. cfdisk fails when trying to write the partitions and exits.
parted /dev/nvme0n1 and then mklabel gpt, and quit. start pureos installer from usb, fails on writing default partitions to disk.
parted /dev/nvme0n1 and then mklabel gpt, and then mkpart primary 0G 1G and mkpart primary 1G 3.6T. parted fails stating partition length of 7813613568 sectors exceeds the msdos partition table imposed maximum of 4294967295 and quits. In parted, when I run mklabel gpt and then print it correctly shows partition table: gpt
forget the installers, using fdisk set up gpt and the partitions, etc. save and quit. When the installer runs, it crashes on grub-install. grub-install reports there’s no BIOS boot partition and blocklists are unreliable, so quitting. It doesn’t matter if there’s a boot bios parition or not, grub-install fails.
give up and using the installer, setup the disk, partitions using 2tb sizes, everything works. fdisk -l /dev/nvme0n1 shows Disklabel type: msdos. sigh This is true whether it’s PureOS or archlinux. but now I have one 2 TB partition and another 1.6TB partition.
To test my sanity, take an old HP laptop (bios based, not UEFI), install the 4TB nvme drive, boot archlinux installer, install it without issue by letting archinstall setup the disk/partitions. I have 1 512MB /boot and 3.6TB /. But now I have a working setup on disk. Put disk into librem14, power on, and it hangs at “Booting from Hard Disk…”
I highly doubt there exists a HP laptop that supports NVMe that isn’t UEFI-based, given that UEFI has been around since 2005 or so. You’re likely booting in UEFI-CSM mode (aka legacy BIOS compatibility mode) which isn’t exactly the same thing.
That said, it’s quite possible there is an issue with SeaBIOS and >2TB partitions, and I don’t have a drive handy to test unfortunately. I’ll check and see what I can find out, but might need to have you run a debug build and pull logs to figure it out