Another improved modular Linux kernel for the Gemini PDA

The time has come for another modular linux kernel for the Gemini PDA. The linux kernel binaries I have shared before were lacking proper USB pendrive support. Whenever a drive got connected it froze and the device begun behaving strange, in example it has been impossible to open applications afterwards. Furthermore, in the meanwhile the Geminis keyboard ghosting issue got fixed in the updated kernel sources. Thus I have decided to build another kernel with the following changes:

•Enabled modules for more USB devices
•Enabled FB_UDL and DRM_UDL (for displaylink devices)
•Disabled SCSI_MQ_DEFAULT (for getting USB pendrives working again)

The changes and dependencies result in this kernel configuration: gemini-3.18.41+-config.gz (11)

For the build, again the updated kernel source the from https://github.com/gemian/gemini-linux-kernel-3.18 has been used.

Again the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom have been added.

Those who do not want to go through the build themselves can download my prebuild kernel from here:

Kernel Image: modules_firmware-gemini-3.18.41+.tar.gz (11)
Modules: linux_boot-gemini-3.18.41+.img (13)

Instructions for flashing the image can be found on: support.planetcom.co.uk. Make sure to use a proper scatter file, in example the one that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but linux_boot (or boot if you boot into linux as default). For the linux_boot respectively the boot partition select the downloaded kernel image. With newer scatter files the boot partition names have changed to boot, boot1 and boot2. Select the appropriate  one for your Gemini.

Alternatively you can flash the kernel using dd:

dd if=linux_boot-gemini-3.18.41+.img of=/dev/block/disk/by-partlabel/boot

If Linux is not your primary operating system on the Gemini use boot1 or boot2 instead, depending on your partition layout.

After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device, USB pendrives and other SCSI like devices like HDDs and DVD drives/burners should work again when attached to the Geminis USB ports.

Regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Improved modular Linux kernel for the Gemini PDA

The linux kernel binary I have shared in the article Modular Linux kernel for the Gemini PDA turned out to lack some important features, like not supporting the ethernet port of the Planet Computers USB hub. Thus a second version of the kernel had to be built.

In addition to the original changes, the following changes to the kernel configuration have been performed:

•Enabled modules for more USB devices
•Disabled CONFIG_MTK_CPU_HOTPLUG_DEBUG_0 (for less pollution in dmesg)
•Disabled CONFIG_MTK_CPU_HOTPLUG_DEBUG_3 (for less pollution in dmesg)
•Enabled  CONFIG_RCU_FAST_NO_HZ (for improved energy efficiency)
•Enabled CONFIG_RCU_BOOST (for better performance)

Originally I intended to also disable CONFIG_MTK_CPU_HOTPLUG_DEBUG_2, but then the build fails with an error regarding a static struct declaration.

The changes result in this kernel configuration: gemini-3.18.41+-config.gz (63)

For the build, the updated kernel source the from https://github.com/gemian/gemini-linux-kernel-3.18 with the fix for the Bluetooth vulnerability cve-2017-1000251 has been used.

Again the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom have been added.

Those who do not want to go through the build themselves can download my prebuild kernel from here:

Kernel Image: linux_boot-gemini-3.18.41+.img (78)
Modules: modules_firmware-gemini-3.18.41+.tar.gz (82)

Downloads outdated, new version at: Another improved modular Linux kernel for the Gemini PDA

Instructions for flashing the image can be found on: support.planetcom.co.uk. Make sure to use the same scatter file that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but linux_boot (or boot if you boot into linux as default). For the linux_boot respectively the boot partition select the downloaded kernel image. With newer scatter files the boot partition names have changed to boot, boot1 and boot2. Select the appropiate  one for your Gemini.

Alternatively you can flash the kernel using dd:

dd if=linux_boot-gemini-3.18.41+.img of=/dev/block/disk/by-partlabel/boot

If Linux is not your primary operating system on the Gemini use boot1 or boot2 instead, depending on your partition layout.

After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device some more USB peripherals, including the ethernet port of the Planet Computers hub, should work.

Regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Modular Linux kernel for the Gemini PDA

For the Debian Technology Preview image for the Gemini PDA a monolithic kernel has been used. In order to get as many peripherals as possible working a modular kernel is necessary. So I decided to build a custom kernel.

Since the suspend on lid close feature only works with the community kernel, the kernel source from https://github.com/gemian/gemini-linux-kernel-3.18 has been used. After cloning I have followed the instructions on https://github.com/gemian/gemini-keyboard-apps/wiki/KernelCompilation. During kernel configuration I have changed the following options:

•Enabled kernel modules
•Enabled modules for nearly all USB devices
•Enabled modules for nearly all filesystems
•Enabled modules for nearly all encryptions/hashes/compressions
•Enabled multiple options for iptables

Disabled ANDROID_PARANOID_NETWORK (for not having to add the user for every network service to the groups aid_inet_raw and aid_inet)
•Enabled CONFIG_JUMP_LABEL (for better performance)
•Enabled CONFIG_TASK_IO_ACCOUNTING (for using iotop)

This results in this kernel configuration: gemini-3.18.41+-config.gz (126)

After building the kernel modules for the iptables MIRROR target (will not be usable with the default iptables version on the Gemini) and frandom have been added.

Those who do not want to go through this themselves can download my kernel from here:

Kernel Image: linux_boot-gemini-3.18.41+.img (109)
Modules: modules_firmware-gemini-3.18.41+.tar.gz (125)

Downloads outdated, new version at: Improved modular Linux kernel for the Gemini PDA

Instructions for flashing the image can be found on: support.planetcom.co.uk. Make sure to use the same scatter file that has been used for the initial flashing. Using the Download only mode of the flash tool is sufficient. Uncheck all partitions but linux_boot (or boot if you boot into linux as default). For the linux_boot respectively the boot partition select the downloaded kernel image. After flashing, copy the modules archive onto your Gemini and extract it in your root directory:

cd /
tar -xzf /path_to/modules_firmware-gemini-3.18.41+.tar.gz

After rebooting the device should feel a bit smoother and many USB peripherals should work.

Regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

iptables mirror target for linux kernel 4.10

After my last kernel upgrade I tried to build the iptables mirror target published the last time here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. When I tried it with kernel version 4.12 , it did not build anymore with the current linux kernel. This time a struct changed in kernel 4.10 and some functions have got renamed in the kernel 4.11. Thus I had to update the ip_direct_send and ipt_mirror_target functions. You can download the newer release for kernel version 4.10 and probably future kernels here:

MIRROR.4.10.tar.gz (487) gplv3-127x51

The kernel module has been tested with kernel version 4.12.12-gentoo. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.

MIRROR.2.6.13.tar.gz (3134)
MIRROR.2.6.24.tar.gz (3578)
MIRROR.2.6.25.tar.gz (3296)
MIRROR.2.6.28.tar.gz (3345)
MIRROR.2.6.31 (3175)
MIRROR.2.6.35.tar.gz (3100)
MIRROR.2.6.36.tar.gz (3184)
MIRROR.2.6.37.tar.gz (2930)
MIRROR.3.0.7.tar.gz (2615)
MIRROR.3.1.0.tar.gz (2306)
MIRROR.3.3.0.tar.gz (2335)
MIRROR.3.6.0.tar.gz (2019)
gplv3-127x51

regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

iptables mirror target for linux kernel 3.6

After my last kernel upgrade I tried to build the iptables mirror target published the last time here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. When I tried it with kernel version 3.6 , it did not build anymore with the current linux kernel. This time some functions have got removed from the kernel. Thus I had to update the ip_direct_send function. You can download the newer release for kernel version 3.6 and probably future kernels here:

MIRROR.3.6.0.tar.gz (2019) gplv3-127x51

The kernel module has been tested with kernel version 3.7.0-vs2.3.5.1. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.

MIRROR.2.6.13.tar.gz (3134)
MIRROR.2.6.24.tar.gz (3578)
MIRROR.2.6.25.tar.gz (3296)
MIRROR.2.6.28.tar.gz (3345)
MIRROR.2.6.31 (3175)
MIRROR.2.6.35.tar.gz (3100)
MIRROR.2.6.36.tar.gz (3184)
MIRROR.2.6.37.tar.gz (2930)
MIRROR.3.0.7.tar.gz (2615)
MIRROR.3.1.0.tar.gz (2306)
MIRROR.3.3.0.tar.gz (2335)
gplv3-127x51

regards
Jürgen

 

 

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...

iptables mirror target for linux kernel 3.3

After my last kernel upgrade I tried to build the iptables mirror target published here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. When I tried it with kernel version 3.3 , it did not build anymore with the current linux kernel. However, this time only a minor modification has been neccesary. Another header file had to be included and a function name has changed.  You can download the newer release for kernel version 3.3 and probably future kernels here:

MIRROR.3.3.0.tar.gz (2335) gplv3-127x51

The kernel module has been tested with kernel version linux-3.3-vserver-2.3.3.1. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.

MIRROR.2.6.13.tar.gz (3134)
MIRROR.2.6.24.tar.gz (3578)
MIRROR.2.6.25.tar.gz (3296)
MIRROR.2.6.28.tar.gz (3345)
MIRROR.2.6.31 (3175)
MIRROR.2.6.35.tar.gz (3100)
MIRROR.2.6.36.tar.gz (3184)
MIRROR.2.6.37.tar.gz (2930)
MIRROR.3.0.7.tar.gz (2615)
MIRROR.3.1.0.tar.gz (2306)
gplv3-127x51

regards
Jürgen

 

 

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...

udev-182 needs CONFIG_ DEVTMPFS in kernel

After the latest upgrades on my gentoo vserver system running a 3.3.0 Linux  vserver-kernel (vserver-sources-2.3.3.1), the system did not start up properly anymore. No kernel modules got loaded and even the network devices have not been available after a reboot. This is more or less the worst case, since then one has to be physically in front of the machine and can not repair the system via ssh remote login.

The kernel upgrade was not the reason for this,  but the upgrade to udev-182. This is what the log said:

Mar 21 17:20:05 mittelerde /etc/init.d/sshd[5563]: ERROR: cannot start sshd as net.eth0 would not start
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6075]: Udev uses a devtmpfs mounted on /dev to manage devices.
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6076]: This means that CONFIG_DEVTMPFS=y is required
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6077]: in the kernel configuration.
Mar 21 17:20:09 mittelerde /etc/init.d/udev-mount[6067]: ERROR: udev-mount failed to start
Mar 21 17:20:09 mittelerde /etc/init.d/udev[6066]: ERROR: cannot start udev as udev-mount would not start
Mar 21 17:21:06 mittelerde /etc/init.d/net.eth0[6463]: ERROR: interface eth0 does not exist

With the information “CONFIG_DEVTMPFS=y is required” the log contains the necessary hint to get things to work. The CONFIG_DEVTMPFS option had to be enabled in the kernel. Afterwards the kernel has to be recompiled. The option can be found in menuconfig under Device Drivers-> Generic Driver options and is called Maintain a devtmpfs filesystem to mount at /dev.  For getting the devfs automatically mounted at boot time it makes sense to also enable the option Automount devtmpfs at /dev, after the kernel mounted the rootfs (CONFIG_DEVTMPFS_MOUNT).

It is safe to enable these options with older udev versions. Doing so protects your system from not working any more when you get the udev update later.

Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...