-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Enable Rockchip arch in kernel #2556
base: main
Are you sure you want to change the base?
[WIP] Enable Rockchip arch in kernel #2556
Conversation
@@ -5,6 +5,7 @@ CONFIG_ARCH_BCM2835=y | |||
CONFIG_ARCH_BCM_IPROC=y | |||
# CONFIG_ARCH_MEDIATEK is not set | |||
# CONFIG_ARCH_QCOM is not set | |||
CONFIG_ARCH_ROCKCHIP=y |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CONFIG_ARCH_MULTI_V7 might be required too
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RK3566 is ARMv8-A (it has only 4 Cortex A-55, which are ARMv8.2-A) and CONFIG_ARCH_MULTI_V7
is for ARMv7 (if I understand correctly). So at first sight, it should not be required but if my real test fails, I'll try to add it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, this is weird because it says it's for Rockchip Cortex-A9 so I'll try without it and if it doesn't work, I'll try to add it.
If I add it, I'll try to use the SDK container to build locally and make the change if it helps.
@sambonbonne the image was built, you can download it and try it from the github actions artifacts page. https://github.com/flatcar/scripts/actions/runs/12575139169?pr=2556 |
Build action triggered: https://github.com/flatcar/scripts/actions/runs/13440424290 |
@ader1990 thank you! I had some problems when trying to edit the partition layout of my SD card with I understand 3MB is too big, unfortunately I don't know enough about "kernel things" to help on this so if I manage to have a working image, I hope we will be able to reduce the added size or find an alternative. |
@ader1990 I'm trying to use $ flatcar-install -d /dev/sdb -B arm64-usr -i /path/to/ignition.json -f /path/to/flatcar_production_image.bin -u
Using existing image: /path/to/flatcar_production_image.bin
Writing /path/to/flatcar_production_image.bin...
Running in chroot, ignoring request.
Running in chroot, ignoring request.
mount: /tmp/flatcar-install.77HskzhsAm/oemfs: WARNING: source write-protected, mounted read-only.
Installing Ignition config /path/to/ignition.json...
cp: cannot create regular file '/tmp/flatcar-install.77HskzhsAm/oemfs/config.ign': Read-only file system
Error: return code 1 from [[ -n "${IGNITION}" ]]
/dev/sdb: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sdb: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
/dev/sdb: calling ioctl to re-read partition table: Success If you have any idea to help me, I will be very happy! |
@ader1990 I managed to fix my problem and to use But it seems the first partition, the EFI one, is not mountable when installed so I could not write the Anyway, the image does not seem to boot so I added Can you launch the pipeline so I can try a new image with the added kernel parameter? Otherwise, should I ask for help with the SDK container (if yes, where? The Matrix channel?)? Just FYI, here is the
|
@sambonbonne had to solve some conflicts, I did trigger a new build and you should be able to download the image artifact in a few hours, if all goes well. |
@ader1990 thanks! I hope the new image will boot. I'll give it a try when I'm able to. |
@ader1990 it seems I cannot set
See https://github.com/flatcar/scripts/actions/runs/12743950372/job/35527535677#step:7:4656. So I guess I can't enable the |
it seems that the newer kernel 6.12 does not need it anymore. You can push a new change and I can start the build. For building the kernel properly with Flatcar, I have the following notes for https://www.flatcar.org/docs/latest/reference/developer-guides/sdk-modifying-flatcar/#getting-started:
|
Hello @ader1990 and thanks for those details! I pushed a commit to remove the Speaking of, I tried to build again after removing this config, so I enter the SDK container with
I will try to run both I hope I don't ask for too much with all my questions, to be honest this is my first time building an entire distro, it's challenging and very instructive. |
What usually happens when trying to run When I have errors with the build process, I usually start with a very clean environment from scratch, as there might be leftovers or errors introduced by multiple builds. Being a dockerized environment, it is usually easy to create a new env, just remove the cloned repository, do a docker rm of the dangling containers and images, do a docker system prune for safety (of course, make sure you are not using that env for other work), and start over. Always start with a new cloned repo of flatcar/scripts, otherwise you can do a git reset, git clean -fxd, git rebase on flatcar/scripts main branch, and start the process from step 1: |
@sambonbonne image was built here: https://github.com/flatcar/scripts/actions/runs/12845716694 |
@ader1990 just wanted to tell you I'm still investigating the boot problem. I tried multiple Beside this, I managed to boot MicroOS with this simple
So I know U-Boot is capable of booting a working OS, I just don't know why it doesn't boot Flatcar. Edit: I just decided to order a serial cable to see if U-Boot logs message to the UART port, it may take some time to arrive but I still want to work on this. |
9ed0ab0
to
87bc1d5
Compare
Latest push is due to me rebasing this branch from |
Good news: I got my cable and I already have some things. Bad news: right now, it's still complicated to find why Flatcar doesn't boot. I can see the Grub menu through the serial port but after booting Flatcar, even by adding a
I also tried to boot the A partition directly (still from Grub menu) with the I think I miss a kernel configuration, I'm looking for it. Fortunately, Home Assistant provides a working image for Odroid M1S so I will try to find out what they use. I hope I'll be able to build locally this time, this would avoid multiple pipelines just to find out missing parameters. |
I see that the support has been there since the 6.12 torvalds/linux@10dc64f, so it should work. For the debug logs, I might suggest adding more kernel config params - mainly Thanks. |
My comment is a bit long so I tried to structure it two parts. DebugI tried different parameters for debug logs: the four Maybe I do it wrong but it's not my first time adding a temporary kernel parameter from Grub: I use Kernel configsAs a theoretically working kernel config, I have two sources for Odroid M1S:
Gentoo wiki configs tryI tried to add configs from Gentoo wiki but that's where I got some build error when running /build/arm64-usr/var/log/portage/app-containers:podman-5.3.0:20250212-102732.log
I built from a fresh environment (new clone and remove all Flatcar containers and images) so I don't understand how I can still face this kind of errors (I run the Is it possible to build a smaller set just to try the boot, without Podman for example? Home Assistant OS infoFor HAOSS (short for Home Assistant OS), it bootloops when installed on SD card so I may have to try to install it directly on eMMC and maybe I can find a way to copy the |
I managed to build with more parameters but still no luck. I created a PR on my repo for that and started a self-hosted runner with the required labels. Build working but image still not booting: sambonbonne@1eb4d0b Build failing: sambonbonne@98c0da9 (build log: https://github.com/sambonbonne/flatcar-scripts/actions/runs/13437246231/job/37542450165) My next try, when I have the time, will be to run the HAOSS image directly in eMMC (instead of SD) and see if the kernel config is available. 🤞 |
Just to let you know that we do want to support this eventually. I'm hard at work on addressing the lack of space in /boot, which we need to fix before we can enable Rockchip support. |
@chewi I'm happy to know you want to support this when it's possible, I would have been very frustrated if I did this die-and-retry process for nothing 😁 But I understand the priority is on /boot space, Adrian explained the problem and I perfectly understand. This let me some time to try different things in this PR. |
Good news: I managed to boot HAOS, dump the Bad news: they are on kernel I'll try to build my branch with their config file anyway in a few days. Does anyone know if there is a way to check if a config has been renamed between two kernel versions (especially from 6.6 to 6.12)? |
Do you mean config options changing name? I have a git clone of the kernel, so I'd check the history, but |
Set CONFIG_ARCH_ROCKCHIP
After some discussion on Matrix about Odroid M1S (based on RK3566), I made this PR to enable Rockchip arch in the kernel.
The goal is to test the generated aarch64 image on my hardware and to see if the initrd size is not increased to much before discussing about the possible inclusion of this configuration in Flatcar.
How to use
Installing the image in Odroid M1S requires U-Boot binaries and multiple steps. I will add testing commands if it works on my hardware and someone want to try it on real hardware.
Testing done
No testing for now. I plan to download the generated image (when it's generated) and install it on my hardware to test if it boots.
changelog/
directory (user-facing change, bug fix, security fix, update)/boot
and/usr
size, packages, list files for any missing binaries, kernel modules, config files, kernel modules, etc.