standard-readme compliant Donate with Bitcoin Donate with Ethereum

Dragon Kernel

Dragon is a distro kernel replacement built using the best configuration and kernel sources for desktop, multimedia, and gaming workloads. These kernels are not supported and are not appropriate for production use. You assume all risks associated with the use of this kernel.

 The vanilla Linux kernel is a solid, high-quality Ford, Dragon Linux kernel is the latest Porsche model.
Each person has a choice and desires... (c) Andy Lavr


By default, Ubuntu systems run with the Ubuntu kernels provided by the Ubuntu repositories. However it is handy to be able to test with modified upstream kernels to help locate problems in the Ubuntu kernel patches, or to confirm that upstream has fixed a specific issue. To this end i now offer select upstream kernel builds. These kernels are made from modified kernel source but using the Ubuntu kernel configuration files. These are then packaged as Ubuntu .deb files for simple installation.

Ubuntu’s stock Linux kernel is fine for most users, but because Ubuntu follows a six-month release cycle, their kernels are always a release or three behind upstream. This can cause problems for users attempting to install Ubuntu on brand new hardware, or worse, force ultra-nerds to wait to play with the latest and greatest new kernel features!

All workstations that I use today — a Dell Precision M6600 (Sandy Bridge), Dell Inspiron N5010 (Westmere), Hewlett-Packard HP Z230 SFF Workstation/1906 (Haswell), - boots Dragon kernels instead. Dragon’s kernels mirror the upstream development cycle, and as a bonus, include a number of exciting optimizations and patches to improve performance and expose up-and-coming features.

One recent patch pulls in the ability to utilize architecture-specific GCC optimizations when compiling a kernel. In general, compiler optimizations may not have much effect on runtime performance, however with something as foundational as a kernel, tiny improvements might add up quickly.

The Linux kernel is a very large piece of software. It contains drivers and special handling for all sorts of disparate hardware combinations. By and large, this is a good thing; it allows all sorts of different machines to boot a Linux kernel without undo fiddling. Pre-compiled kernels — like Ubuntu stock or Dragon — keep most of this code around because they cannot anticipate the kind of hardware their users might be using.

Dragon Kernel semantic versioning and give your version numbers meaning:

  • Dragon Kernel no longer uses the stable version of the Linux kernel, all builds are based only on the mainline version.
major.minor[.maintenance-build]  (Example: 5.3.39-dragon)

major.minor is mainline kernel version,  maintenance build is Dragon kernel version.

Main Features

  • Experience a whole new way to interact with your PC like never before.
  • Full kernel adaptation to version Ubuntu Disco.
  • Full kernel adaptation to build GCC 9.1+
  • Optimized to take full advantage of high-performance.
  • Supports all recent 64-bit versions of Debian and Ubuntu-based systems.
  • Tuned CPU for Intel i5/i7/i9/Atom and AMD platform.
  • BMQ+ CPU Scheduler & Multi-Queue I/O Block Layer w/ BFQ-MQ for smoothness and responsiveness.
  • Caching, Virtual Memory Manager and CPU Governor Improvements.
  • General-purpose Multitasking Kernel.
  • Built on the latest GCC 9.1+
  • DRM Optimized Performance.
  • Intel CPUFreq (P-State passive mode).
  • AUFS, APFS, exFAT, BFQ and Ureadahead support available.
  • Fixed and tune BTRFS file system

New features Dragon kernel distribution with custom settings:

  • FUTEX for PROTON and WINE: New futex operation, called FUTEX_WAIT_MULTIPLE.
  • AVL Interactive Tuning: Tunes the kernel for responsiveness at the cost of throughput and power usage.
  • BMQ+ CPU Scheduler: Fair process scheduler for gaming, multimedia, and real-time loads.
  • Preemptible tree-based hierarchical RCU: RCU implementation for real-time systems.
  • Hard Kernel Preemption: Most aggressive kernel preemption before requiring real-time patches. Guarantees responsive system under high intensity mixed workload scenarios.
  • Budget Fair Queue: Proper disk scheduler optimized for desktop usage, high throughput / low latency.
  • TCP BBR Congestion Control: Fast congestion control, maximizes throughput, guaranteeing higher speeds than Cubic.
  • Smaller TX Net Queues: Reduced queue size on network devices to combat buffer bloat.
  • Ubuntu ureadahead Support: Compatible with Ubuntu’s readahead.
  • Binary Compatibility Cross Distro: Compatible with Debian Testing and newer as well as latest Ubuntu. Worst case, a package rebuild will be required on older distributions.
  • Distribution Kernel Drop-in Replacement: Proper distribution style configuration supporting broadest selection of hardware. Paravirtualization options enabled to reduce overhead under virtualization.
  • Minimal Debugging: Minimum number of debug options enabled to increase kernel throughput.

Full security support


View testing result log

Download Spectre and Meltdown mitigation detection tool

  • Indirect Branch Restricted Speculation (IBRS)
  • Indirect Branch Prediction Barrier (IBPB)

  • Spectre Variant 1, bounds check bypass
  • Spectre Variant 2, branch target injection
  • Variant 3, Meltdown, rogue data cache load
  • Variant 3a, rogue system register read
  • Variant 4, speculative store bypass
  • Foreshadow (SGX), L1 terminal fault
  • Foreshadow-NG (OS), L1 terminal fault
  • Foreshadow-NG (VMM), L1 terminal fault
  • Fallout, microarchitectural store buffer data sampling (MSBDS)
  • ZombieLoad, microarchitectural fill buffer data sampling (MFBDS)
  • RIDL, microarchitectural load port data sampling (MLPDS)
  • RIDL, microarchitectural data sampling uncacheable memory (MDSUM)

BMQ+ CPU Scheduler


  • BMQ project from Alfred Chen (BMQ).

Dragon kernel version uses a modified version of BMQ+.

Its features modified version BMQ+:

  1. Fixes for BMQ scheduler for kernel 5.3.y
  2. Cleaning up active_mm reference counting

Its features original version BMQ:

BMQ(BitMap Queue) Scheduler is a band new CPU scheduler development from PDS and inspired by the scheduler in zircon project(google).

For more design detail of BMQ, pls reference to Documentation/scheduler/sched-BMQ.txt in the repository.

Here is the list of major user visible difference of BMQ with PDS.

  1. NOT support SCHED_ISO, pls use “nice –20” instead.
  2. NO rr_interval, but a compile time kernel config CONFIG_SCHED_TIMESLICE(default 4ms) is available for similar usage. Yet, it is strongly NOT recommended to change it.
  3. “yield_type” is still supported, but only value 0, 1(default) are available, 2 is still accept from interface, but it’s same as value 1. (Will be changed when yield implementation is finalized)
  4. BATCH and IDLE tasks are treated as the same policy. They compete CPU with NORMAL policy tasks, but they just don’t boost. To control the priority of NORMAL/BATCH/IDLE tasks, simply use nice level.
  5. BMQ will auto adjust(boost/deboost) task priority within +/- MAX_PRIORITY_ADJ(default 4) ranges. For example, from top/htop and other cpu monitors program, task of nice level 0 may be saw running as nice in cpu time accounting.

BMQ has been running smoothly on 3 machines(NUC Desktop, NAS file server and 7*24 raspberry pi) for ~1 month. Suspend/Resume on NUC Desktop and NAS file server are tested. BMQ shows promising in Desktop activity and kernel compilation sanity comparing to PDS.

BMQ is simple in design compare to PDS and result in ~20KB less in patch size and ~4KB in compressed kernel binary size.

Advanced multi layered Unification File System



AUFS (short for advanced multi-layered unification filesystem) implements a union mount for Linux file systems. The name originally stood for AnotherUnionFS until version 2.

  • The module AUFS is integrated into the kernel.

Apple File System



Apple File System (APFS) is a proprietary file system for macOS High Sierra and later version.

  • The module APFS (read only) is integrated into the kernel.

exFAT - Extended File Allocation Table


Wiki exFAT

Linux read/write kernel driver for the exFAT(FAT64), FAT12, FAT16 and vfat (FAT32) file systems

exFAT can be used where NTFS is not a feasible solution (due to data-structure overhead), but a greater file-size limit than the standard FAT32 file system (i.e. 4 GiB) is required. exFAT has been adopted by the SD Card Association as the default file system for SDXC cards larger than 32 GiB.

  • The module (exFAT v1.2.24-dragon) is integrated into the kernel.

  • Full adaptation to Kernel v5

  • Support exFat capacity more than 2TB

Enable exFAT module and install exfat-utils:

Add to /etc/initramfs-tools/modules:


For filesystem creation and manipulation beyond that of the mount command it is necessary to install the exfat-utils package:

$ sudo add-apt-repository ppa:wip-kernel/exfat-utils
$ sudo apt-get update
$ sudo apt install exfat-utils
$ sudo apt purge exfat-fuse

Usage, formatting:

To create an exFAT file system, use mkfs.exfat (or the mkexfatfs command, which is synonymous):

# mkfs.exfat
mkexfatfs 1.3.0
Usage: mkfs.exfat [-i volume-id] [-n label] [-p partition-first-sector] [-s sectors-per-cluster] [-V] <device>

For instance, to create it on a removable device present at /dev/sde1 while assigning "Flash" as the file system label:

# mkfs.exfat -n Flash /dev/sde1

New version IPTABLES for Dragon Kernel


  • Fixes work IPTABLES for Dragon Kernel

It is strongly recommended to use the iptables package only from the PPA Linux WIP-Kernel team:

$ sudo add-apt-repository ppa:wip-kernel/iptables
$ sudo apt update
$ sudo apt dist-upgrade -y

Package version - iptables (1.8.2)

New version HAVEGED for Dragon Kernel


HAVEGED - Generate random numbers and feed linux random device.

The HAVEGE (HArdware Volatile Entropy Gathering and Expansion) algorithum harvests the indirect effects of hardware events on hidden processor state (caches, branch predictors, memory translation tables, etc) to generate a random sequence. The effects of interrupt service on processor state are visible from userland as timing variations in program execution speed. Using a branch-rich calculation that fills the processor instruction and data cache, a high resolution timer source such as the processor time stamp counter can generate a random sequence even on an “idle” system. In Linux, the hardware events that are the ultimate source of any random number sequence are pooled by the /dev/random device for later distribution via the device interface. The standard mechanism of harvesting randomness for the pool may not be sufficient to meet demand, especially on those systems with high needs or limited user interaction. Haveged provides a daemon to fill /dev/random whenever the supply of random bits in /dev/random falls below the low water mark of the device.

Haveged also provides a direct file system interface to the collection mechanism that is also useful in other circumstances where access to the dev/random interface is either not available or inappropriate.

It is strongly recommended to use the haveged package only from the PPA Linux WIP-Kernel team:

$ sudo add-apt-repository ppa:wip-kernel/hvgd
$ sudo apt update
$ sudo apt install haveged

Package version - haveged (1.9.4)

Kernel tested by LTP

Linux Test Project

Linux Test Project Information

Linux Test Project is a joint project started by SGI, developed and maintained by IBM, Cisco, Fujitsu, SUSE, Red Hat and others, that has a goal to deliver test suites to the open source community that validate the reliability, robustness, and stability of Linux. The LTP testsuite contains a collection of tools for testing the Linux kernel and related features.

View dmesg output

Pre install Dragon Kernel:

Detailed explanation

First Step:

  • strong recomended update microcode for you cpu


Update Intel microcode for use IBRS/IBPB:


  • strong recomended update firmware for you system

Update Firmware for current Dragon kernel:


Update WiFi Firmware for current Dragon kernel:


Copyright © 2019 Dragon Team All rights reserved.