The eagled-eyed among the readers probably recognized the chassis; yes, it’s a Lenovo M720q Tiny. The network interface card is a 10-gig dual-port SFP+ Supermicro AOC-STGN-I2S (aka Intel 82599, aka ixgbe). The little blue board in the top left corner of the photo is a 64 GB slim SATA SSD, held in place by a strip of double-sided construction tape (I’ll think of a better mounting solution eventually; there might be a way to integrate the SSD into the NIC cooling solution I bought from Untrusted Source).
Normally, you would use an m.2 drive on this model. However, it has to be NVMe, and as of right now, there are some issues with owut operating on root-partition-resized NVMe drives, so I had to use SATA (there’s a tiny slot on the motherboard, from which a ribbon cable goes to the standard-size SATA connector). The Supermicro card was chosen because it’s short enough to leave room for the slim SATA SSD to be mounted.
Here’s the nice part: everything worked out of the box. All hardware was recognized at first boot.
What specifically? I've got a ~250 GB NVMe drive as rootfs in my N5105 box used for testing and it has been at various sizes from 256-1024 MB for a couple years without issue. Currently at
$ uci show attendedsysupgrade.owut.rootfs_size
attendedsysupgrade.owut.rootfs_size='512'
$ lsblk /dev/nvme0n1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 232.9G 0 disk
├─nvme0n1p1 259:1 0 16M 0 part /boot
│ /boot
├─nvme0n1p2 259:2 0 512M 0 part /rom
└─nvme0n1p128 259:3 0 239K 0 part
Upgrade would complete, but configuration would be lost (all the way down to the root password; I would be greeted with the no-password-set command prompt on the next login).
Here’s what I did after you asked the question:
Install OpenWrt (UEFI/ext4) prebuilt with some additional packages using Firmware Selector
Change root password using passwd
Install the OpenWrt 2020 LuCI theme and verified it shows (just to have some change that I would expect to carry over across upgrades)
Edit /boot/grub/grub.cfg to replace root=PARTUUID=* with root=/dev/* for both primary and failsafe entries (again, just to have some change that I would expect to carry over across upgrades)
Add /boot/grub/grub.cfg to /etc/sysupgrade.conf to ensure its preservation across upgrades
Reboot to make sure configuration changes are active
Run the following:
uci set attendedsysupgrade.owut=owut
uci set attendedsysupgrade.owut.rootfs_size=512
uci commit
owut upgrade --force
Upgrade completed, the root partition was resized to 512 MB as requested, extra packages appear to be present, but I am still met with the no-password-set command prompt. /etc/sysupgrade.conf is reset to default, /boot/grub/grub.cfg is generated anew.
Yeah, these are issues that appear to be x86-specific, somewhere in /lib/upgrade/platform.sh. My intuition is that the disk location of the sysupgrade backup is at the end of the original rootfs partition, and then on reboot it's expected to be in the same place, but it's either overwritten (when expanding) or off in space (when contracting), so sysupgrade simply can't do the restore.
Notably, the arm platforms seem to handle the situation just fine, I've got reports of users changing rootfs partition size without any loss of config... I just need to compare the platform.sh between them and see if I can find the issue on x86.
In any case, it should only happen once when you do the initial resize, and thereafter as long as the partition sizes match, things go smoothly.
(Oh yeah, the grub.cfg gets whacked somehow no matter what you do; I think that's a different issue.)
I wouldn’t be surprised if it were. But just in case, let me point out again that I actually added /boot/grub/grub.cfg to /etc/sysupgrade.conf, which, in theory at least, should have added it to the list of files to be preserved over an upgrade…
When I first set up my N5105, OpenWrt didn't have the i915 DRM in the kmod, so if you wanted good video out you had to "install" the proper initrd module in /boot to get it to work, and point to it by adding initrd /boot/dmc.cpio to the boot line in the grub cfg. That's sort of neither here nor there, but...
My added file /boot/dmc.cpio was listed in sysupgrade.conf;
The modified /boot/grub/grub.cfg was also in sysupgrade.conf.
Then sysupgrade -l happily listed them, sysupgrade -b stored them, and yet neither file was restored on sysupgrades irrespective of fiddling with partition sizes. Maybe /boot is mounted in initramfs during the restore??? Further digging is required.
Hmm, just had another thought. It's possible that /boot is mounted ro during the upgrade... (I'll have to keep that in mind when I start digging through platform.sh again.)
Nothing pointless about this nice setup! I have a similar one and I do love it… oh boy.
Mine is the m920q with pentium gold g5400t and I got a intel x520-da2 (it is bigger but fits), I’m willing to buy one of these supermicro stgn-i2s like yours to replace it, it looks better
Im running it on nvme, but like someone said, Im running a hypervisor (PVE) and my OpenWRT is under a VM.
I bought the China Mellanox Dual Port ConnectX-3 (their special made one, from old Dell server mezzanine card module and merge onto single PCI-E card but it just work with normal Mellanox driver) and prefer it over the Intel 82559
What model would that be? Because I’ve been looking for it and can’t find anything that is less than $70. Besides the famous daughterboards and full heights…
There’s some debate here and some funny stories in the last link:
Okay, here’s mine. There was that time I removed one too many packages from ProxMox and it wouldn’t boot. My tinyPC is in a not-easily-accessible media closet and it took me several hours to get the network back up and running. I haven’t learned my lesson and still run it virtualized.