• Stars
    star
    128
  • Rank 281,044 (Top 6 %)
  • Language
    C
  • License
    Other
  • Created almost 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Custom Linux kernels for the UniFi Dream Machine

udm-kernel

Custom Linux kernels for the UniFi Dream Machine (Pro) based on the UbiOS stock kernel.

See udm-kernel-tools for instructions on how to run these kernels on your device.

Flavours

This repository offers several kernel flavours for the UniFi Dream Machine (Pro):

Stock

The sources for the stock kernel running on the UDM/P is located at the flavour/stock branch.

We do not offer any pre-built kernels for stock kernels. However, the stock kernel provides the base upon which the other kernel flavours build.

Edge

The edge flavour is located at the master branch and extends the stock kernel with more functionality. In particular, we extend the stock flavour kernel the following features:

  1. Multicast routing
  2. Multipath routing
  3. In-kernel WireGuard VPN support
  4. IP-VLAN, VXLAN and MAC-VLAN tap driver support
  5. CAKE QoS support

The edge flavour targets the most common use-cases for running a custom kernel, but should not behave differently from the stock kernel in default configuration.

Pre-built kernels are available on the Releases page (suffixed with -edge).

Installation

SSH into your UniFi Dream Machine and enter the UniFi OS shell as follows:

unifi-os shell

Select from the Releases page the kernel version you want to install and download the appropriate Debian package. Then, you can install the package as follows:

apt install ./udm-kernel-VERSION-RELEASE_arm64.deb

Important
To actually use these kernels, please visit udm-kernel-tools for instructions.

Contributing

Feel free to open a issue or pull request to this repository if you have a question, suggestion or want to add new functionality to the custom kernels.

If you are adding new functionality to the kernel, please motivate your use-case and think about how it might be useful for other users as well.

Build Process

Prerequisites

Make sure you have the following packages installed:

apt install build-dep libncurses-dev gawk flex bison openssl libssl-dev gcc-aarch64-linux-gnu

It might be that case that more recent versions of GCC have difficulty compiling the kernel without warnings or issues. The pre-built kernels in this repository are built on Ubuntu 18.04 using GCC 7.5.0.

Obtaining the source

Obtain the kernel sources from Github as follows:

git clone https://github.com/fabianishere/udm-kernel
cd udm-kernel

Building

First, prepare the configuration for the kernel. Beforehand, you may add the desired kernel configuration options to .github/config/config.local.udm.

.github/prepare.sh

If you wish to graphically configure the kernel options, pass the -m flag:

.github/prepare.sh -m

Make sure CONFIG_MODULE_FORCE_LOAD is always enabled, in order for the kernel to boot properly.

Once the kernel is configured, build the kernel as follows:

.github/build.sh

Afterwards, you will find the generated Debian packages in the directory above the repository.

More Repositories

1

pam_reattach

Reattach to the user's GUI session on macOS during authentication (for Touch ID support in tmux)
C
683
star
2

brainfuck

Brainfuck interpreter written in C
C
535
star
3

udm-iptv

Helper tool for configuring routed IPTV on the UniFi Dream Machine (Pro)
Shell
423
star
4

pve-edge-kernel

Newer Linux kernels for Proxmox VE 7
Shell
370
star
5

udm-kernel-tools

Tools for bootstrapping custom kernels on the UniFi Dream Machine
Shell
327
star
6

boot2flappy

Flappy Bird as bootable UEFI executable
Assembly
62
star
7

kotlin-plugin-generated

A Kotlin compiler plugin that annotates Kotlin-generated methods for improved coverage reports
Kotlin
35
star
8

brainfuck-java

Interpreter for the original Brainfuck language and its derivatives written in Java.
Java
31
star
9

booklab

Visually recognize the books on your shelf!
Kotlin
23
star
10

udm-unlock

Unlock write-protected disks on the UniFi Dream Machine Pro
C
20
star
11

kexec-mod

Kexec as loadable kernel module for Linux ARM64 kernels
C
16
star
12

jsamp

Library for the Grand Theft Auto San Andreas Multiplayer query mechanism written in Java.
Java
6
star
13

broccoli

A modern vision on the 90's game Log!cal
Java
5
star
14

formula-andy

Formula One Manager written in Java
Java
5
star
15

ktor-oauth2

OAuth2 authorization framework for Ktor
Kotlin
5
star
16

traceur

Raytracing engine written in C++
C++
5
star
17

shadevolution

Genetic Programming for Shader Simplification
Python
4
star
18

hugetable

Re-implementation of Google BigTable in Scala
Scala
4
star
19

logging.js

Lightweight logging library for Node.js based on the java.util.logging library.
JavaScript
4
star
20

nitrogen

Lightweight web framework written in PHP
PHP
4
star
21

sas

Simple streaming audio server in C
C
4
star
22

kaffee

Kaffee is a software project management tool similar to Maven and is written in Coffeescript.
CoffeeScript
4
star
23

edx

Solutions for online courses
F#
4
star
24

slf4n

Simple logging facade for NodeJS allowing the end user to choose the desired logging framework at deployment time.
JavaScript
3
star
25

iconsync

A tool to sync your icon theme on macOS
Swift
3
star
26

udm-shims

Shims for the proprietary kernel modules on the UniFi Dream Machine (Pro)
C
3
star
27

homebrew-personal

Personal Homebrew recipes that are not (yet) available in the official Homebrew repositories
Ruby
3
star
28

trufflephp

GraalVM implementation of the PHP language (WIP)
Kotlin
2
star
29

olympiad

Solutions for the problems of the Dutch Olympiad of Informatics.
Python
2
star
30

vdom.js

Rebuilding React from scratch
JavaScript
2
star
31

kmbridge

In-kernel IGMP Proxy for Linux (WIP)
C
1
star
32

glimpse

Small OpenGL wrapper for modern C++
C++
1
star
33

fastauction

Auctions with Budget Constraints
Kotlin
1
star