Zeruns's Blog - 代码
type: channel
link: https://blog.zeruns.com/tag/%E4%BB%A3%E7%A0%81/
items: 明基RD280U显示器简单测评，专业编程显示器，3:2比例+28寸4K分辨率
items: 基于STM32F407的LVGL工程模板（MSP3526屏幕），包含FreeRTOS版和裸机版
items: 基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C
items: 移植好U8g2图形库的STM32F407标准库工程模板，0.96寸OLED驱动程序
items: STM32读取SHT3x系列温湿度传感器，标准库和HAL库
items: Linux搭建 我的世界(MC) 1.17.1版 服务器教程，带面板
items: Linux系统挂载U盘或硬盘教程（查看、分区、格式化、挂载）
items: 威联通NAS使用Container搭建我的世界服务器，带网页管理面板
items: 编译openwrt/LEDE并加入RTL8111驱动教程
items: Linux服务器/VPS性能和带宽测试脚本汇总

明基RD280U显示器简单测评，专业编程显示器，3:2比例+28寸4K分辨率
type: item
date: 2025-10-25T04:02:00+08:00
description: AI摘要 明基RD280U显示器测评：专为程序员设计，3:2比例+28寸4K分辨率，提升代码显示效率。支持KVM切换、护眼功能及硬件级低蓝光，搭配专属编程模式优化视觉体验。接口丰富，适合多设备用户。 此内容根据文章生成，仅用于文章内容的解释与总结 明基（BenQ）RD280U专业编程显示器简单测评，程序员专属显示器，3:2比例+28寸4K分辨率，多设备KVM。测评视频：https://www.bilibili.com/video/BV1EcszzpEck/前言最近收到明基寄来的RD280U显示器，做个评测文章，这款显示器我目前已经当做主显示器了，用起来感觉还挺不错。这款显示器的主要特点是作为全球首款专为程序员定制的专业编程显示器，精准戳中了开发者日常编码的核心痛点 —— 比如传统 16:9 屏幕显示代码行数少、多设备切换要频繁拔插线材、长时间看屏眼睛干涩酸胀等问题。它的核心优势很明确：28.2 英寸 4K 超清屏搭配 3:2 生产力方屏，比普通显示器多显约 20% 代码行，不用反复滚动；专属编程模式（亮色 / 深色双主题）优化了代码色彩对比度，语法高亮更清晰，复杂代码也能快速分辨；支持 KVM 多主机切换和 MST菊花链 多屏串联，一台显示器就能连电脑、笔记本，切换设备不用动键鼠；还带 MoonHalo 智慧护眼光环、硬件级 Low Blue Light Plus 滤蓝光，加上五项德国莱茵 TUV 护眼认证，深夜赶需求也能护眼睛；配合 Display Pilot 2 定制软件，一键调色彩模式、分桌面分区，还能设键盘快捷键快速切换功能，不管是写代码还是多任务调试，效率和舒适度都提升不少。RD280U显示器规格面板类型: IPS广视角面板屏幕尺寸: 28.2英寸最佳分辨率: 3840x2560@60Hz（4K UHD）宽高比: 3:2对比率: 1200:1（典型）亮度: 350cd/m²（典型）；HDR峰值亮度400 cd/m²（支持HDR10，VESA DisplayHDR 400）可视角度: 178°/178°反应时间: 5ms表面涂层: Nano Matte Panel（BenQ 獨家護眼科技無反光面板）色域: 95% DCI-P3色深: 10.7亿色（10bit）PPI: 164HDCP: 2.2特色功能: 编码主题；KVM 多主机切换、MST 多屏串联；MoonHalo 智慧光环；6 项德国莱茵 TUV 认证（含 EyeSafe 2.0、硬件级低蓝光、无频闪）；第二代智慧调光、色弱模式；Display Pilot 2 软件（支持 Flow 场景、桌面分区）额定电压: 100 - 240V耗电量: 标准34W，最大205W接口：HDMI (v2.0) x1DisplayPort (v1.4) x1USB-C (PowerDelivery 90W, DisplayPort Alt Mode, Data) x1USB Type-B 上行 (USB 3.2 Gen 1, 5 Gbps, 仅限数据) x1USB Type-A 下行 (USB 3.2 Gen 1, 5 Gbps, 电力充电 4.5W) x3USB Type-C 下行 (USB 3.2 Gen 1, 5 Gbps, 电力充电 7.5W) x13.5mm 耳机孔 x1还内置了 2Wx2 的音箱，满足日常提示音、简单视频会议需求。购买链接：京东：https://u.jd.com/pgMntNw淘宝：https://s.click.taobao.com/QpPFr4q开箱箱子正面，这箱子还挺重的，十多公斤。箱子背面箱子侧面，有个标签，标签主要内容如下：型号：RD280U-L颜色：金属灰最大分辨率：3840x2560版本：00-029-KB包装重量：16.07公斤生产日期：2025年09月包装尺寸：870(长) x 224(宽) x 525(高) mm制造商：明基智能科技（上海）有限公司旁边还有个能效标签，3级能效。开箱，分上下两层，上层是底座和配件。配套数据线有 品字头电源线、HDMI、USB-A to B 线、双公头Type-C线。底座下面那层是屏幕和支架。把底座和支架组装起来。屏幕装上，屏幕挺重的，差不多10公斤左右，很有分量。屏幕正面屏幕背面，支架那部分有一圈氛围灯，明基称这个为MoonHalo智慧光环。屏幕中间底部，从左到有分别是电源键、菜单键（五维按键）、自定义按键（默认是信号源切换）。屏幕背面左侧接口，下图从左到右分别是HDMI、DP、USB Type-B、两个全功能Type-C，其中一个Type-C支持PD充电输出90W以及输入视频信号和USB信号（一线通）；KVM功能中HDMI和DP和Type-B为一组输入，Type-C为另一组输入。屏幕背面右侧接口为品字口…

基于STM32F407的LVGL工程模板（MSP3526屏幕），包含FreeRTOS版和裸机版
type: item
date: 2024-05-23T23:53:00+08:00
description: AI摘要 介绍了基于STM32F407的LVGL工程模板，支持MSP3526屏幕，包含FreeRTOS和裸机版，使用SPI+DMA驱动，帧率达9FPS全屏刷新。 此内容根据文章生成，仅用于文章内容的解释与总结 在STM32F407上移植好了LVGL图形库，LCD屏幕型号是MSP3526，想换其他屏幕可以自己修改LCD的驱动程序，项目工程包含FreeRTOS版和裸机版。使用SPI+DMA驱动屏幕。这款LCD屏分辨率为320x480，尺寸为3.5寸，LCD驱动芯片为ST7796，接口为SPI，电容触摸屏驱动芯片为FT6336U，接口为IIC。MCU超频后全屏刷新时帧率为9FPS左右，局部刷新时帧率为30+FPS，对于SPI来说这个帧率应该算可以了吧。STM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html基于STM32G4的0.96寸OLED显示屏驱动程序（HAL库），支持硬件/软件I2C：https://blog.zeruns.com/archives/776.html电子/单片机技术交流群：2169025065效果图效果演示视频：https://www.bilibili.com/video/BV1Ni421S7ta/LVGL简介LVGL(轻量级和通用图形库)是一个免费和开源的图形库，它提供了创建嵌入式GUI所需的一切，具有易于使用的图形元素，美丽的视觉效果和低内存占用。主要特性：丰富且强大的模块化图形组件：按钮 (buttons)、图表 (charts)、列表 (lists)、滑动条 (sliders)、图片 (images) 等高级的图形引擎：动画、抗锯齿、透明度、平滑滚动、图层混合等效果支持多种输入设备：触摸屏、 键盘、编码器、按键等支持多显示设备不依赖特定的硬件平台，可以在任何显示屏上运行配置可裁剪（最低资源占用：64 kB Flash，16 kB RAM）基于UTF-8的多语种支持，例如中文、日文、韩文、阿拉伯文等可以通过类CSS的方式来设计、布局图形界面（例如：Flexbox、Grid）支持操作系统、外置内存、以及硬件加速（LVGL已内建支持STM32 DMA2D、NXP PXP和VGLite）即便仅有单缓冲区(frame buffer)的情况下，也可保证渲染如丝般顺滑全部由C编写完成，并支持C++调用支持Micropython编程，参见：LVGL API in Micropython支持模拟器仿真，可以无硬件依托进行开发丰富详实的例程详尽的文档以及API参考手册，可线上查阅或可下载为PDF格式在 MIT 许可下免费和开源配置要求：基本上，每个能够驱动显示器的现代控制器都适合运行 LVGL。 最低要求是：16、32 或 64 位微控制器或处理器建议使用 >16 MHz 时钟速度闪存/ROM： > 64 kB 用于非常重要的组件 (> 建议使用 180 kB)RAM:静态 RAM 使用量：\~2 kB，取决于使用的功能和对象类型堆: > 2kB (> 建议使用 8 kB)动态数据（堆）: > 2 KB (> 如果使用多个对象，建议使用 16 kB). 在 lv_conf.h 文件中配置 LV_MEM_SIZE 生效。显示缓冲区：> “水平分辨率”像素（推荐 >10 × 10×“ 水平分辨率”）MCU或外部显示控制器中的一个帧缓冲区C99 或更新的编译器LVGL官网：https://lvgl.io/接线说明LCD屏MCU/开发板功能描述GNDGNDLCD屏电源地VCC5V或3.3VLCD屏电源正极LCD_CSPE6LCD屏SPI片选LCD_RSTPC1LCD屏复位LCD_RSPC0LCD屏命令/数据选择SDI(MOSI)PB5LCD屏SPI数据线，主机输出从机输入SCKPB3LCD屏SPI时钟线LED3.3V背光LED（可以自己接IO口，用软件控制背光）SDO(MISO)PB4LCD屏SPI数据线，主机输入从机输出CTP_SCLPB8电容触摸屏控制器I2C时钟线CTP_RSTPB7电容触摸屏控制器复位CTP_SDAPB9电容触摸屏控制器I2C数据线CTP_INTPB6电容触摸屏控制器中断信号注意一下，我效果图里用的这款开发板的PB4引脚是没有在两边的排针里的，是在上面的JTAG接口里。资料和程序下载屏幕资料在线文档：https://url.zeruns.com/68x3Y屏幕资料打包下载地址1：https://www.123pan.com/s/2Y9Djv-rZevH.html屏幕资料打包下载地址2：http…

基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C
type: item
date: 2024-02-26T00:17:00+08:00
description: AI摘要 介绍了基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C，可显示多种内容并绘图。 此内容根据文章生成，仅用于文章内容的解释与总结 基于STM32F103的0.96寸OLED显示屏驱动程序（4针脚I2C接口），支持硬件IIC/软件IIC。这款驱动程序比较完善，可以实现 英文、整数、浮点数、汉字、图像、二进制数、十六进制数 等内容显示，可以画点、直线、矩形、圆、椭圆、三角形等，支持多种字体，差不多相当于一个简易版图形库了。该程序是基于江协科技的代码二次修改的，原版程序只支持软件I2C，我修改后支持硬件I2C，也可以修改宏定义改成使用软件I2C。程序是使用ST标准库写的。测试硬件为STM32F103C8T6和AIR32F103CBT6，在这两款单片机上都测试过能跑，其中使用硬件I2C时STM32通信速率最高可以跑到1.3Mbit/s，AIR32最高只能跑600kbit/s。关于OLED的驱动原理，以及驱动程序的使用教程可以看江协科技的视频：https://url.zeruns.com/L7j6ySTM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html电子/单片机技术交流群：2169025065效果图I2C协议简介I2C 通讯协议(Inter－Integrated Circuit)是由 Phiilps 公司开发的，由于它引脚少，硬件实现简单，可扩展性强，不需要 USART、CAN 等通讯协议的外部收发设备（那些电平转化芯片），现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C只有一跟数据总线 SDA(Serial Data Line)，串行数据总线，只能一位一位的发送数据，属于串行通信，采用半双工通信。半双工通信：可以实现双向的通信，但不能在两个方向上同时进行，必须轮流交替进行，其实也可以理解成一种可以切换方向的单工通信，同一时刻必须只能一个方向传输，只需一根数据线。对于I2C通讯协议把它分为物理层和协议层物理层规定通讯系统中具有机械、电子功能部分的特性（硬件部分），确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑，统一收发双方的数据打包、解包标准（软件层面）。I2C物理层I2C 通讯设备之间的常用连接方式(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中，可连接多个 I2C 通讯设备，支持多个通讯主机及多个通讯从机。(2) 一个 I2C 总线只使用两条总线线路，一条双向串行数据线SDA（Serial Data Line ），一条串行时钟线SCL（Serial Clock Line ）。数据线即用来表示数据，时钟线用于数据收发同步(3) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态，而当所有设备都空闲，都输出高阻态时，由上拉电阻把总线拉成高电平。I2C通信时单片机GPIO口必须设置为开漏输出，否则可能会造成短路。关于更多STM32的I2C相关信息和使用方法可以看这篇文章：https://url.zeruns.com/JC0Ah还有江协科技的STM32入门教程：https://www.bilibili.com/video/BV1th411z7sn?p=31我这里就不详细讲解了。需要用的元件STM32开发板入门套件：https://u.jd.com/fQS0YAeSTM32F103最小系统板：https://s.click.taobao.com/TsFFvwtOLED模块：https://s.click.taobao.com/EF0Evwt杜邦线：https://s.click.taobao.com/VMkDvwt面包板：https://s.click.taobao.com/bhg8TxtDAPLink（可代替ST-Link，带虚拟串口）：https://s.click.taobao.com/QVQ8Txt江协科技的STM32入门套件：https://s.click.taobao.com/NTn9Txt程序完整工程下载地址：百度网盘：https://url.zeruns.com/kSxoe 提取码: wgc3123网盘(不限速)：https://www.123pan.com/s/2Y9Djv-HGcvH.html 提取码:m7sp工程使用Keil5创建，用Vscode+EIDE开发，两个软件都可以打开此工程。工程文件全部使用UTF-8编码，如果打开显示乱码需要修改编辑器编码为UTF-8。main.c文件：#include …

移植好U8g2图形库的STM32F407标准库工程模板，0.96寸OLED驱动程序
type: item
date: 2023-06-11T18:24:00+08:00
description: AI摘要 移植U8g2图形库到STM32F407标准库工程，驱动0.96寸OLED屏，使用硬件IIC。文章详细介绍了U8g2库的特性、时钟配置、代码实现及开源项目推荐。 此内容根据文章生成，仅用于文章内容的解释与总结 移植好U8g2图形库的STM32F407标准库工程模板，用的0.96寸OLED屏（SSD1306），用硬件IIC驱动。花了一晚上时间去移植。开发板主控MCU用的是STM32F407VET6，I2C接口用I2C1，SCL接PB6，SDA接PB7。嵌入式相关文章：https://blog.zeruns.com/category/IOT/电子/电路相关文章：https://blog.zeruns.com/category/electrical/电子/单片机技术交流群：2169025065U8g2简介U8g2图形库是一个用于嵌入式设备的单色图形库，支持多种单色OLED和LCD显示控制器，如SSD1306，ST7920等。U8g2库可以从Arduino IDE的库管理器安装，也可以移植到STM32等平台。U8g2库支持三种绘图模式：全屏缓存模式，页面缓存模式和U8x8字符模式。U8g2库的使用需要选择合适的构造函数，初始化显示器，设置引脚号，编写回调函数和绘图指令。U8g2图形库的优点是可以使用多种字体，支持中文显示，提供丰富的图形程序，如线条，框，圆，位图等。U8g2图形库的缺点是需要占用一定的内存空间，速度较慢，不支持无控制器的显示屏。U8g2图形库的应用场景有：显示传感器数据，制作时钟，显示菜单，显示动画等。U8g2图形库是一个功能强大，兼容性好，易于使用的单色图形库。效果图演示视频：https://www.bilibili.com/video/BV17W4y197WW/关于晶振的问题我晶振用的8Mhz的，时钟树配置那PLL参数我修改过，使MCU工作主频168Mhz，如果换用其他频率的晶振需要修改参数，具体怎么改自行百度。修改的地方如下：stm32f4xx.h 文件的137行。#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ // 这里的8000000改成你的晶振频率，单位Hzsystem_stm32f4xx.c 文件的364行和394行。#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx) /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ #define PLL_M 4 // 这里4对应下面时钟树图片中的 /M 的 /4#if defined (STM32F40_41xxx) #define PLL_N 168 // 这里168对应下面时钟树图片中的 *N 的 x168元件购买地址0.96寸OLED屏：https://u.jd.com/1zjpDNCSTM32F407开发板：https://s.click.taobao.com/7AtnHFu杜邦线：https://u.jd.com/1zjFP0Z代码完整工程文件下载：https://url.zeruns.com/JUoKJ 提取码：t6wt部分代码：main.c#include "stm32f4xx.h" // #include "Timer.h" #include "Delay.h" #include "u8g2.h" #include "OLED.h" #include "IWDG.h" uint8_t u8x8_gpio_and_delay(U8X8_UNUSED u8x8_t *u8x8, U8X8_UNUSED uint8_t msg, U8X8_UNUSED uint8_t arg_int, U8X8_UNUSED void *arg_ptr); uint8_t u8x8_byte_hw_i2c(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); void u8g2_Init(u8g2_t *u8g2); void draw(u8g2_t *u8g2); int main(void) { uint8_t t = 0; IWDG_Configuration(); // 初始化看门狗 OLED_I2C_Init(); // 初始化OLED u8g2_t u8g2; u8g2_Init(&u8g2…

STM32读取SHT3x系列温湿度传感器，标准库和HAL库
type: item
date: 2023-01-04T00:19:00+08:00
description: AI摘要 STM32通过硬件I2C和软件模拟IIC读取SHT3x温湿度传感器数据并显示在OLED屏上，包含标准库和HAL库代码实现。 此内容根据文章生成，仅用于文章内容的解释与总结 STM32读取SHT3x系列(SHT30、SHT31、SHT35)温湿度传感器的数据并显示在0.96寸OLED屏上。我下面提供两份代码，一份是标准库使用硬件I2C的，另一份是HAL库使用软件模拟IIC的。我用的单片机是STM32F103C8T6，温湿度传感器是SHT30。STM32软件I2C读取AM2320温湿度传感器数据：https://blog.zeruns.com/archives/695.htmlSTM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.htmlSTM32单片机读取AHT10温湿度传感器数据：https://blog.zeruns.com/archives/693.html电子/单片机技术交流群：2169025065实现效果图I2C协议简介I2C 通讯协议(Inter－Integrated Circuit)是由 Phiilps 公司开发的，由于它引脚少，硬件实现简单，可扩展性强，不需要 USART、CAN 等通讯协议的外部收发设备（那些电平转化芯片），现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C只有一跟数据总线 SDA(Serial Data Line)，串行数据总线，只能一位一位的发送数据，属于串行通信，采用半双工通信半双工通信：可以实现双向的通信，但不能在两个方向上同时进行，必须轮流交替进行，其实也可以理解成一种可以切换方向的单工通信，同一时刻必须只能一个方向传输，只需一根数据线.对于I2C通讯协议把它分为物理层和协议层物理层规定通讯系统中具有机械、电子功能部分的特性（硬件部分），确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑，统一收发双方的数据打包、解包标准（软件层面）。I2C物理层I2C 通讯设备之间的常用连接方式(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中，可连接多个 I2C 通讯设备，支持多个通讯主机及多个通讯从机。(2) 一个 I2C 总线只使用两条总线线路，一条双向串行数据线SDA（Serial Data Line ），一条串行时钟线SCL（Serial Data Line ）。数据线即用来表示数据，时钟线用于数据收发同步(3) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态，而当所有设备都空闲，都输出高阻态时，由上拉电阻把总线拉成高电平。I2C通信时单片机GPIO口必须设置为开漏输出，否则可能会造成短路。关于更多STM32的I2C相关信息和使用方法可以看这篇文章：https://url.zeruns.com/JC0Ah我这里就不详细讲解了。SHT3x温湿度传感器SHT3x数据手册下载地址：原版：https://url.zeruns.com/uWNnP 提取码：icqu中文版(机翻)：https://url.zeruns.com/n9b9t 提取码：vedy浏览数据手册可以得到一个大概信息，SHT30是一个可以检测温度和湿度的传感器，温度范围：-40℃\~125℃湿度范围：0%\~100%工作电压：2.4v\~5.5v通讯方式：i2c时钟频率：0 \~ 1000kHz找到如下几个关键信息SHT3x设备地址和读写命令SHT3x的地址可以通过第2个引脚接高或低电平来设置，我在淘宝买的模块的传感器2脚是通过一个电阻接到VCC，也就是默认是0x44。在实际的使用过程中，SHT3x的设备地址需要与读写数据/命令方向位组成一个字节同时发送，字节的最低位为读写数据/命令方向位，高7位是SHT3x的设备地址。如果要通过I2C写数据或命令给SHT3x，在I2C起始信号之后，需要发送“1000 1000”，即0x88给SHT3x，除了通过高7位“1000 100”（0x44）的设备地址寻址还通过最低位“0”通知SHT3x接下来是写数据或命令操作。如果要通过I2C读取SHT3x中的数据，在I2C起始信号之后，需要发送“1000 1001”，即0x89给SHT3x，除了通过高7位“1000 100”的设备地址寻址还通过最低位“1”通知SHT3x接下来是读取数据的操作。简单来说就是，0x88表示写数据，0x89表示读数据。不过使用STM32硬件I2C时只需要输入0x88就行，最低位标准库会处理的。读取温湿度数据可知，不同的命令，获取的数据方式不一样，有单次测量和周期测量模式，还有一个Clock Stretching Enable 和 Disable的区别。Clock Stretchin…

Linux搭建 我的世界(MC) 1.17.1版 服务器教程，带面板
type: item
date: 2021-07-10T17:53:00+08:00
description: Linux搭建 Minecraft 1.17.1 Java版 服务器教程，带网页管理面板。视频教程：https://www.bilibili.com/video/BV1V64y1X7AE/windows搭建MC服务器教程：https://blog.zeruns.com/archives/529.htmlARM搭建MC服务器教程，适用于树莓派：https://blog.zeruns.com/archives/585.html树莓派搭建我的世界服务器教程：https://blog.zeruns.com/archives/601.htmlLinux搭建 我的世界(MC) 基岩版服务器：https://blog.zeruns.com/archives/588.html威联通NAS使用Container搭建我的世界服务器：https://blog.zeruns.com/archives/612.html安卓安装Java版我的世界，与电脑联机：https://blog.zeruns.com/archives/605.html各种Minecraft服务端介绍和下载：https://blog.zeruns.com/archives/626.html2021年各大云服务器厂商双十一活动优惠汇总：https://blog.zeruns.com/archives/645.htmlMC开服交流群：966038270准备首先你得有台服务器（已经有的可以忽略），下面推荐一些：阿里云云小站：https://dashi.aliyun.com/site/zeruns/yxz?userCode=jdjc69nf腾讯云每日秒杀：https://curl.qcloud.com/lQSAXVLq华为云：https://url.zeruns.com/hwy2021腾讯云双十一：https://curl.qcloud.com/6feLjC29阿里云双十一：https://url.zeruns.com/2021aly1111其他性价比高的服务器推荐：https://blog.zeruns.com/archives/383.html提醒一下：如果你是新用户有优惠，能买多长时间就买多长时间，因为优惠价的服务器到期后续费很贵的，而且新用户优惠只能买一次，所以尽量买长时间点划算。1核2G内存 5兆带宽的服务器大约可以同时在线5到10人，2核4G 10兆的服务器大约可以同时在线20到30人。购买服务器后选择安装centos7系统，然后用ssh登陆服务器。ssh客户端软件推荐putty或mobaxterm。安装JAVA环境ARM版JDK下载地址：https://url.zeruns.com/ywU1r 可以自己下载上来上传到服务器，然后修改一下下面的命令。# 下载JDK安装包，也可以自己去官网下载 wget https://img.zeruns.com/down/Java/OpenJDK16U-jdk_x64_linux_hotspot_16.0.1_9.tar.gz # 创建安装目录 mkdir /usr/local/java/ # 解压当前目录下的JDK压缩文件 tar -zxvf OpenJDK16U-jdk_x64_linux_hotspot_16.0.1_9.tar.gz -C /usr/local/java/ #安装nano编辑器 yum -y install nano # 设置环境变量 nano /etc/profile # 在末尾添加对应变量 用方向键滚动光标到末尾 输入下面这几串内容后 然后按下 Ctrl + O ，再按一下 回车 来保存，然后按 Ctrl + X 退出编辑器 export JAVA_HOME=/usr/local/java/jdk-16.0.1+9 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH # 应用修改后的环境变量 source /etc/profile # 软链接程序到环境变量中 ln -sf /usr/local/java/jdk-16.0.1+9/bin/java /usr/bin/java # 测试是否安装正常，显示 openjdk version "16.0.1" 则为正常 java -version端口开放面板需要 23333（主功能） 端口与 20010 - 20200（FTP功能）端口区间。游戏服务器默认端口是 25565。如果你使用阿里云，腾讯云或者服务商，请进入控制台到防火墙安全组策略，放行以上端口。或者放行全部端口，，入和出方向都要如…

Linux系统挂载U盘或硬盘教程（查看、分区、格式化、挂载）
type: item
date: 2021-05-30T21:40:00+08:00
description: Linux系统挂载U盘或硬盘教程完整图文教程，硬盘格式化，开机自动挂载。此教程适用于大部分Linux系统，比如Centos、Ubuntu、Debian、Redhat、Deepin等。Linux系列文章：https://blog.zeruns.com/category/Linux/高性价比和便宜的VPS/云服务器推荐：https://blog.zeruns.com/archives/383.html教程中我以树莓派Raspberry Pi OS（Raspbian）为例。1、查看所有硬盘查看树莓派上所有存储设备，找出未挂载的设备fdisk -l从上图可以看出，树莓派的 /dev/sda 硬盘的大小是 14.9G，而我插进去的SD卡是16G的（进制的问题，实际空间是15G），也就是我要挂载的硬盘。如果此硬盘未挂载最下面一般会出一类似的话：Disk /dev/sdc doesn't contain a valid partition table；或者说硬盘下面没有类似于sdb1、sdb2......，我的SD卡因为已经分区过了，所以只能通过容量大小判断。下图红框内的硬盘sda就是没有分区的情况。2、硬盘分区硬盘分区的命令如下：fdisk /dev/sda上面命令中的sda改成你自己的硬盘（上面获取到的）然后依次输入：n->p->1->回车->回车->w上图的大概意思是这样的：n：添加一个分区p：主分区（e是扩展分区）1：分区号两个回车指是开始和结束的磁盘扇区大小；w：写入磁盘因为这SD卡空间不大，所以我就全部用来做主分区了，如果你想把一个磁盘分成好几块，可以继续按此命令分区即可；你可以继续创建扩展分区......；此时磁盘虽然已经分区，但是还没有文件系统，磁盘依然不能用；3、格式化磁盘并写入文件系统格式化命令如下：mkfs.ext4 /dev/sda1命令中的ext4是文件系统格式，这里可以用ext3，也可以用ext4。出现如下图这们的界面，就是格式化磁盘写入文件成功：4、挂载新磁盘到操作系统的某个节点上挂载命令如下：mkdir /data mount /dev/sda1 /data在系统的根创建一个data目录，把这个磁盘挂载到此目录；挂载位置可以自己随意创建；5、查看硬盘信息，确认挂载新磁盘是否成功查看命令：df如果挂载成功，会出现如下图这样的界面；6、设置开机启动自动挂载新创建的分区不能开机自动挂载，每次重启机器都要手动挂载。如果只是暂时性的挂载，比如用U盘传文件等情况不能设置开机自动挂载，因为如果开机自动挂载是没检测到这个设备会进不了系统。设置开机自动挂载需要修改 /etc/fstab 文件 ；命令如下：sudo apt install nano # centos系统用 sudo yum install nano nano /etc/fstab #打开后，在最后一行加入以下代码： /dev/sda1 /data ext4 defaults 0 1 #如果上面用的是ext3，这里也要用ext3；输入完成后按 Crtl+O 保存，然后按 Ctrl+X 退出。推荐文章高性价比和便宜的VPS/云服务器推荐：https://blog.zeruns.com/archives/383.htmlBBR/BBR Plus/BBR魔改版/锐速加速效果对比和测试方法：https://blog.zeruns.com/archives/563.html学生优惠权益大全：https://blog.zeruns.com/archives/557.html使用阿里云搭建网站并实现站库分离：https://blog.zeruns.com/archives/513.html怎样搭建个人博客：https://blog.zeruns.com/archives/218.htmlLinux搭建甜糖星愿服务，挂机赚钱：https://blog.zeruns.com/archives/628.html

威联通NAS使用Container搭建我的世界服务器，带网页管理面板
type: item
date: 2021-01-18T01:21:00+08:00
description: QNAP使用LXC容器搭建Minecraft游戏服务器，带WEB管理面板Linux搭建我的世界服务器：https://blog.zeruns.com/archives/584.htmlwindows搭建MC服务器教程：https://blog.zeruns.com/archives/529.htmlMC开服交流群：966038270视频教程：https://www.bilibili.com/video/BV1Fv411471D/安卓安装Java版我的世界，与电脑联机：https://blog.zeruns.com/archives/605.html威联通 NAS 搭建甜糖星愿服务 挂机赚钱：https://blog.zeruns.com/archives/627.html准备本教程以威联通TS-551为例，系统版本为4.5.1，群晖的操作方法也差不多，也可以参考本教程。内存最小要有4G，建议8G，因为威联通系统本身占用内存较大。首先在 APP Center 中找到并安装 Container Station 容器管理器。接着在NAS里创建一个文件夹，文件夹名字自己定，我这里是blog.zeruns.com，接着进去这个文件夹再创建两个文件夹分别为 opt 和 root ，用来存放Minecraft游戏服务器的相关文件，方便备份地图和存档数据。创建容器然后打开 Container Station，点击创建，找到LXC版 ubuntu 18.04 点安装。名称自己输入一个，CPU和内存限制根据你自己的需要设置，然后点击高级设置。接着在共享文件夹这里设置好挂载，按照下图所示设置好。然后到网络这里设置好端口转发，因为22端口被NAS本身用了，所以转发为222端口，23333端口为网页管理面板端口，25565端口为MC服务器默认端口。也可以将网络模式改bridge（桥接模式），这样容器会从路由器获取一个新的内网IP，而不是共用NAS的IP，选择这个模式不用设置端口转发。设置好后点击创建，然后点击确认。创建完成后点击总览，然后点击刚刚创建好的容器。修改密码修改root用户密码，控制台里输入 sudo passwd root 命令，然后提示输入当前用户密码，密码是：ubuntu，输入密码时不会显示出来，输入完成后按回车，然后输入新密码，接着再输入一遍，然后就设置密码完成了。接着输入 su ，再输入密码来切换到root用户。ubuntu换源因为ubuntu默认是外国的软件源服务器，比较慢，所以要换成中科大的镜像源。在控制台里依次输入下面两条命令：sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list apt-get update安装SSH服务然后安装SSH服务apt-get install openssh-server遇到图中的提示就输入 y 然后按回车通过SSH连接服务器首先下载一个ssh客户端，我这里使用的是putty。打开ssh客户端，输入你的nas的IP和你上面设置的端口，我这里是222。如果你网络模式选的是bridge那就直接默认22端口就行，服务器IP可以通过路由器获取，也可以在控制台输入ifconfig命令来获取。然后输入账号密码来登陆，先通过ubuntu账号登陆（密码跟账号相同，可以自己通过 passwd ubuntu 命令来修改），接着通过 su 命令切换到root。安装JAVA环境依次输入下面的命令cd ~ # 下载JDK安装包，也可以自己去官网下载 wget https://img.zeruns.com/down/jdk-8u261-linux-x64.tar.gz # 创建安装目录 mkdir /usr/local/java/ # 解压当前目录下的JDK压缩文件 tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/local/java/ # 设置环境变量 vim /etc/profile # 在末尾添加对应变量 滚动光标到末尾 按下 键盘上的 I 键,切换至插入模式 输入下面这几串内容后 按ESC退出插入模式 然后按下 Shift + ; 接着输入 wq 并回车保存 export JAVA_HOME=/usr/local/java/jdk1.8.0_261 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH # 应用修改后的环境变量 source /etc/profile # 软链接程序到环境变量中 ln -…

编译openwrt/LEDE并加入RTL8111驱动教程
type: item
date: 2020-06-20T00:58:00+08:00
description: openwrt/LEDE编译固件并加入螃蟹的RTL8111(r8168)网卡驱动。附编译好的X86版LEDE（含RTL8111驱动）下载。下载下载LEDE：关注微信公众号（zeruns-gzh），发送LEDE8111来获取下载链接免关注下载地址：http://go.zeruns.com/P提取码: 7rny 解压密码：blog.zeruns.com压缩包里包含openwrt系统的img镜像和VM虚拟机文件vmdk，还有img写盘工具。准备首先需要一个Ubuntu，推荐Ubuntu 18 LTS x64，可以使用Win10子系统Linux、虚拟机装Ubuntu、国外VPS/云服务器（编译全程需要挂梯子，所以建议租用境外的云服务器）。我这里使用vultr的服务器。高性价比和便宜的VPS/云服务器推荐：https://blog.zeruns.com/archives/383.html准备好安装用的Ubuntu后用ssh登陆上去更新软件包和安装编译环境，命令行输入 sudo apt-get update ，然后输入 sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget新建一个用户：useradd -r -m -g root -s /bin/bash zeruns passwd zeruns #设置密码 su zeruns cd /home/zeruns注意不要用 root 用户 git 和编译！！！国内用户编译前最好准备好梯子默认登陆IP 192.168.1.1, 密码 password编译教程1.切换用户su zeruns2.使用 git clone https://github.com/coolsnowwolf/lede 命令下载好源代码，然后 cd lede 进入目录3.用Vi编辑器打开feeds.conf.default文件，去掉如下代码中的#号后保存：#src-git helloworld https://github.com/fw876/helloworld4.配置编译选项cd package git clone https://github.com/zeruns/openwrt-r8168 cd .. ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig设置自己的路由器：如果是newifi3则： Target System选择 "MediaTek Ralink MIPS" Subtarget选择"MT7621" Target Profile选择"Newifi D2" 如果是X86就默认就行这三项选择好后，基本功能就可以了，不过我们希望有web界面，还需在LuCI->Collections选项中选上luci，按空格键可以选中。在LuCI ---> Applications选择要添加的插件应用，关于插件应用的说明在下面。在LuCI -> Themes中设置要安装的主题。安装RTL8111驱动，在Kernel modules > Network Devices中选上kmod-r8168然后将kmod-r8169取消选中。5.make -j8 download v=s 下载dl库（国内请尽量全局科学上网）6.输入 make -j1 V=s （-j 后面的数字1是线程数。第一次编译推荐用单线程）即可开始编译你要的固件了。如果是使用VPS需要使用screen运行5和6步奏，避免网络中断造成编译中断。编译完成后输出路径：/lede/bin/targets第二次编译：cd lede git pull ./scripts/feeds update -a && ./scripts/feeds install -a make defconfig make -j8 download make -j$(($(nproc) + 1)) V…

Linux服务器/VPS性能和带宽测试脚本汇总
type: item
date: 2020-05-19T16:47:00+08:00
description: 这年头VPS主机太多了，好多“二手”VPS开始横行其道，让人真假莫辨，想要购买某一个VPS主机，一般是先要看看这家的VPS主机的评测数据。需要提醒的是，关于IO读写速度的测试，根据以往的经验，像谷歌云服务器、亚马逊服务器等，IO读写速度都比较低，而SSD在IO方面表现出色。另外，国外的VPS主机的速度很大程度上取决于线路的好坏，并且晚上和白天的测试速度会差别比较大。高性价比和便宜的VPS/云服务器推荐：https://blog.zeruns.com/archives/383.htmlUCloud十周年庆典： 1核2G，128元/3年(约3.6元/月)；2核4G，323元/3年(约8.9元/月)；4核8G，1269元/3年(约35元/月)；8核16G，4459元/3年(约123.8元/月)。天翼云： 4核8G，287元/年（约23元/月） ；8核16G，611元/年（约50元/月）。华为云特惠专区： 2核2G 4M，45元/年（约3.7元/月）；2核4G 5M，269元/年（约22.4元/月）。腾讯云每日秒杀，4核8G10M，306元/年(约25.5元/月)。阿里云小站，2C2G，68元/年（约5.6元/月）；2C4G1\~10M，622元/3年（约17元/月）。各大厂商云服务器性能评测对比，阿里云、腾讯云、华为云、Ucloud、天翼云：https://blog.zeruns.com/archives/670.html雨云 13900K 宿迁高防云服务器性能测评，2核4G 5兆 150G防御 仅需75元/月：https://blog.zeruns.com/archives/701.html下面我汇总了几个比较好用的测试脚本。lemonbenchlemonbench提供比superbench更详细的测试，除了磁盘io和网速测试外，它还提供vps的cpu跑分，内存读写速度，回程路由追踪，流媒体解锁情况等测试，测试完之后还能生成分享链接 例子，可以直接在浏览器上查看或是分享给他人。该脚本有两种模式。使用curl -fsL https://ilemonra.in/LemonBenchIntl | bash -s fast进行快速测试，该模式下测试速度较快，但是结果没那么详细，部分测试的次数较少(如磁盘io测试)，测速节点较少，路由追踪也不会测那么多个节点。使用curl -fsL https://ilemonra.in/LemonBenchIntl | bash -s full进行测试时，会进行更加详细全面的测试，测试次数会更多，使用的节点也更多，当然耗时会更长。curl -fsL github.com/LemonBench/LemonBench/raw/main/LemonBench.sh | bash -s -- --fast curl -fsL github.com/LemonBench/LemonBench/raw/main/LemonBench.sh | bash -s -- --full # 备用：curl -fsL gitee.com/zeruns/Linux-shell/raw/master/LemonBench.sh | bash -s -- --full # 备用2：curl -fsL tc2.zeruns.com/other/shell/LemonBench.sh | bash -s -- --fullyabs.sh完整测试curl -sL yabs.sh | bash # 备用地址 curl -sL https://jsdelivr.zeruns.com/gh/masonr/yet-another-bench-script@master/yabs.sh | bash参数测试## 添加需要的参数 curl -sL yabs.sh | bash -s -- -{fdighr49} ## 例：（仅进行Geekbench 5测试） curl -sL yabs.sh | bash -s -- -fdi可选参数列表-f 此选项禁用fio测试-d 此选项禁用磁盘性能测试-i 此选项禁用网络性能测试-g 此选项将禁用Geekbench系统性能测试-h 此选项打印包含用法、检测到的标志和本地包（fio/iperf）状态的帮助消息-r 此选项可减少iperf位置的数量(Online.net/Clouvider LON+NYC）以减少带宽使用-4 此选项覆盖geekbench5性能测试，而运行geekbench4测试-9 这个选项除了运行Geekbench 5测试之外，还运行Geekbench 4测试Geekbench 5Geekbench 5 官方测试脚本wget --no-check-certificate https://img.…