IncusOS installation: unable to install to onboard eMMC

Hi there,

I’m trying to install IncusOS on a Seeed Studio ODYSSEY X86J4105 (which is similar to but superseded by this) which has an onboard 64GB eMMC (SanDisk DA4064). The installer, however, is unable to find the drive. Is this likely a matter of the installer not having the necessary driver? If so, is there any way I can add support to the installer?

Thanks a ton for Incus and IncusOS! It’s my dream distro.

Hmm, it could be either.

It would be useful to know what driver it’s using on a regular Linux distribution and what the entries look like under /dev/disk/

edit: sorry for the double post. :\

Surely. Drive currently has an ubuntu installation on it.

Here’s are the relevant entries by-id (with SN swapped out with nonsense):

$ ll /dev/disk/by-id/
total 0
drwxr-xr-x 2 root root 600 Jan  4 19:49 ./
drwxr-xr-x 8 root root 160 Jan  4 19:48 ../
lrwxrwxrwx 1 root root  13 Jan  4 19:49 mmc-DA4064_0xffdeadbe -> ../../mmcblk0
lrwxrwxrwx 1 root root  15 Jan  4 19:49 mmc-DA4064_0xffdeadbe-part1 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root  15 Jan  4 19:49 mmc-DA4064_0xffdeadbe-part2 -> ../../mmcblk0p2

Here are the mmc0 related logs from dmesg:

$ dmesg | grep mmc0
[    2.344946] mmc0: CQHCI version 5.10
[    2.346705] mmc0: SDHCI controller on PCI [0000:00:1c.0] using ADMA 64-bit
[    2.476956] mmc0: Command Queue Engine enabled
[    2.478506] mmc0: new HS400 MMC card at address 0001
[    2.486822] mmcblk0: mmc0:0001 DA4064 58.2 GiB
[    2.488311] mmcblk0boot0: mmc0:0001 DA4064 partition 1 4.00 MiB
[    2.489757] mmcblk0boot1: mmc0:0001 DA4064 partition 2 4.00 MiB
[    2.492220] mmcblk0rpmb: mmc0:0001 DA4064 partition 3 16.0 MiB, chardev (239:0)
lsmod output
$ lsmod
Module                  Size  Used by
xt_conntrack           16384  1
xt_multiport           20480  1
xt_nat                 16384  1
xt_tcpudp              20480  3
xt_addrtype            16384  2
xt_mark                16384  2
xt_MASQUERADE          20480  2
nft_counter            16384  16
xt_comment             16384  8
nft_compat             20480  20
cfg80211              712704  0
macvlan                24576  0
veth                   28672  0
nf_tables_set          32768  2
nft_masq               16384  2
nft_chain_nat          16384  4
bridge                176128  0
stp                    16384  1 bridge
llc                    16384  2 bridge,stp
btrfs                1269760  2
xor                    24576  1 btrfs
zstd_compress         167936  1 btrfs
raid6_pq              114688  1 btrfs
zfs                  4038656  3
zunicode              331776  1 zfs
zlua                  147456  1 zfs
zavl                   16384  1 zfs
icp                   303104  1 zfs
zcommon                90112  2 zfs,icp
znvpair                81920  2 zfs,zcommon
spl                   126976  5 zfs,icp,znvpair,zcommon,zavl
ebtable_filter         16384  0
ebtables               36864  1 ebtable_filter
ip6table_raw           16384  0
ip6table_mangle        16384  0
ip6table_nat           16384  0
ip6table_filter        16384  0
ip6_tables             32768  4 ip6table_filter,ip6table_raw,ip6table_nat,ip6table_mangle
iptable_raw            16384  0
iptable_mangle         16384  0
iptable_nat            16384  0
nf_nat                 45056  6 ip6table_nat,xt_nat,nft_masq,nft_chain_nat,iptable_nat,xt_MASQUERADE
nf_conntrack          139264  5 xt_conntrack,nf_nat,xt_nat,nft_masq,xt_MASQUERADE
nf_defrag_ipv6         24576  1 nf_conntrack
nf_defrag_ipv4         16384  1 nf_conntrack
libcrc32c              16384  3 nf_conntrack,nf_nat,btrfs
iptable_filter         16384  0
bpfilter               32768  0
nf_tables             151552  198 nft_compat,nft_counter,nft_masq,nft_chain_nat,nf_tables_set
nfnetlink              16384  2 nft_compat,nf_tables
vhost_vsock            24576  1
vmw_vsock_virtio_transport_common    36864  1 vhost_vsock
vhost                  49152  1 vhost_vsock
vsock                  40960  3 vmw_vsock_virtio_transport_common,vhost_vsock
spi_pxa2xx_platform    28672  0
dw_dmac                16384  0
dw_dmac_core           28672  1 dw_dmac
rtsx_usb_ms            24576  0
8250_dw                16384  0
memstick               20480  1 rtsx_usb_ms
rtsx_usb_sdmmc         32768  0
mei_hdcp               24576  0
intel_rapl_msr         20480  0
snd_hda_codec_hdmi     61440  1
snd_hda_codec_realtek   143360  1
snd_hda_codec_generic    81920  1 snd_hda_codec_realtek
intel_telemetry_pltdrv    20480  0
snd_sof_pci            20480  0
intel_punit_ipc        16384  1 intel_telemetry_pltdrv
intel_telemetry_core    16384  1 intel_telemetry_pltdrv
snd_sof_intel_hda_common    73728  1 snd_sof_pci
intel_pmc_ipc          20480  1 intel_telemetry_pltdrv
snd_soc_hdac_hda       24576  1 snd_sof_intel_hda_common
snd_sof_intel_hda      20480  1 snd_sof_intel_hda_common
x86_pkg_temp_thermal    20480  0
snd_sof_intel_byt      20480  1 snd_sof_pci
snd_sof_intel_ipc      20480  1 snd_sof_intel_byt
intel_powerclamp       20480  0
coretemp               20480  0
kvm_intel             286720  0
kvm                   667648  1 kvm_intel
snd_sof               106496  4 snd_sof_pci,snd_sof_intel_hda_common,snd_sof_intel_byt,snd_sof_intel_ipc
snd_sof_xtensa_dsp     16384  1 snd_sof_pci
snd_hda_ext_core       28672  3 snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
snd_soc_acpi_intel_match    32768  2 snd_sof_pci,snd_sof_intel_hda_common
snd_soc_acpi           16384  2 snd_sof_pci,snd_soc_acpi_intel_match
ledtrig_audio          16384  3 snd_hda_codec_generic,snd_hda_codec_realtek,snd_sof
i915                 2002944  2
crct10dif_pclmul       16384  1
snd_soc_core          249856  3 snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hda
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
snd_compress           24576  1 snd_soc_core
ac97_bus               16384  1 snd_soc_core
rapl                   20480  0
snd_pcm_dmaengine      16384  1 snd_soc_core
intel_cstate           20480  0
wdat_wdt               20480  0
snd_hda_intel          53248  0
snd_intel_dspcfg       28672  3 snd_hda_intel,snd_sof_pci,snd_sof_intel_hda_common
snd_hda_codec         139264  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda
snd_hda_core           90112  9 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
serio_raw              20480  0
joydev                 24576  0
snd_hwdep              20480  1 snd_hda_codec
snd_pcm               110592  8 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_sof,snd_sof_intel_hda_common,snd_soc_core,snd_hda_core,snd_pcm_dmaengine
igb                   221184  0
input_leds             16384  0
cp210x                 40960  1
drm_kms_helper        184320  1 i915
snd_timer              40960  1 snd_pcm
usbserial              53248  3 cp210x
rtsx_usb               28672  2 rtsx_usb_sdmmc,rtsx_usb_ms
dca                    16384  1 igb
snd                    90112  10 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,snd_soc_core,snd_pcm
uas                    28672  0
i2c_algo_bit           16384  2 igb,i915
i2c_i801               32768  0
lpc_ich                24576  0
intel_lpss_pci         20480  2
intel_lpss             16384  1 intel_lpss_pci
idma64                 20480  0
fb_sys_fops            16384  1 drm_kms_helper
soundcore              16384  1 snd
virt_dma               20480  1 idma64
processor_thermal_device    24576  0
mei_me                 40960  1
syscopyarea            16384  1 drm_kms_helper
intel_rapl_common      24576  2 intel_rapl_msr,processor_thermal_device
sysfillrect            16384  1 drm_kms_helper
mei                   106496  3 mei_hdcp,mei_me
sysimgblt              16384  1 drm_kms_helper
int340x_thermal_zone    16384  1 processor_thermal_device
intel_soc_dts_iosf     20480  1 processor_thermal_device
i2c_hid                28672  0
mac_hid                16384  0
int3400_thermal        20480  0
acpi_thermal_rel       16384  1 int3400_thermal
video                  57344  1 i915
pinctrl_geminilake     24576  0
pinctrl_intel          28672  1 pinctrl_geminilake
dptf_power             16384  0
binfmt_misc            24576  1
sch_fq_codel           20480  3
drm                   495616  3 drm_kms_helper,i915
ramoops                28672  0
reed_solomon           24576  1 ramoops
efi_pstore             16384  0
ip_tables              32768  4 iptable_filter,iptable_raw,iptable_nat,iptable_mangle
x_tables               40960  18 ebtables,ip6table_filter,xt_conntrack,ip6table_raw,iptable_filter,nft_compat,xt_multiport,xt_tcpudp,xt_addrtype,xt_nat,xt_comment,ip6_tables,iptable_raw,ip_tables,ip6table_mangle,xt_MASQUERADE,iptable_mangle,xt_mark
ses                    20480  0
enclosure              16384  1 ses
mpt3sas               278528  0
raid_class             16384  1 mpt3sas
mptspi                 24576  0
scsi_transport_spi     32768  1 mptspi
mptscsih               40960  1 mptspi
mptbase                94208  2 mptspi,mptscsih
megaraid_sas          163840  0
scsi_transport_sas     36864  2 ses,mpt3sas
virtio_blk             20480  0
virtio_scsi            24576  0
genet                  57344  0
mdio_bcm_unimac        20480  0
gpio_regulator         16384  0
fixed                  20480  0
phy_generic            20480  0
sha256_ssse3           32768  0
echainiv               16384  0
aesni_intel           372736  0
glue_helper            16384  1 aesni_intel
crypto_simd            16384  1 aesni_intel
cryptd                 24576  2 crypto_simd,ghash_clmulni_intel
dm_crypt               40960  0
algif_skcipher         16384  0
af_alg                 24576  1 algif_skcipher
mmc_block              49152  0
sdhci_acpi             24576  0
sdhci_pci              53248  0
cqhci                  28672  1 sdhci_pci
sdhci                  65536  2 sdhci_acpi,sdhci_pci
nls_iso8859_1          16384  1
ahci                   40960  0
libahci                36864  1 ahci
hid_generic            16384  0
usbhid                 57344  0
hid                   131072  3 i2c_hid,usbhid,hid_generic
usb_storage            77824  1 uas
nvme                   49152  4
nvme_core              94208  6 nvme
autofs4                45056  2

Anything else that would be helpful?

(post deleted by author)

Okay, so we’ll definitely need to add sdhci_pci to the initrd to allow for boot post-install.

@gibmat can you think of any reason why the install logic wouldn’t allow installing on this?

base: Add sdhci_pci by stgraber · Pull Request #760 · lxc/incus-os · GitHub will add what we need for post-install boot handling

1 Like

At a minimum we’ll need to update this logic to also recognize mmcblk devices: incus-os/incus-osd/internal/install/install.go at main · lxc/incus-os · GitHub

If we can emulate an eMMC device in QEMU it should be pretty easy to work though any other issues.

(I’m also happy to be a guinea pig and try pre-releases if helpful.)

@gibmat


stgraber@castiana:~$ incus config show dev-os | grep sdc
  raw.apparmor: /tmp/sdcard.img rwk,
  raw.qemu: -device sdhci-pci -device sd-card,drive=sdcard,spec_version=3 -drive id=sdcard,file=/tmp/sdcard.img,if=none,format=raw
stgraber@castiana:~$ truncate -s 64GiB /tmp/sdcard.img
stgraber@castiana:~$ incus start dev-os
stgraber@castiana:~$ incus exec dev-os bash
bash-5.2# lsblk | grep mmc
mmcblk0                                                                     179:0    0    64G  0 disk  
bash-5.2# 

Hopefully that’s close enough to real hardware to be useful for installation testing.

Once this lands in a published IncusOS image, hopefully this should get you going on your system. :slight_smile:

1 Like