An opensource OpenWrt variant for mainland China users.
Go to file
Jo-Philipp Wich 2cdaf80c83 ucode: update to latest Git HEAD
0f022aa lib: increase refcount when returning cached module instance
c9e68bb lib: introduce resolver library
9041e24 lib: fix uninitialized memory access on handling %J string formats
4ee06d8 syntax: introduce optional chaining operators
ce4a7d9 vm: reset callframes before invoking unhandled exception handler
218e822 vm: clear exception information before calling managed code functions
5b908bd ubus: properly handle signed 64bit values too
e43b751 ubus: fix handling signed 16bit and 32bit integers
137428f nl80211: fix issues spotted by static code analyzer
b9d4f61 nl80211: treat signal attr values as signed integers
9a7c355 nl80211: expose sta_info attributes
bb358d9 lib: introduce Linux 802.11 netlink binding
914f54c types: fix invalid memory access on setting non-contiguous array indexes
631f00d main: fix leaking module name when processing -m flag
e55188b compiler: properly handle jumps to offset 0
98c4147 tests: support specifying cmdline args in testcase files
64e4f68 types: fix formatting escape sequences for 8 bit chars
dd86e1d rtnl: automatically derive message family from certain address attrs
74fdb97 rtnl: expose IPv4 and IPv6 devconfig information
7fa1008 rtnl: allow reply nla payloads to be smaller than headsize
cbae3cb lib: introduce Linux route netlink binding
e6dd389 ci: adjust build prereqs for GitHub as well
07ae165 ci: add libnl-tiny to prereqs

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2021-10-29 00:25:17 +08:00
config uclibc++: remove 2021-10-26 23:50:42 +08:00
include kernel: bump to 4.9.288, 4.14.253, 4.19.214 2021-10-28 11:15:06 +08:00
LICENSES LICENSE: sync with upstream 2021-02-16 14:19:09 +08:00
package ucode: update to latest Git HEAD 2021-10-29 00:25:17 +08:00
scripts scripts/gen_image_generic.sh: fix more shellcheck warnings 2021-10-14 21:25:07 +08:00
target kernel: bump to 4.9.288, 4.14.253, 4.19.214 2021-10-28 11:15:06 +08:00
toolchain tools/llvm-bpf: add llvm+clang build suitable for compiling code to eBPF 2021-10-24 00:08:23 +08:00
tools tools/isl: update the download URL 2021-10-24 00:16:22 +08:00
.gitattributes fix permisson 2019-08-16 15:09:42 +08:00
.gitignore .gitignore: ignore any .vscode* file 2021-07-03 17:25:40 +08:00
BSDmakefile build: use SPDX license tags 2021-02-06 12:07:10 +08:00
Config.in build: use SPDX license tags 2021-02-06 12:07:10 +08:00
CONTRIBUTED.md CONTRIBUTED: remove reference to luci-theme-edge 2021-07-02 16:39:07 +08:00
COPYING LICENSE: sync with upstream 2021-02-16 14:19:09 +08:00
feeds.conf.default feeds/routing: switch to ImmortalWrt's openwrt-18.06 branch 2021-10-22 22:26:07 +08:00
Makefile Revert "build: replace which with Bash command built-in" 2021-03-04 12:10:58 +08:00
README.md README: update domain for build-scripts 2021-09-11 04:12:11 +08:00
rules.mk build: add ninja build tool and make it available for cmake 2021-06-13 11:59:14 +08:00

logo

Project ImmortalWrt

ImmortalWrt is a fork of OpenWrt, with more packages ported, more devices supported, better performance, and special optimizations for mainland China users.
Compared the official one, we allow to use hacks or non-upstreamable patches / modifications to achieve our purpose. Source from anywhere.

Default login address: http://192.168.1.1 or http://immortalwrt.lan, username: root, password: password.

Development

To build your own firmware you need a GNU/Linux, BSD or MacOSX system (case sensitive filesystem required). Cygwin is unsupported because of the lack of a case sensitive file system.

Requirements

To build with this project, Ubuntu 18.04 LTS is preferred. And you need use the CPU based on AMD64 architecture, with at least 4GB RAM and 25 GB available disk space. Make sure the Internet is accessible.

The following tools are needed to compile ImmortalWrt, the package names vary between distributions.

  • Here is an example for Ubuntu users:

    • Method 1:

      Setup dependencies via APT
      sudo apt update -y
      sudo apt full-upgrade -y
      sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
        bzip2 ccache cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib g++-multilib \
        git git-core gperf haveged help2man intltool lib32gcc1 libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev \
        libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncurses5-dev libreadline-dev libssl-dev libtool libz-dev \
        lrzsz mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \
        python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim \
        wget xmlto xxd zlib1g-dev
      
    • Method 2:

      curl -s https://build-scripts.immortalwrt.eu.org/init_build_environment.sh | sudo bash
      
  • You can also download and use prebuilt container directly:
    See #Quickstart - Build image via OPDE

Note:

  • For the for love of god please do not use ROOT user to build your image.
  • Using CPUs based on other architectures should be fine to compile ImmortalWrt, but more hacks are needed - No warranty at all.
  • You must not have spaces in PATH or in the work folders on the drive.
  • If you're using Windows Subsystem for Linux (or WSL), removing Windows folders from PATH is required, please see Build system setup WSL documentation.
  • Using macOS as the host build OS is not recommended. No warranty at all. You can get tips from Build system setup macOS documentation.
    • As you're building ImmortalWrt, patching or disabling UPX tools is also required.
  • For more details, please see Build system setup documentation.

Quickstart

  • Method 1:

    1. Run git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt to clone the source code.
    2. Run cd immortalwrt to enter source directory.
    3. Run ./scripts/feeds update -a to obtain all the latest package definitions defined in feeds.conf / feeds.conf.default
    4. Run ./scripts/feeds install -a to install symlinks for all obtained packages into package/feeds/
    5. Run make menuconfig to select your preferred configuration for the toolchain, target system & firmware packages.
    6. Run make to build your firmware. This will download all sources, build the cross-compile toolchain and then cross-compile the GNU/Linux kernel & all chosen applications for your target system.
  • Method 2:

    Build image via OPDE
    • Pull the prebuilt container:

      docker pull immortalwrt/opde:base
      # docker run --rm -it immortalwrt/opde:base
      
    • For Linux User:

      git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt && cd immortalwrt
      docker run --rm -it \
          -v $PWD:/openwrt \
        immortalwrt/opde:base zsh
      ./scripts/feeds update -a && ./scripts/feeds install -a
      
    • For Windows User:

      1. Create a volume 'immortalwrt' and clone ImmortalWrt source into volume.
      docker run --rm -it -v immortalwrt:/openwrt immortalwrt/opde:base git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt .
      
      1. Enter docker container and update feeds.
      docker run --rm -it -v immortalwrt:/openwrt immortalwrt/opde:base
      ./scripts/feeds update -a && ./scripts/feeds install -a
      
      • Tips: ImmortalWrt source code can not be cloned into NTFS filesystem (symbol link problem during compilation), but docker volume is fine.
    • Proxy Support:

      docker run --rm -it \
        -e   all_proxy=http://example.com:1081 \
        -e  http_proxy=http://example.com:1081 \
        -e https_proxy=http://example.com:1081 \
        -e   ALL_PROXY=http://example.com:1081 \
        -e  HTTP_PROXY=http://example.com:1081 \
        -e HTTPS_PROXY=http://example.com:1081 \
        -v $PWD:/openwrt \
        immortalwrt/opde:base zsh
      

      Recommand http rather socks5 protocol

      IP can not be localhost or 127.0.0.1

    • For Windows User, binary is still in volume. It can be copied to outside via followed command:

      docker run --rm -v <D:\path\to\dir>:/dst -v openwrt:/openwrt -w /dst immortalwrt:base cp /openwrt/bin /dst
      

      Make sure D:\path\to\dir has been appended in File Sharing.

The main repository uses multiple sub-repositories to manage packages of different categories. All packages are installed via the ImmortalWrt package manager called opkg. If you're looking to develop the web interface or port packages to ImmortalWrt, please find the fitting repository below.

Support Information

For a list of supported devices see the OpenWrt Hardware Database

Documentation

Support Community

Sponsors

Dler Cloud

License

ImmortalWrt is licensed under GPL-3.0-only.