How to bring up the Linux Kernel on a new platform

(werwolv.net)

90 points | by WerWolv 6 days ago ago

8 comments

  • Neywiny a day ago ago

    I've done this for a cortex-m in qemu (meaning I wrote the chip and peripheral emulation code too for the timer, uart, sd controller with dma, and rcc). But I used buildroot. So much easier to keep track of everything and it's very easy to start with (unlike yocto). I recommend taking a look at buildroot.

    You also don't need an MMU to run Linux. Just helps compatibility.

    Good work

  • csdreamer7 5 days ago ago

    Excellent post. Your file format RE looks like an additional one to add to the reading queue as well: https://werwolv.net/posts/file_format_reverse_engineering/

  • elevation 6 days ago ago

    Great post, so neat to see it running in the browser! One question: why not thin the config a little? USB, SOUND, VGA, etc. are all slowing down the boot but don't have hardware to control.

    • WerWolv 6 days ago ago

      This is a valid point a friend brought up as well. There's no reason all of this is enabled except for keeping the config simple. I only recently learned about `make tinyconfig` though which should let you creating a absolutely minimal config to start off of. I might add that as a note at the end

      • elevation 5 days ago ago

        This complicated project was well executed, and I enjoyed it. I'm sorry your post wasn't more popular, I hope you won't be discouraged from sharing your adventures in the future!

  • hactually a day ago ago

    really enjoyed this - great to see modern C++ as well, we were all on Assembly and C when I had to do this on a Freescale/iMX chipset for a wireless router!

    So good though taking a reference design, re-laying it out with new modules and then bringing it to life with a scope and a datasheet.

    I can only imagine how much will have changed with LLMs being able to be read and have a harness to do the hard work for you!

  • devhunt-org a day ago ago

    What tends to be the biggest surprise when bringing Linux up on completely new hardware?

    • WerWolv a day ago ago

      It tends to be vendor drivers / vendor patches. Getting frustrated that my changes aren't applied just to see that the vendor decided to hardcode a field or dynamically patch the device tree in undocumented ways is what usually gets me