inindev / odroid-m1

debian arm64 linux for the odroid m1
GNU General Public License v3.0
17 stars 2 forks source link

Actual boot sequence? #9

Closed b-sullender closed 5 months ago

b-sullender commented 5 months ago

The uboot read-me says

Once the spi flash has been written, the boot sequence should prefer removable mmc media if present, then boot m.2 nvme ssd.

Does this mean the microSD card is ignored, or is that also checked before booting the nvme ssd. Also, if i update the spi flash, can it load and execute an OS on the nvme ssd without uboot on the drive?

inindev commented 5 months ago

here is the source of confusion, imo: two things are booting -- the SoC and u-boot the SoC will look at SPI then MMC

1) it will always boot the u-boot on the SPI unless you hold down the mask button which disables the clock to the SPI flash. 2) if there is no viable u-boot on the SPI or it was disabled using the mask button, it will boot from MMC

now the u-boot rules begin as u-boot just got loaded

b-sullender commented 5 months ago

In summary:

Is this correct?

inindev commented 5 months ago

That looks correct to me. I believe the SoC will look at the eMMC before the SDMMC (you should test this, I am going from memory): https://opensource.rock-chips.com/wiki_Boot_option

I keep the SPI and eMMC erased during my development process as it is easy to become confused.

b-sullender commented 5 months ago

Thanks for the clarification. Just to confirm one last thing: your script and instructions will enable U-Boot to boot Linux from the NVMe SSD, correct?

Also, consider enabling Discussions for your repository so that myself and others can ask questions there if you don't mind answering them.

inindev commented 5 months ago

Thanks for the clarification. Just to confirm one last thing: your script and instructions will enable U-Boot to boot Linux from the NVMe SSD, correct?

Booting SPI -> NVMe is how I run this device (actually, all NVMe capable devices I have working): https://github.com/inindev/debian-image/releases/tag/v12.5-rc3

My goal is to run an unmodified Debian build with upstream apt update support. I have only tested Samsung NVMe devices, though others may work. There can be timing issues with some NVMe devices that are not too bad to resolve if you have the device in question in front of you.

It has been a while, but petitboot gave me trouble and pressing the mask button was bothersome. I erased the SPI flash and it was easier to test. When I was happy, I flashed u-boot to the SPI flash and stopped using the MMC device to bootstrap.

I also enabled discussions -- good call, thanks.