Adding a new Machine
- Find out which kernel version your custom kernel is (e.g. 2.6.27)
- Extract the diff: diff -Nurd linux-2.6.27/ linux-2.6.27-mymachine/ (this step is optional if you already have a diff)
- Add DEFAULT_PREFERENCE_mymachine = "1" and SRC_URI_append_mymachine = "file://mymachine.diff" to linux_2.6.27.bb
- Put defconfig in recipes/linux/linux-2.6.27/mymachine/defconfig
If you really, really need to be special (which you really don't need, but companies seem to feel better when their name is plastered all over the place e.g. linux-mycompany_2.6.27.bb) you can create your own kernel recipe with the naming options you mentioned, then please use linux.inc to the basics working well. If even that is not special enough, then well, you are on your own.
By reusing a linux_2.6.xx recipe you can easily see what kind of patches other machines are applying and how issues with that kernel get solved.
General steps and traps
Most of the time people that add new hardware to OE go through something like this (ARM example):
- Add mymachine.conf, linux-mymachine_2.6.xx.bb, openmymachine.conf distro
- Complain toolchain doesn't build, copy over versions from angstrom to get it fixed
- Complain their device doesn't boot, change defconfig to support EABI to get it fixed
- Complain NFS doesn't work, change defconfig to get that fixed
The toolchain problems wouldn't have been there if people had used an existing, working distro like angstrom, the kernel issues mentioned above are all handled automagically by linux.inc.
So people, please start by reusing existing things and creating your own stuff when need arises, not when NIH arises.
Further comments and information
- Adding a new Machine, Chapter 5. Common Use-cases/tasks, OpenEmbedded User Manual
- where available, don't forget to provide an URL to the machine's homepage in the machine configs for those who want to know more about it.