In case it can be helpful for others, I’m sharing some of my success here.
-Hopefully no need to share failures.
I’ve built Ubuntu (2000_700_3200_8_5_2-bc46e34) and fitted a pair of 8GB Ballistix 3200 MHz SODIMMs (CL16).
I’m able to boot successfully via SD, eMMC and SPI from …
- eMMC
- SD-card (by adding an extra partition to the card’s unused space and writing the additional / modified ubuntu-core.ext4 there).
- SATA harddisk (WD10JFCX);
I now have 10Gbit ports brought up by systemd and I’ve also set static IP-addresses using nmcli.
I’m using Digitus DN-81200 with OM4; my connection is to a DGS-1510-20 switch (module works with this switch as well). I will expect DN-81201 to work as well (which is for singlemode fiber such as OS2).
I’ve 3D-printed an I/O-shield for a Micro-ITX cabinet, plus a few wire-organizers.
Using a Corsair VS450 PSU (bought second-hand) for now; planning on switching to a MeanWell IRM-60-12ST later on - perhaps with a PicoPSU, but maybe I can run the board on only the 12V rail.
Details on how I made the bootable SD-card …
# 1: Set up a handy newline variable:
lf=$'\12'
# 2: Duplicate the ubuntu-core.ext4 image:
cp -RPp --sparse=always images/tmp/ubuntu-core.ext4 expanded.ext4
# 3: Make the duplicated image larger:
fallocate --length 2112M expanded.ext4
# 4: Resize the image in advance:
fdisk expanded.ext4 <<<"d${lf}n${lf}p${lf}${lf}131072${lf}${lf}y${lf}w${lf}"
# 5: Allow us to modify the new image:
e2fsck -f expanded.ext4
# 6: Change the UUID and label of the image (optional; don't use this fake "UUID"):
tune2fs -L '/' -U 'beefface-feed-fade-deaf-000000000001' expanded.ext4 <<< "Y"
# 7: Finally resize the image:
resize2fs expanded.ext4
# The image is now 2112MB in size, ready to be written and can be used as is.
# 8: Set an environment variable for the device, change the X according to your needs:
dev=/dev/sdX
# 9: Write the lx2160acex7_2000_700_xx00-xxxxxxx.img file to the SD-card (I used dd on Linux).
dd status=progress if=lx2160acex7_2000_700_3200-bc46e34.img of=${dev}
# 10: Add a new partition on the card 2GB from the beginning, size=3GB:
sudo fdisk ${dev} <<<"n${lf}p${lf}${lf}2097152${lf}+3G${lf}w${lf}"
# 11: Write the expanded image to the second partition:
sudo dd status=progress if=expanded.ext4 of=${dev}2; sync
# 12: Mount the image and make a few modifications to it.
mkdir -p sd; sudo mount ${dev} sd
# 13: Get the PARTUUID ...
partuuid=$(lsblk -no partuuid ${dev})
# 14: Modify extlinux.conf to boot from our SD-card partition:
sed -Ei.orig -e 's/APPEND /APPEND arm-smmu.disable_bypass=0 iommu.passthrough=1 /' -e 's/root=PARTUUID=[a-fA-F0-9-]+/root=PARTUUID=$partuuid/' sd/extlinux/extlinux.conf
# 15: Unmount the card:
sudo umount sd; rmdir sd
You should now be able to boot from that card.
If that works, you’ll still need to run dhclient, then preferably unminimize.
You can optionally do another resize2fs on the card if you wish, but there’s enough room for unminimizing.
Once you’ve finished dhclient and unminimizing, I recommend creating a user …
adduser admin
usermod -aG sudo admin
… after that you can log in via SSH (as you can not log in using root via SSH by default)
(feel free to replace admin by your own shortname)
The same image can be written to any partition on SATA port 0.
I prefer partition 10 (because I need some small fast partitions before the rootfs).
I made a few modifications in U-Boot (these are not necessary)
setenv bootcmd1 "$bootcmd"
setenv bootcmd_sata "scsi scan; boot_targets=SCSI0; run bootcmd1;"
setenv bootcmd "run bootcmd_sata;"
setenv bootdelay 3
saveenv
-You still have enough time to stop the boot and issue a ‘run bootcmd1’ without reducing the boot_targets to SCSI0, so you can boot from USB, SD or eMMC.
Working cards and accessories:
- Crucial Ballistix 2 x 8GB DDR4, CL16: BL2K8G32C16S4B, EAN: 649528824448
- Multimode 10Gbit SFP+ Transceiver: Digitus DN-81200, EAN: 4016032324133
- 1TB 2.5" WD RED Harddisk, Western Digital WD10JFCX, EAN: 718037804149
- 64GB MicroSDXC: Kingston Canvas Select Plus SDCS2/64GB, EAN: 740617298697
- 16GB MicroSDHC, Kingston Canvas Select SDCS/16GBSP, EAN: 740617275865
- USB 3.1 card reader: Silicon Power SPU3AT3REDEL300W, EAN: 4713436123941
Crucial Ballistix gives me 11GB/s for reading and 9.3GB/s for writing and all memtester tests succeeded. Though the Ballistix work, they do not run on maximum speed as that would require them to run on 1.35V; only 1.2V is available. See Jon’s recommendation below; G.Skill makes some good quick RAM modules (and I plan on trying both G.Skill and Kingston later on).
Untested, but I assume these will work:
- Singlemode 10Gbit SFP+ Transceiver: Digitus DN-81201, EAN: 4016032324140
- Singlemode 1Gbit SFP Transceiver: Digitus DN-81001, EAN: 4016032305668
- 40x40x11mm fan, 6.9CFM, 19dBA, 3-pin, Xilence XF031, EAN: 4044953500824
- 2 x eSATA bracket, Logilink CS0006, EAN 4260113564141
- M.2-to-PCIe x4 adapter, Delock DEL-62584, EAN: 4043619625840
- M.2-to-U.2 adapter: Startech M2E4SFF8643, EAN: 065030872607
- Crucial Ballistix 2 x 32GB SODIMM, BL2K32G32C16S4B, EAN: 649528824486
- Multimode 40Gbit QSFP+ Transceiver: Digitus DN-81300
- Multimode 100Gbit QSFP28 Transceiver: Digitus DN-81631, EAN:4016032483427
(The price of the DN-81631 is almost the same as the price of the DN-81300)
Note: Purchase OS2 LC-LC cables for singlemode, purchase OM3, OM4 or OM5 LC-LC for multimode.
Multimode transceivers will not work with OSx, only OMx. Singlemode transceivers will not work with OMx, only OSx.
Don’t purchase OS1, OM1 or OM2; these are too old, quite poor and usually too expensive.
DGS-1510-28X is a fine switch; it offers 4 SFP+ (10Gbit) ports and 24 RJ45 ports for a fair price, but you’ll likely not need that, as you can use the LX2 for both routing and switching.
… I’ll try and post updates as I advance. The following still needs to be solved:
- Get docker properly installed (it installs, but still fails to start, can’t create bridge; see Jon’s reply below).