Kernel configuration
This page is WIP. |
Changing the kernel configuration
You can change the kernel configuration with pmbootstrap, for the sony-yuga device for example we run:
./pmbootstrap.py menuconfig linux-sony-yuga
This gives you a menu where you can select and deselect all kernel configuration options:
Useful kernel configuration options
Required
These kernel options must be set for pmOS to work.
CONFIG_DEVTMPFS
About
This creates a tmpfs filesystem, and mounts it at bootup and mounts it at /dev. The kernel driver core creates device nodes for all registered devices in that filesystem. All device nodes are owned by root and have the default mode of 0600. Userspace can add and delete the nodes as needed.
Location in menu
Device Drivers --> Generic Driver Options --> Maintain a devtmpfs filesystem to mount at /dev
pmOS specific
This should always be set, otherwise you get this when you try SSH:
PTY allocation request failed on channel 0 -ash: a: unknown operand
CONFIG_DEVTMPFS_MOUNT
About
This will instruct the kernel to automatically mount the devtmpfs filesystem at /dev, directly after the kernel has mounted the root filesystem. The behavior can be overridden with the commandline parameter: devtmpfs.mount=0|1.
Location in menu
Device Drivers --> Generic Driver Options --> Automount devtmpfs at /dev, after the kernel mounted the rootfs
pmOS specific
This option should not be set.
CONFIG_VT
About
If you say Y here, you will get support for terminal devices with display and keyboard devices. These are called "virtual" because you can run several virtual terminals (also called virtual consoles) on one physical terminal. This is rather useful, for example one virtual terminal can collect system messages and warnings, another one can be used for a text-mode user session, and a third could run an X session, all in parallel. Switching between virtual terminals is done with certain key combinations, usually Alt-<function key>.
Location in menu
Device Drivers --> Character Devices --> Virtual Terminal
pmOS specific
This should always be set, otherwise you cannot get virtual terminal over USB.
CONFIG_DM_CRYPT
About
This device-mapper target allows you to create a device that transparently encrypts the data on it.
Location in menu
Does not exist in menu
pmOS specific
This should always be set, required for full disk encyption.
CONFIG_KERNEL_GZIP, CONFIG_KERNEL_XZ, CONFIG_KERNEL_LZO and CONFIG_KERNEL_LZMA
About
- GZIP
- The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed.
- Read more...
- XZ
- XZ uses the LZMA2 algorithm and instruction set specific BCJ filters which can improve compression ratio of executable code. The size of the kernel is about 30% smaller with XZ in comparison to gzip. The speed is about the same as with LZMA: The decompression speed of XZ is better than that of bzip2 but worse than gzip and LZO. Compression is slow.
- Read more...
- LZO
- Its compression ratio is the poorest among the choices. The kernel size is about 10% bigger than gzip; however its speed (both compression and decompression) is the fastest.
- Read more...
- LZMA
- This compression algorithm's ratio is best. Decompression speed is between gzip and bzip2. Compression is slowest. The kernel size is about 33% smaller with LZMA in comparison to gzip.
- Read more...
Location in menu
General Setup --> Kernel compression mode --> Gzip LZMA XZ LZO
pmOS specific
You should set one of these to Y.
- Gzip: Works without specifying anything else.
- LZMA: If kernel compilation fails with this compression type, read Troubleshooting:kernel#Kernel_compilation:_BusyBox_lzma_compression_fails.
- XZ: Make sure to add
xz
tomakedepends
in the APKBUILD of your kernel package. - LZO: If you get
lzop: high compression not compiled in
during compilation of the kernel you probably need this patch.
Optional
These kernel options are optional and for some devices required to fix some issues.
CONFIG_USB_ETH
About
This driver implements Ethernet style communication, in one of several ways:
- The "Communication Device Class" (CDC) Ethernet Control Model. That protocol is often avoided with pure Ethernet adapters, in favor of simpler vendor-specific hardware, but is widely supported by firmware for smart network devices.
- On hardware can't implement that protocol, a simple CDC subset is used, placing fewer demands on USB.
- CDC Ethernet Emulation Model (EEM) is a newer standard that has a simpler interface that can be used by more USB hardware.
RNDIS support is an additional option, more demanding than than subset.
Location in menu
Device Drivers --> USB Support --> USB Gadget Support --> USB Gadget Drivers --> Ethernet Gadget
pmOS specific
Most devices do not need this to be set. If telnet/SSH does not work you can try and set this option to Y.
CONFIG_USB_ETH_RNDIS
About
Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol, and Microsoft provides redistributable binary RNDIS drivers for older versions of Windows.
If you say "y" here, the Ethernet gadget driver will try to provide a second device configuration, supporting RNDIS to talk to such Microsoft USB hosts.
Location in menu
Device Drivers --> USB Support --> USB Gadget Support --> USB Gadget Drivers --> RNDIS Support
pmOS specific
Required if you set CONFIG_USB_ETH
to 'Y'.
CONFIG_MSM_KGSL
About
3D graphics driver. Required to use hardware accelerated OpenGL ES 2.0 and 1.1.
Location in menu
Device Drivers --> Graphics Support --> MSM 3D graphics Driver
pmOS specific
If framebuffer does not work set this to 'N'
CONFIG_CMDLINE
About
Enter arguments here that should be compiled into the kernel image and used at boot time. If the boot loader provides a command line at boot time, it is appended to this string to form the full kernel command line, when the system boots.
Location in menu
General Setup --> Boot options --> Default kernel command string
pmOS specific
No
CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE
About
Build a concatenated zImage/dtb by default
Location in menu
General Setup --> Boot options --> appended device tree blob to zImage
pmOS specific
Set this if your device needs an appended device tree. If you are unsure, use extract-dtb
on an existing kernel image.