Skip to content

Commit

Permalink
i don't need these
Browse files Browse the repository at this point in the history
try morytyann/OpenWrt-mihomo

using kkkgo/UE-DDNS
  • Loading branch information
JohnsonRan committed Jul 17, 2024
1 parent b9d4ba1 commit c8f496f
Show file tree
Hide file tree
Showing 6 changed files with 183 additions and 289 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on:
build_options:
description: 'Build options (separate multiple options with spaces)'
required: false
default: 'BUILD_FAST=y ENABLE_LTO=y ENABLE_MOLD=y ENABLE_LRNG=y ENABLE_BPF=y USE_GCC14=y'
default: 'LAN=172.16.1.1 KERNEL_CLANG_LTO=y USE_GCC15=y ENABLE_LTO=y ENABLE_MOLD=y ENABLE_BPF=y ENABLE_LRNG=y BUILD_FAST=y'
type: string

jobs:
Expand Down Expand Up @@ -71,7 +71,8 @@ jobs:
bash <(curl -sS https://raw.githubusercontent.com/${{ github.repository }}/master/openwrt/build.sh) rc2 ${{ github.event.inputs.device }}
cd openwrt
tags=$(git describe --abbrev=0 --tags)
echo "latest_release=$tags" >>$GITHUB_ENV
kernel=$(curl -s "https://raw.githubusercontent.com/${{ github.repository }}/master/tags/kernel-6.6" | awk -F"LINUX_KERNEL_HASH-| =" '/LINUX_KERNEL_HASH/{print $2}')
echo "latest_release=$tags-k$kernel" >>$GITHUB_ENV
- name: Extensive logs after a failed compilation
working-directory: /builder
Expand All @@ -97,7 +98,6 @@ jobs:
elif [ "${{ github.event.inputs.device }}" = "x86_64" ]; then
cp -a openwrt/bin/targets/x86/*/*-ext4-combined-efi.img.gz rom/
cp -a openwrt/bin/targets/x86/*/*-squashfs-combined-efi.img.gz rom/
cp -a openwrt/bin/targets/x86/*/*-generic-rootfs.tar.gz rom/
cp -a openwrt/bin/targets/x86/*/*-x86-64-generic.manifest info/manifest.txt
cp -a openwrt/bin/targets/x86/*/config.buildinfo info/config.buildinfo
cd rom && sha256sum *gz > ../info/sha256sums.txt
Expand Down
263 changes: 60 additions & 203 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,67 @@
# NanoPi R4S/R5S/R5C & X86_64 OpenWrt 简易构建脚本存档
# opwrt_build_script

### 存档来自:https://init2.cooluc.com
### x86_64 固件下载:

https://github.com/JohnsonRan/opwrt_build_script/releases

```
【首次登陆】
地址:172.16.1.1(默认)
用户:root
密码:空
【分区挂载】
系统 -> 磁盘管理 -> 磁盘 -> 编辑
系统 -> 挂载点
```

---------------

## 基于 Linux 6.6 LTS 固件下载:
#### 存档来自:https://init2.cooluc.com

#### NanoPi R4S: https://r4s.cooluc.com
- 优化系统内核
- [x] Full Cone NAT
- [x] TCP BBRv3
- [x] TCP Brutal
- [x] eBPF
- [x] Shortcut-FE
- [x] RTC 时钟
- [x] O3、LTO、MOLD、LRNG

#### NanoPi R5S/R5C: https://r5s.cooluc.com
| ⚓ 服务 | 🩺 网络 |
| :---- | :---- |
| Watchcat | 网速测试 |
| Mihomo | WireGuard |
| | UPnP |

#### X86_64: https://x86.cooluc.com
------

#### 构建来源: https://github.com/sbwml/builder
### RTC 硬件时钟

---------------
**本固件支持 RTC 硬件时钟读取/同步,当设备断电时,重新通电启动系统时间不会错乱** *(注意:设备需要安装 RTC 电池后使用)*

**首次安装 RTC 电池写入时间命令**

```shell
hwclock -w -f /dev/rtc0
```

**测试时间读取(返回当前时间表示正常)**

```shell
hwclock -f /dev/rtc0
```

## 本地编译环境安装(根据 debian 11 / ubuntu 22)

## 本地编译

### 环境安装(需要 `backports` 源)
```shell
sudo apt-get update
sudo apt-get install -y build-essential flex bison g++ gawk gcc-multilib g++-multilib gettext git libfuse-dev libncurses5-dev libssl-dev python3 python3-pip python3-ply python3-distutils python3-pyelftools rsync unzip zlib1g-dev file wget subversion patch upx-ucl autoconf automake curl asciidoc binutils bzip2 lib32gcc-s1 libc6-dev-i386 uglifyjs msmtp texinfo libreadline-dev libglib2.0-dev xmlto libelf-dev libtool autopoint antlr3 gperf ccache swig coreutils haveged scons libpython3-dev jq
```

##### 安装 [LLVM/CLANG](https://github.com/sbwml/redhat-llvm-project) - 启用 `ENABLE_BPF` / `KERNEL_CLANG_LTO` 时需要
### 安装 [LLVM/CLANG](https://github.com/sbwml/redhat-llvm-project)

```shell
# 下载并解压
Expand All @@ -43,208 +82,26 @@ clang --version
InstalledDir: /opt/clang/bin
```

---------------

### 启用 [Clang/LLVM](https://docs.kernel.org/kbuild/llvm.html) 构建内核
##### 脚本支持使用 Clang/LLVM 构建内核,NanoPi & X86_64 设备将同时启用 LLVM LTO 链接时优化,这会增加编译的时间,但会获得更优的性能
##### 编译环境需要安装 Clang/LLVM 工具链,推荐使用 clang 16~18 版本
##### 只需在构建固件前执行以下命令即可启用 Clang/LLVM 构建内核与内核模块

```
export KERNEL_CLANG_LTO=y
```

### 启用 [GCC13](https://gcc.gnu.org/gcc-13/)/[GCC14](https://gcc.gnu.org/gcc-14/)/[GCC15](https://gcc.gnu.org/gcc-15/) 工具链编译
##### 只需在构建固件前执行以下命令即可启用 GCC13/GCC14/GCC15 交叉工具链

```
# GCC13
export USE_GCC13=y
```

```
# GCC14
export USE_GCC14=y
```

```
# GCC15
export USE_GCC15=y
```

### 启用 [LTO](https://gcc.gnu.org/onlinedocs/gccint/LTO-Overview.html) 优化
##### 只需在构建固件前执行以下命令即可启用编译器 LTO 优化

```
export ENABLE_LTO=y
```

### 启用 [MOLD](https://github.com/rui314/mold) 现代链接器(需要启用 `USE_GCC13=y``USE_GCC14=y``USE_GCC15=y`
##### 只需在构建固件前执行以下命令即可启用 MOLD 链接,如果使用它建议同时启用 LTO 优化

```
export ENABLE_MOLD=y
```

### 启用 [eBPF](https://docs.kernel.org/bpf/) 支持
##### 只需在构建固件前执行以下命令即可启用 eBPF 支持

```
export ENABLE_BPF=y
```

### 启用 [LRNG](https://github.com/smuellerDD/lrng)
##### 只需在构建固件前执行以下命令即可启用 LRNG 内核随机数支持

```
export ENABLE_LRNG=y
```

### 启用 [Glibc](https://www.gnu.org/software/libc/) 库构建 (实验性)
##### 启用 glibc 库进行构建时,构建的固件将会同时兼容 musl/glibc 的预构建二进制程序,但缺失 `opkg install` 安装源支持
##### 只需在构建固件前执行以下命令即可启用 glibc 构建

```
export ENABLE_GLIBC=y
```

### 启用本地 Kernel Modules 安装源 (For developers)
##### 启用该标志时,将会拷贝全部 target packages 到 rootfs 并替换 openwrt_core 源为本地方式,以供离线 `opkg install kmod-xxx` 安装操作
##### 这会增加固件文件大小(大约 70MB),对项目内核版本、模块、补丁 有修改的需求时,该功能可能会有用
##### 只需在构建固件前执行以下命令即可启用本地 Kernel Modules 安装源

```
export ENABLE_LOCAL_KMOD=y
```

### 启用 [DPDK](https://www.dpdk.org/) 支持
##### DPDK(Data Plane Development Kit)是一个开源工具集,专为加速数据包处理而设计,通过优化的数据平面技术,实现高性能、低延迟的网络应用
##### 只需在构建固件前执行以下命令即可启用 DPDK 工具集支持

```
export ENABLE_DPDK=y
```

### 快速构建(仅限 Github Actions)
##### 脚本会使用 [toolchain](https://github.com/sbwml/toolchain-cache) 缓存代替源码构建,与常规构建相比能节省大约 60 分钟的编译耗时,仅适用于 Github Actions `ubuntu-24.04` 环境
##### 只需在构建固件前执行以下命令即可启用快速构建

```
export BUILD_FAST=y
```

### 构建 Minimal 版本
##### 不包含第三方插件,接近官方 OpenWrt 固件
##### 只需在构建固件前执行以下命令即可构建 Minimal 版本

```
export MINIMAL_BUILD=y
```

### 更改 LAN IP 地址
##### 自定义默认 LAN IP 地址
##### 只需在构建固件前执行以下命令即可覆盖默认 LAN 地址(默认:10.0.0.1)

```
export LAN=10.0.0.1
```

---------------

## 构建 OpenWrt 23.05 最新 Releases

### nanopi-r4s
```shell
# linux-6.6
bash <(curl -sS https://init2.cooluc.com/build.sh) rc2 nanopi-r4s
```

### nanopi-r5s/r5c
### 开始构建
#### 下载源码
```shell
# linux-6.6
bash <(curl -sS https://init2.cooluc.com/build.sh) rc2 nanopi-r5s
git clone https://github.com/JohnsonRan/opwrt_build_script
cd opwrt_build_script
```

### x86_64
```shell
# linux-6.6
bash <(curl -sS https://init2.cooluc.com/build.sh) rc2 x86_64
```

## 构建 OpenWrt 23.05 开发版(23.05-SNAPSHOT)

### nanopi-r4s
```shell
# linux-6.6
bash <(curl -sS https://init2.cooluc.com/build.sh) dev nanopi-r4s
```

### nanopi-r5s/r5c
```shell
# linux-6.6
bash <(curl -sS https://init2.cooluc.com/build.sh) dev nanopi-r5s
```

### x86_64
```shell
# linux-6.6
bash <(curl -sS https://init2.cooluc.com/build.sh) dev x86_64
```

-----------------

# 基于本仓库进行自定义构建 - 本地编译

#### 如果你有自定义的需求,建议不要变更内核版本号,这样构建出来的固件可以直接使用 `opkg install kmod-xxxx`

### 一、Fork 本仓库到自己 GitHub 存储库

### 二、修改构建脚本文件:`openwrt/build.sh`(使用 Github Actions 构建时无需更改)

将 init.cooluc.com 脚本默认连接替换为你的 github raw 连接(不带 https://),像这样 `raw.githubusercontent.com/你的用户名/r4s_build_script/master`
#### 修改构建脚本文件:`openwrt/build.sh`

```diff
# script url
if [ "$isCN" = "CN" ]; then
- export mirror=init.cooluc.com
+ export mirror=raw.githubusercontent.com/你的用户名/r4s_build_script/master
+ export mirror=raw.githubusercontent.com/JohnsonRan/opwrt_build_script/master
else
- export mirror=init2.cooluc.com
+ export mirror=raw.githubusercontent.com/你的用户名/r4s_build_script/master
+ export mirror=raw.githubusercontent.com/JohnsonRan/opwrt_build_script/master
fi
```

### 三、在本地 Linux 执行基于你自己仓库的构建脚本,即可编译所需固件

#### nanopi-r4s openwrt-23.05
#### 启动!
```shell
# linux-6.6
bash <(curl -sS https://raw.githubusercontent.com/你的用户名/r4s_build_script/master/openwrt/build.sh) rc2 nanopi-r4s
```

#### nanopi-r5s/r5c openwrt-23.05
```shell
# linux-6.6
bash <(curl -sS https://raw.githubusercontent.com/你的用户名/r4s_build_script/master/openwrt/build.sh) rc2 nanopi-r5s
```

#### x86_64 openwrt-23.05
```shell
# linux-6.6
bash <(curl -sS https://raw.githubusercontent.com/你的用户名/r4s_build_script/master/openwrt/build.sh) rc2 x86_64
```

-----------------

# 使用 Github Actions 构建

### 一、Fork 本仓库到自己 GitHub 存储库

### 二、构建固件
- 在存储库名称下,单击(<img src="https://camo.githubusercontent.com/392391d290482f9c4881912eec0700ec2acef8e0d5d2e24b3f8b23d9354fa73e/68747470733a2f2f66696c652e636f6f6c75632e636f6d2f323232322e737667" alt="Actions"> Actions)。

- 在左侧边栏中,单击要运行的工作流的名称:**Build releases**

- 在工作流运行的列表上方,单击“**Run workflow**”按钮,选择要构建的设备固件并运行工作流。

![image](https://github.com/sbwml/r4s_build_script/assets/16485166/136abcd1-ecf3-4e6d-aa1a-5393a75a25cc)
export LAN=172.16.1.1 KERNEL_CLANG_LTO=y USE_GCC15=y ENABLE_LTO=y ENABLE_MOLD=y ENABLE_BPF=y ENABLE_LRNG=y
bash openwrt/build.sh rc2 x86_64
```
Loading

0 comments on commit c8f496f

Please sign in to comment.