Hi @elly and all the others at chrultrabook. I met you and your team at 37c3 It was a pleasure. (@steeler@bildung.social)
I bought an Picasso/Dali ThinkPad C13 Yoga Chromebook (Morphius) right after your talk and I´m now somehow stuck.
I wonder where I can find information how to make it boot properly under linux. There are two Linux notes in the support devices chart but there are no recommended tutorials how to do the recommended step ? You also mentioned in antother thread that a team is working on sorting out the boot issues. Can you tell me where to find more information on this topic ?
âsnip
Needs to add âiommu=ptâ to cmdline
eMMC models need to put /boot/efi and /boot on USB
âsnap
I can boot a fedora 39 from USB Stick right now but the OS Installer does not see the HD / ssd controller.
So how can I add iommu=PT or pit /boot/efi and /boot on usb ? Could you please hint to a tutorial how to do this?
The emmc slot of the board is empty. Just openend it to find out that the adapter is completely missing Nevertheless chromeOS was booting fine until I flashed coreboot. Probably I should reflash the stock firmware ? (how to do this, btw?)
Now that is strange. Mind posting dmesg as well? It would help identifying the root cause.
I see four options in this case:
You can buy and solder an M.2 slot (other people have done that and it worked) and install any NVME drive, then proceed as normal
Restore stock firmware and use submarine instead of EDK2
Restore stock and use EDK2 to load GRUB/kernel from mSD/USB, then use eMMC as rootfs
Keep current Coreboot build and help us find out why eMMC isnât being detected
As for restoring, itâs the same as initial flashing - connect to WiFi and run Mattâs script. If you canât (for one reason or another), you can simply flash it back using flashrom flashrom -p internal -w /mnt/usb/<MORPHIUS-STOCK>.rom although Iâm not sure if it keeps VPD (I think it should since itâs in SI_BIOS, but not 100% sure).
eMMC will be located close to SoC, most likely under the black insulating âtapeâ
I could do that for you, as I happen to live in Strasbourg (right next to German border) - just a matter of getting M.2 socket quickly as ordering from China would take at least a week
Interesting, Iâve seen someone else reporting issues with eMMC on a different platform. Maybe thereâs a regression in Linux kernel (wouldnât be first⌠or 30th)?
Those picasso machines with eMMC are a bit special, since theyâre the only x86 platforms (that I know of) using MMIO storage
I happen to have DIRINBOZ here (also Google/Zork with eMMC) so I should be able to reproduce the issue. Will report back
Nice! Nevertheless I guess a 2 core 4gig system with a âslowâ cpu is not really worth the effort soldering it to hell
I really love the formfactor of the Thinkpad C13 - but I guess I want a ryz 5-7 and 8/16 gig version soon as I seem to lick blood in the chomebook universe right now Nevertheless theses machines seem rather rare these days⌠at least on ebay and âKleinanzeigenâ - a german âsmall adsâ-system - right after your presentation at 37C3
So regression is in our Coreboot tree, not Linux (phew). I will test our bootloader (called submarine), which should help you with getting up and running on stock w/ eMMC
Maybe we should tell people with eMMC ZORK to stay on stock firmware until weâll have x86 MMIO driver for EDK2?
Something like âif /dev/mmcblk* exists, then exit 1, printf âyour device uses eMMC and getting it to work right now is complicatedââ.
Itâs not like it provides much value since you need external media which payload can detect, and you cannot boot Windows either.
Using submarine is a good stop-gap in my opinion for Linux users that just want their machines to work. I know you havenât been following this project so quick rundown for you - itâs basically LinuxBoot:
We reserve 16MB of eMMC, where we create ChromeOS kernel partition.
We embed u-root (minimal roots) inside slimmed-down Linux kernel without any networking and with basic framebuffer, no external modules.
We package that into ChromeOS KPART that depthcharge expects and flash it onto eMMC.
Users can change GBB flags to disable beep and reduce waiting time while running stock builds (highly recommended).
Coreboot loads depthcharge, which then finds Linux kernel on eMMC within that 16MB partition we reserved and jumps to it.
LinuxBoot starts, initializes basic devices (FB, ATKBD, SDHCI) and loads u-root, which looks for Linux kernel images on all attached storage devices (eMMC, NVME, USB - you name it) on FAT32, EXT4 or ISO.
User is presented with list of available options (including dropping to shell), they can modify cmdline on the fly and/or boot from selected image.
Image is being loaded into memory and executed using Linuxâs kexec call.
There are downsides to this approach of course. No UEFI services so you cannot boot Windows, and PSP modeswitch will be in âDeveloperâ instead of âProductionâ, which will disable HDCP for instance.
Thankfully we can probably patch ACPI tables (if needed) using ACPI_TABLE_UPGRADE. If my hunch is right, target Linux kernel should use ACPI patched by previous stage (LinuxBoot/Submarine).
If youâre interested, look at the following docs for details: Documentation/admin-guide/acpi/initrd_table_override.rst
You should then set up 2 checks. Second case is that that system has a secondary media storage like a m2 adapter which should work but runs the emmc useless after installation.
How high are chances right now that there will be a fix for s3 and mmio at the same time ? Are there any plans to fix the regression ?
So, if you would like to proceed as before, you can use MORPHIUSâs mSD slot to store /boot/efi and /boot and use internal eMMC for rootfs.
Itâs janky, but should work. Just need to update the build, so you can run his script (just like before) and update the FW.
Or as I mentioned, using LinuxBoot is also an option.
Important note about Fedora: Anaconda selects btrfs by default, which is a terrible idea on eMMC. According to our testing, good 'ol EXT4 performs best (as F2FS support in mainline is frankly terrible).
We will have an EDK2 driver for it eventually, but it wasnât a priority since there are a lot of other things to work on. Not to mention soldering an M.2 slot is also an option, will give you faster storage and more capacity
Is there a way to find out on your github when you pushed a new release ? Can´t find a list in the main repository where to look. Neither way: Thanks A LOT for all your efforts you put in here, Matt - highly appreciated!
Nevertheless the 64gb size of the mmcblk0 is too small ;( So I decided to skip fedroa to install Mint 21.2 which also recognizes the MMC and does not install so much bloat.
When I got this right now I need to put the bootloader on an USB device as Coreboot doesn´t recognize the MMC as a boot device, right ? Or should it work after the fixes of @MrChromebox ?
How can I manage to wirte the right boot loader onto the device to make the mmc recognizable at boot or right after boot time ? I guess it´s the sentence from the manual:
eMMC models need to put /boot/efi and /boot on USB
Create rootfs on eMMC (/ ext4 100% free, or however you like, please remember about encrypting it with luks2).
Continue with the installation.
You can also use dd to wipe the partition table: dd if=/dev/zero of=/dev/mmcblk0 bs=512k count=1
External storage media will need to be present while:
a) Booting the system up
b) Installing updates
Otherwise it can be safely unplugged while the system is running