OSDN Git Service

Merge Offcial Source
[immortalwrt/immortalwrt.git] / README.md
1 <img src="https://avatars.githubusercontent.com/u/53193414?s=200&v=4" alt="logo" width="200" height="200" align="right">
2
3 # Project ImmortalWrt
4
5 ImmortalWrt is a fork of [OpenWrt](https://openwrt.org), with more packages ported, more devices supported, better performance, and special optimizations for mainland China users.<br/>
6 Compared the official one, we allow to use hacks or non-upstreamable patches / modifications to achieve our purpose. Source from anywhere.
7
8 Default login address: http://192.168.1.1 or http://immortalwrt.lan, username: __root__, password: __password__.
9
10 ## Development
11 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.<br/>
12
13   ### Requirements
14   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.
15
16   The following tools are needed to compile ImmortalWrt, the package names vary between distributions.
17
18   - Here is an example for Ubuntu users:<br/>
19     - Method 1:
20       <details>
21         <summary>Setup dependencies via APT</summary>
22
23         ```bash
24         sudo apt update -y
25         sudo apt full-upgrade -y
26         sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
27           bzip2 ccache cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib g++-multilib \
28           git gperf haveged help2man intltool lib32gcc1 libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
29           libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
30           mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \
31           python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
32           vim wget xmlto xxd zlib1g-dev
33         ```
34       </details>
35     - Method 2:
36       ```bash
37       curl -s https://build-scripts.immortalwrt.eu.org/init_build_environment.sh | sudo bash
38       ```
39
40   - You can also download and use prebuilt container directly:<br/>
41     See #Quickstart - Build image via OPDE
42
43   Note:
44   - For the for love of god please do __not__ use ROOT user to build your image.
45   - Using CPUs based on other architectures should be fine to compile ImmortalWrt, but more hacks are needed - No warranty at all.
46   - You must __not__ have spaces in PATH or in the work folders on the drive.
47   - If you're using Windows Subsystem for Linux (or WSL), removing Windows folders from PATH is required, please see [Build system setup WSL](https://openwrt.org/docs/guide-developer/build-system/wsl) documentation.
48   - Using macOS as the host build OS is __not__ recommended. No warranty at all. You can get tips from [Build system setup macOS](https://openwrt.org/docs/guide-developer/build-system/buildroot.exigence.macosx) documentation.
49     - As you're building ImmortalWrt, patching or disabling UPX tools is also required.
50   - For more details, please see [Build system setup](https://openwrt.org/docs/guide-developer/build-system/install-buildsystem) documentation.
51
52   ### Quickstart
53   - Method 1:
54     1. Run `git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt` to clone the source code.
55     2. Run `cd immortalwrt` to enter source directory.
56     3. Run `./scripts/feeds update -a` to obtain all the latest package definitions defined in feeds.conf / feeds.conf.default
57     4. Run `./scripts/feeds install -a` to install symlinks for all obtained packages into package/feeds/
58     5. Run `make menuconfig` to select your preferred configuration for the toolchain, target system & firmware packages.
59     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.
60
61   - Method 2:
62     <details>
63       <summary>Build image via OPDE</summary>
64
65       - Pull the prebuilt container:
66         ```bash
67         docker pull immortalwrt/opde:base
68         # docker run --rm -it immortalwrt/opde:base
69         ```
70
71       - For Linux User:
72         ```bash
73         git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt && cd immortalwrt
74         docker run --rm -it \
75             -v $PWD:/openwrt \
76           immortalwrt/opde:base zsh
77         ./scripts/feeds update -a && ./scripts/feeds install -a
78         ```
79
80       - For Windows User:
81         1. Create a volume 'immortalwrt' and clone ImmortalWrt source into volume.
82           ```bash
83           docker run --rm -it -v immortalwrt:/openwrt immortalwrt/opde:base git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt .
84           ```
85         2. Enter docker container and update feeds.
86           ```bash
87           docker run --rm -it -v immortalwrt:/openwrt immortalwrt/opde:base
88           ./scripts/feeds update -a && ./scripts/feeds install -a
89           ```
90         - Tips: ImmortalWrt source code can not be cloned into NTFS filesystem (symbol link problem during compilation), but docker volume is fine.
91
92       - Proxy Support:
93         ```bash
94         docker run --rm -it \
95           -e   all_proxy=http://example.com:1081 \
96           -e  http_proxy=http://example.com:1081 \
97           -e https_proxy=http://example.com:1081 \
98           -e   ALL_PROXY=http://example.com:1081 \
99           -e  HTTP_PROXY=http://example.com:1081 \
100           -e HTTPS_PROXY=http://example.com:1081 \
101           -v $PWD:/openwrt \
102           immortalwrt/opde:base zsh
103         ```
104
105         > Recommand `http` rather `socks5` protocol
106         >
107         > IP can not be `localhost` or `127.0.0.1`
108
109       - For Windows User, binary is still in volume. It can be copied to outside via followed command:
110         ```bash
111         docker run --rm -v <D:\path\to\dir>:/dst -v openwrt:/openwrt -w /dst immortalwrt:base cp /openwrt/bin /dst
112         ```
113         > Make sure `D:\path\to\dir` has been appended in [File Sharing](https://docs.docker.com/docker-for-windows/#file-sharing).
114
115     </details>
116
117   ### Related Repositories
118   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.
119   - [LuCI Web Interface](https://github.com/immortalwrt/luci): Modern and modular interface to control the device via a web browser.
120   - [ImmortalWrt Packages](https://github.com/immortalwrt/packages): Community repository of ported packages.
121   - [OpenWrt Routing](https://github.com/openwrt/routing): Packages specifically focused on (mesh) routing.
122   - [CONTRIBUTED.md](https://github.com/immortalwrt/immortalwrt/blob/master/CONTRIBUTED.md): the 3rd-party packages we introduced.
123
124 * [OpenWrt Video](https://github.com/openwrt/video): Packages specifically
125   focused on display servers and clients (Xorg and Wayland).
126
127 ## Support Information
128 For a list of supported devices see the [OpenWrt Hardware Database](https://openwrt.org/supported_devices)
129   ### Documentation
130   - [Quick Start Guide](https://openwrt.org/docs/guide-quick-start/start)
131   - [User Guide](https://openwrt.org/docs/guide-user/start)
132   - [Developer Documentation](https://openwrt.org/docs/guide-developer/start)
133   - [Technical Reference](https://openwrt.org/docs/techref/start)
134
135   ### Support Community
136   - Support Chat: group [@ctcgfw_openwrt_discuss](https://t.me/ctcgfw_openwrt_discuss) on [Telegram](https://telegram.org/).
137   - Support Chat: group [#immortalwrt](https://matrix.to/#/#immortalwrt:matrix.org) on [Matrix](https://matrix.org/).
138
139 ## License
140 ImmortalWrt is licensed under [GPL-3.0-only](https://spdx.org/licenses/GPL-3.0-only.html).