[Samsung Galaxy S10/S10+/S10 5G/E Cross Device Deve] evdenis:
Introduction

Based on samsung sources and android common tree. Supported devices: G970F/N, G973F/N, G975F/N G977B/N, N970F, N975F, N971N, N976B/N. All sources are open on GitHub.

Continuous integration with GitHub Actions set up. This means you can customize the kernel from browser and build the version suitable for you without leaving the browser (see сustomization section).

Features

Customizable build with config presets

Only part of samsung security features disabled (DEFEX, Process Authentification, root restrictions)

Switchable SELinux (by default it's locked in "always enforcing" mode in samsung sources)

Built-in in Magisk v21.1

Various toolchains (cruel,arm,samsung,proton,arter97...) supported

Wireguard for VPN

CIFS for SMB

Iptables TTL and HL editing modules for bypassing tethering restrictions

NTFS module for OTG usb drives

Moro sound module

Boeffla WakeLock Blocker

sdfat driver for vfat and exfat filesystems

reiser4 filesystem added. reiser4progs (https://github.com/CruelKernel/reiser4progs/releases)

DEX cable vendor lock for WQHD resolution removed

ZIP installer with XZ compression

ZIP installer with automatic os_patch_level patching

Build commands (configuration presets) used for V3.9 kernel:

$ ./cruelbuild pack model=<MODEL> name=CRUEL-V3.9 +magisk +nohardening +force_dex_wqhd +ttl +cifs +ntfs +sdfat +nodebug +noaudit +noksm +nomodules +wireguard +usb_serial +sched_powersave +sched_performance +morosound +boeffla_wl_blocker +fake_config +dtb

Where model can be one of G970F/N, G973F/N, G975F/N G977B/N, N970F, N975F, N971N, N976B/N.

Installation Instructions

First of all, TWRP Recovery + multidisabler should be installed in all cases. This is a preliminary step. Backup your existing kernel. You will be able to restore it in TWRP Recovery in case of any problems. Download an *.zip file. Reboot to TWRP. Install > Install ZIP > Flash CruelKernel.zip. Reboot to system.

ChangeLog

V3 - Support for G970F, G975F, G977B, N970F, N975F, N976B models.

V3.1 - Boeffla wl blocker, BTB5 sources for N10 models.

V3.2 - Magisk update v20.4, wireguard update, sdfat for VFAT, exFAT, ntfs module.

V3.3 - CTC9 sources. The camera will work only on CTC9 based firmwares.

V3.4 - CTE9/CTF1 sources. Small fixes, overall improvements, more customization configs for building on github.

V3.7 - Various toolchains added (arm, arter97, samsung, proton, system, default)

V3.8 - DTI1 sources added for N971N, N976N.

DTH7 sources added for G977N model.

Some debugging flags disabled. performance config fixed (-O3).

Cruel toolchain added (gcc 10.2 with PGO/LTO and inlining params from gcc 9 branch)

simple_lmk added (github.com/kerneltoast/simple_lmk)

V3.9 - G977N, G973N models added.

G970F/N, G975F/N, G973F/N updated to DTJA.

N976B, N970F, N975F updated to DTJ4.

Magisk updated to v21.1 version.

Vendor lock for dp cable for DEX removed (thanks, fart1-git).

Zip installer implemented.

Automted os_patch_level level patching in installer (https://github.com/CruelKernel/clone_header).

Downloads

OS Patch Level: 2020-11

V3.9 Download folder

Sources

If you like the work and want to help me with hosting: https://www.paypal.me/evdenis Hitting star button on GitHub and thanks button on XDA really helps to stay motivated.

Instructions here could be outdated a bit, one can find the latest version in project's readme at github.

How to customize the kernel build

It's possible to customize the kernel and build it from the browser. First of all, create and account on GitHub. Next, fork this repository. Switch to the "Actions" tab and activate GitHub Actions. At this step you've got your own copy of the sources and you can build it with GitHub Actions. You need to open github actions configuration file (.github/workflows/main.yml) and edit it from the browser. For example, to alter the kernel configuration you need to edit lines:

- name: Kernel Configure
run: |
./build config
model=G973F
name="CRUEL-V3.3"
+magisk
+nohardening
+ttl
+wireguard
+cifs
+sdfat
+ntfs
+tcp_cibuc
+morosound
+boeffla_wl_blocker

First of all, you need to change G973F model to the model of your phone. Supported models: G970F/N, G973F/N, G975F/N G977B/N, N970F, N975F, N971N, N976B/N.

You can change the name of the kernel by replacing

name="CRUEL-V3"

with, for example,

name="my_own_kernel"

. You can remove wireguard from the kernel if you don't need it by changing

"+"

to

"-"

or by removing the

"+wireguard"

line and

""

on the previous line. OS patch date can be changed with

os_patch_level=2020-02

argument, the default current date is in build.mkbootimg.G973F file.

Available configuration presets can be found at kernel/configs folder. Only the *.conf files prefixed with "cruel" are meaningful. For example:

+magisk - integrates magisk into the kernel. This allows to have root without booting from recovery. Enabled by default.

magisk+canary - integrates canary magisk into the kernel.

bfq - enable bfq I/O scheduler in the kernel.

sched_... - enable various (conservative, ondemand, powersave, userspace, performance) CPU schedulers in the kernel.

ttl - adds iptables filters for altering ttl values of network packets. This helps to bypass tethering blocking in mobile networks.

wireguard - adds wireguard VPN module to the kernel.

cifs - adds CIFS (SMB) support.

tcp_cubic - use CUBIC as default TCP congestion control.

tcp_westwood - use WestWood as default TCP congestion control.

sdfat - use sdfat for exFAT and VFAT filesystems.

ntfs - enable ntfs filesystem support (read only).

boeffla_wl_blocker - enable boeffla wakelock blocker module.

morosound - enable moro sound control module.

+nohardening - removes Samsung kernel self-protection mechanisms. Potentially can increase the kernel performance. Enabled by default. Disable this if you want to make your system more secure.

nohardening2 - removes Android kernel self-protection mechanisms. Potentially can increase the kernel performance. Don't use it if you don't know what you are doing. Almost completely disables kernel self-protection. Very insecure.

nodebug - remove debugging information from the kernel.

noksm - disable Kernel Samepage Merging (KSM).

nomodules - disable loadable modules support.

noaudit - disable kernel auditing subsystem.

300hz - increases kernel clock rate from 250hz to 300hz. Potentially can improve ui responsiveness.

1000hz - increases kernel clock rate from 250hz to 1000hz. Potentially can improve ui responsiveness.

For example, you can alter default configuration to something like:

- name: Kernel Configure
run: |
./build config
os_patch_level=2020-12
model=G975F
name="OwnKernel"
+magisk+canary
+wireguard
+nohardening
+1000hz

After editing the configuration in the browser, save it and commit. Next, you need to switch to the "Actions" tab. At this step you will find that GitHub starts to build the kernel. You need to wait about 25-30 mins while github builds the kernel. If the build is successfully finished, you will find your boot.img in the Artifacts section. Download it, unzip and flash.

To keep your version of the sources in sync with main tree, please look at one of these tutorials:

How can I keep my fork in sync without adding a separate remote?

How do I update a GitHub forked repository?

Support

This thread. Feature requests accepted.

Telegram (testing and intermediate releases).

GitHub Pull Requests if you want to contribute.

Credits

Samsung for kernel sources

fart1-git for disabling DEX cable vendor lock

corsicanu for default blocklist of wakelocks for boeffla_wl_blocker driver

Nico (@NicoMax2012) for porting moro sound module

bamsbamx for porting boeffla_wakelock_blocker

thehacker911 for general improvements and advices

ExtremeGrief for overall improvements, porting maple scheduler

geiti94 for his advices

topjohnwu for Magisk

franciscofranco for FK Kernel Manager

and testers.

I'm sorry if I missed someone, just write me and I will update the list.

XDA:DevDB Information

[KERNEL] CRUEL KERNEL S10/Note10, Kernel for the Samsung Galaxy S10

Contributors

evdenis, evdenis

Source Code: https://github.com/CruelKernel/samsung-exynos9820

Kernel Special Features:

Version Information

Status: Testing

Current Stable Version: v3.9

Stable Release Date: 2020-12-01

Created 2020-03-08

Last Updated 2020-12-01