1.在 KoolCenter 固件中心下载对应型号的梅林改版固件:
https://fw.koolcenter.com
2.电脑连接路由器,点击左边的『系统管理』,选择『固件升级』- 点击上传,更新固件为梅林改版固件,进度条100%路由器会自行重启。
3.登录路由器,进行双清,手动配置路由器,完成后登录路由器,在『系统管理』–『系统设置』内勾选:Format JFFS partition at next boot 和 Enable JFFS custom scripts and configs, 点击『应用本页面设置』,成功后重启路由器,再次登录后出现『软件中心』。
4.下载安装科学插件,点击『软件中心』,软件中心版本,『进入设置』,点击『更新』保持当前版本与在线版本一致。点击 『手动安装』,选择已下载好的 MerlinClash插件文件。
merlinclash 插件使用文档与插件下载地址:
https://mcreadme.gitbook.io/mc
https://t.me/merlinclashfile
科学上网插件下载地址:
https://github.com/hq450/fancyss
Meta 的 Llama3 大语言模型开源以后,Ollama做了整合3B版本,可以很方便的部署使用,7B就算了,实在用不起。
0x00 硬件要求
GPU 最好使用 NVIDIA RTX4060 以上级别的显卡,响应速度流畅。
CPU Intel 12代以上,纯 CPU 模式响应度很慢。
0x01 官方支持
https://ollama.com/
https://hub.docker.com/r/ollama/ollama
0x11 部署服务
CPU 模式
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
GPU 模式
Nvidia GPU 需安装 NVIDIA Container Toolkit:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
安装 NVIDIA Container Toolkit packages:
sudo apt-get install -y nvidia-container-toolkit
Yum 或 Dnf 安装:
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
| sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
安装 NVIDIA Container Toolkit packages:
sudo yum install -y nvidia-container-toolkit
配置 Docker 使用 Nvidia driver:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
启动容器:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
AMD GPU 安装:
docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm
0x12 安装 API
docker exec -it ollama ollama run llama3
0x13 部署 WEB UI
CPU 模式:
docker run -d -p 8090:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
GPU 模式:
docker run -d -p 8090:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
0x14 登录 WEB
http://IP:8090
MI MIX 最后升级的系统是 Android8.0,XDA 上有爱好者基于 LineageOS 修改的第三方 Android13 系统,但升级方法比较混乱,我试错多次后,总结了如下便捷方式:
1.下载 miflash_unlock,将手机解锁 bootlock,具体方法在小米官网支持。
2.开启手机开发者模式,开启 USB调试。
3.下载 platform-tools,在文件夹中运行系统终端,运行:
./adb reboot bootloader
./fastboot devices
./fastboot flash recovery lithium-twrp-3.5.2-fbe.img
写入第三方 Recovery 后,重启。
4.按住音量+键和电源键开机,直到进入 Recovery 松开。
5.格式化DATA,在高级选项里选择 Apply from ADB,开始 sidload。
6.运行如下命令:
./adb sideload lineage-20.0-20221211-UNOFFICIAL-lithium.zip
如需 GAPPS 服务,再次进入 sidload 运行如下命令:
./adb sideload MindTheGapps-13.0.0-arm64-20230920_071434.zip
8.重启手机,开始配置,如果刷了 GAPPS,需要科学上网。
刷机资料下载地址:
链接:https://pan.baidu.com/s/1k4HclQtFkGlUlBrQQPkj3Q?pwd=8848
提取码:8848
得到了一块JCG-Q20的板子,通电可用,不过直接编译Q20的固件刷入后无法启动,将本身的uboot换成pboot,还是不行,这种问题一般是交换机配置或者分区配置不对,研究了一下,更改了分区,成功启动。
准备nand分区表参考:
cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00020000 "Bootloader"
mtd1: 00080000 00020000 "Config"
mtd2: 00080000 00020000 "Factory"
mtd3: 00040000 00020000 "crash"
mtd4: 00040000 00020000 "crash_log"
mtd5: 00400000 00020000 "kernel"
mtd6: 07980000 00020000 "ubi"
新固件编译方法:
新建型号
vi /target/linux/ramips/image/mt7621.mk
增加新设备定义
define Device/NonniWiFi
$(Device/dsa-migration)
BLOCKSIZE := 128k
PAGESIZE := 2048
UBINIZE_OPTS := -E 5
KERNEL_SIZE := 4096k
IMAGE_SIZE := 91136k
IMAGES += factory.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \
check-size
DEVICE_VENDOR := NONNIX.COM
DEVICE_MODEL := NonniWiFi
DEVICE_PACKAGES := kmod-mt7915e uboot-envtools
endef
TARGET_DEVICES += NonniWiFi
新建dts
vi /target/linux/ramips/dts/mt7621_NonniWiFi.dts
增加设备硬件定义,通过16进制计算分区,划分新分区布局
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7621.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
compatible = "NONNIX.COM,NonniWiFi", "mediatek,mt7621-soc";
model = "NonniWiFi";
aliases {
led-boot = &led_status_red;
led-failsafe = &led_status_red;
led-running = &led_status_blue;
led-upgrade = &led_status_blue;
label-mac-device = &gmac0;
};
chosen {
bootargs = "console=ttyS0,115200";
};
leds {
compatible = "gpio-leds";
led_status_red: status_red {
label = "red:status";
gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
};
led_status_blue: status_blue {
label = "blue:status";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
};
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
wps {
label = "wps";
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
};
};
ubi-concat {
compatible = "mtd-concat";
devices = <&ubi>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "ubi";
reg = <0x0 0x5900000>;
};
};
};
};
&nand {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "Bootloader";
reg = <0x0 0x80000>;
read-only;
};
partition@80000 {
label = "Config";
reg = <0x80000 0x80000>;
};
factory: partition@100000 {
label = "Factory";
reg = <0x100000 0x80000>;
read-only;
};
partition@180000 {
label = "crash";
reg = <0x180000 0x40000>;
};
crash_log: partition@1c0000 {
label = "crash_log";
reg = <0x1c0000 0x40000>;
};
partition@200000 {
label = "kernel";
reg = <0x200000 0x400000>;
};
ubi: partition@600000 {
label = "ubi";
reg = <0x600000 0x7980000>;
};
/*
* last 512 KiB are for the bad block table
*/
};
};
&pcie {
status = "okay";
};
&pcie1 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x0>;
};
};
&gmac0 {
mtd-mac-address = <&factory 0x3fff4>;
};
&switch0 {
ports {
port@0 {
status = "okay";
label = "wan";
mtd-mac-address = <&factory 0x3fffa>;
};
port@1 {
status = "okay";
label = "lan1";
};
port@4 {
status = "okay";
label = "lan2";
};
};
};
&state_default {
gpio {
groups = "jtag", "wdt";
function = "gpio";
};
};
增加新设备网络配置
vi /target/linux/ramips/mt7621/base-files/etc/board.d/02_network
添加
NONNIX.COM,NonniWiFi|\
运行菜单配置,选择设备 NONNIX.COM-NonniWiFi,配置应用
make menuconfig
开始单线程啰嗦模式编译
make V=s -j1
编译好的固件,适合pboot刷入
openwrt-ramips-mt7621-NonniWiFi-squashfs-factory.bin
默认IP 10.20.30.40/16
默认密码 password
完成的固件下载地址
http://pan.nonni.cn/%e4%b8%80%e6%84%8f%e5%ad%a4%e8%a1%8c/%e5%9b%ba%e4%bb%b6/%e8%b7%af%e7%94%b1%e5%99%a8/NonniX/OPENWRT/openwrt-ramips-mt7621-NonniWiFi-squashfs-factory.bin
安装MacOS部分第三方软件,或者破解版软件时,常会遇到打不开,提示“XXX已损坏,无法打开”,“无法验证开发者”等问题,解决方法:
在系统设置“安全性与隐私”中开启允许从“任何来源”下载APP。
如遇界面灰色,可以在终端中执行以下命令开启:
sudo spctl --master-disable
如果操作后仍然提示“XX已损坏,无法打开”,终端中执行以下命令:
sudo xattr -r -d com.apple.quarantine /XX/XX.app/
其中/XX/XX.app/为APP安装目录。
便捷操作:
在终端输入 sudo xattr -r -d com.apple.quarantine 空格,然后鼠标在 访达->应用程序 中将程序图标拖入命令行。