You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Each Nerves system includes a default configuration of the Linux kernel. In the case of the Raspberry Pi's kernel, we take the official Raspbian Linux kernel configuration and modify it to add features that Nerves requires (like compiled-in support for SquashFS) and remove uncommon features. The main features removed are tons of kernel modules for the 1000s of devices that could theoretically be attached to a computer. This saves significant compilation time and runtime image size. Choosing what features to enable is not well documented. Each time there's a new Linux kernel release, it's necessary to repeat the subsetting process. Enough config options change between kernel versions that it's not a trivial process.
An additional issue is that the tracked kernel configuration files, the nerves_defconfig files, only contain non-default settings. Comments and default selections are regularly filtered out when make linux-update-defconfig is run. A problematic aspect of this is when a config option depends on another, that latter one isn't saved in the config file. If someone naively edits the nerves_defconfig to disable an option, they could disable another option unwittingly and not notice it for a long time.
Need
At a minimum, we need documentation for what kernel options we need enabled and disabled and why. The why part is extremely important since it is near impossible to know what the ramifications of disabling some kernel options are and what packages they affect.
What we have
When in the Nerves system shell or when manually building the system from Linux, you can run make linux-update-defconfig or make linux-update-config to save the configuration defaults or all configuration settings. Configuration help is available via make linux-menuconfig. It may not be too hard to write our own Kconfig parser to extract descriptions and dependencies in support of better documentation, but I'm not sure if that's really needed.
I started writing up the changes I made to convert the Raspbian kernel config to a Nerves one with the 4.9 work, but it got unwieldy.
The text was updated successfully, but these errors were encountered:
Where have we landed on this request? I'm guessing we might want to abandon documenting all for now and maybe try to make a doc that outlines what is completely necessary?
Background
Each Nerves system includes a default configuration of the Linux kernel. In the case of the Raspberry Pi's kernel, we take the official Raspbian Linux kernel configuration and modify it to add features that Nerves requires (like compiled-in support for SquashFS) and remove uncommon features. The main features removed are tons of kernel modules for the 1000s of devices that could theoretically be attached to a computer. This saves significant compilation time and runtime image size. Choosing what features to enable is not well documented. Each time there's a new Linux kernel release, it's necessary to repeat the subsetting process. Enough config options change between kernel versions that it's not a trivial process.
An additional issue is that the tracked kernel configuration files, the
nerves_defconfig
files, only contain non-default settings. Comments and default selections are regularly filtered out whenmake linux-update-defconfig
is run. A problematic aspect of this is when a config option depends on another, that latter one isn't saved in the config file. If someone naively edits thenerves_defconfig
to disable an option, they could disable another option unwittingly and not notice it for a long time.Need
At a minimum, we need documentation for what kernel options we need enabled and disabled and why. The why part is extremely important since it is near impossible to know what the ramifications of disabling some kernel options are and what packages they affect.
What we have
When in the Nerves system shell or when manually building the system from Linux, you can run
make linux-update-defconfig
ormake linux-update-config
to save the configuration defaults or all configuration settings. Configuration help is available viamake linux-menuconfig
. It may not be too hard to write our own Kconfig parser to extract descriptions and dependencies in support of better documentation, but I'm not sure if that's really needed.I started writing up the changes I made to convert the Raspbian kernel config to a Nerves one with the 4.9 work, but it got unwieldy.
The text was updated successfully, but these errors were encountered: