准备工作
1.修改群晖默认的 admin 账号密码,不要添加特殊字符,取消禁用 admin账号。
2.不要使用 Edge浏览器,推荐 Chrome。
开始激活
在网页输入以下网址:
https://群晖地址:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=管理员用户名&passwd=密码&format= cookie
三个部分做相应替换,例如:
https://10.20.50.50:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=AAA&passwd=BBB&format= cookie
然后网页提示中有 "success":ture 字样就可以了。
获取机器序列号:
控制面板 - 信息中心 - 产品序列号,复制下来。
新网页中输入以下网址:
https://10.20.50.50:5001/webapi/entry.cgi?api=SYNO.ActiveBackup.Activation&method=set&version=1&activated=true&serial_number="序列号"
将网址中的部分做相应替换,例如:
https://10.20.50.50:5001/webapi/entry.cgi?api=SYNO.ActiveBackup.Activation&method=set&version=1&activated=true&serial_number="0000XXXXMNNNN"
然后网页提示中有 "success":ture 字样,至此激活完毕。
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