自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 自动更新 Docker 镜像

Watchtower 会通过 Unix Socket 与 Docker 的守护进程 dockerd 通信,拉取最新的镜像,并与当前运行的进行比较。如果两者的 Hash 不同,则停止当前容器,并使用相同命令参数启动新容器。目前该项目由于维护者的经历不足,已归档停止维护。

2025-12-26 15:13:19 99

原创 STLINK

在 Windows 下,使用 WinUBS,从用户态直接控制 USB 设备;如果在安装 udev-rules 之前就插入了 STLINK,在安装后需要重新拔插,使 udev 规则生效,在普通用户权限下也能访问 USB 设备。STSW-LINK007 是用于更新 ST-LINK 固件的应用程序,基于 Java 开发,提供 Windows,Linux,MacOS 版本。官方的烧录程序和固件升级程序均在用户态实现驱动,只需在用户态能获取 USB 设备控制权即可。关于 STLINK 驱动的文档,可以查看。

2025-11-25 11:43:35 643

原创 为什么 Windows 的镜像通常不能 dd 烧录

由于 Windows 的 ISO 没有专门的 FAT32 分区,所以需要 UEFI 固件能支持识别 ISO 9660 的头,并根据头加载 EFI image。或者只能使用 Legacy BIOS 模式启动。ISO 9660 规定,文件系统从第 16 个扇区开始,前 16 个扇区保留,通常每个扇区为 2048 字节;而现代传统的光驱已经消失,取而代之的是 USB 启动,这是一个类似于硬盘的设备,通常使用传统的硬盘启动方式。因为光盘只能写入一次,不能擦除,所以需要为光盘定制专用的文件系统 ISO 9660;

2025-11-24 17:42:43 522

原创 海思 SLE 芯片 Linux 烧录

海思官方只提供了 Windows 下的烧录工具 BurnTool,支持串口,USB,JLINK,网口等方式,但无法在 Linux 下烧录。有人根据开源出来的文档和源码,逆向出,可以在 Linux 等全平台以串口方式烧录。虽然其名字为 ws63,但其同样支持 fwpkg 打包的 BS21 芯片。

2025-11-05 15:19:39 256

原创 GNOME Shell 扩展的管理

新安装了 Ubuntu,将 GNOME 的一些知识点系统化记录下来。

2025-11-04 13:48:48 761

原创 iPhone 无线充电发展历史

iPhone 17 发布了,宣称支持 25W 的无线充电速率,但互联网上总是说其在国内只支持 15W 速率;最近还偶然得到一个磁吸充电宝,就想着把无线充电的知识补充一下。

2025-09-23 15:46:11 3084

原创 IP、ASN 地址分配与域名注册

一些固定的注册信息是记录在 IANA 和 RIR 的 WHOIS 数据库中的。而一些动态的路由信息,需要通过 RRC 来收集。更多的地理信息则需要与 ISP 合作进行原始数据清洗、合成等运算得出。

2025-09-22 11:02:27 1052 1

原创 Python 导入机制

Python 的导入机制让人迷惑,有时导入的是整个模块,有时导入的是对象。

2025-08-28 11:13:44 293

原创 远程查看海康威视 NVR 监控

客户需求为远程查看海康威视 NVR 监控。通过通过观察客户的网络环境,其采用中国电信的企业网络,分配公有 IPv4 地址,但不是专线,每次 PPPoE 拨号时会轮换 IP 地址。

2025-08-19 11:55:01 1652

原创 HTTP 代理环境变量设置

linux 大多数软件自身会读取 http_proxy 环境变量来配置代理。

2025-07-22 10:16:33 238

原创 HTTP API 身份认证

互联网系统通常需要根据用户身份决定是否有资源的访问权限,这就需要对用户进行身份认证(),验证用户所声称的身份。验证手段通常是验证只有用户知道或拥有的东西,比如密码、手机号、指纹等。

2025-07-09 17:42:50 854

原创 STM32Cube 包结构解析

STM32Cube 生态系统是一套完整的 STM32 微控制器和微处理器软件解决方案。

2025-06-24 11:46:49 944

原创 内核命令行参数系统分析

内核通过两个系统注册内核命令行参数解析函数:废弃系统和现代系统。内核运行时,通过调用解析函数。以initrd通过宏向段注册参数解析函数。2 内核启动函数调用进行早期内核参数解析;该函数最终会调用到段中的解析函数。整个过程的系统调用如下:fill:#333;color:#333;color:#333;fill:none;最后回到开头,参数的EARLY选项代表是通过宏注册;不过从解析流程的调度看,在解析完早期参数以后,立马解析剩余参数,所以有没有该标志没有任何实际意义,应该是历史遗留。

2025-06-07 22:14:07 2084

原创 Kernel 仓库与版本发布

托管了很多 Git 仓库,其中大部分是内核开发仓库。有两个仓库需要特别关注:主线仓库和稳定仓库。

2025-06-05 18:38:00 614

原创 使用 cpio 解压 debian 系的 initrd-img 时,只能解压出 cpu 微码 AuthenticAMD.bin

通过查看initrd.img解压后,发现其只解压了头 151 个扇区的内容,包含一个大小为 75K 的 CPU 微码但实际这个initrd.img通过 binwalk 分析下initrd.img是 cpio 存档格式的结束符号,可以发现initrd.img所以这个initrd.img其实是由 3 个 cpio 存档和一个使用 zstd 压缩后的 cpio 存档组成。而 cpio 命令行解析到第一个结束符后就停止了,所以对于 debian 系的initrd.img,需要使用解压后可以发现三个early和一个。

2025-06-02 00:53:29 536

原创 USB Type-C 连接器与线缆详解

电源引角:4 个 GND + 4 个 VBUS,共 8 pin高速差分对:4 对,共 8 pin低速差分对:2 对,共 4 pin配置通道:CC,2 pin辅助通道:SBU,2 pin在 Type-C 之前,通常可以通过形状区分主机和设备:方形的 Tpye-A 为主机,其它形状为设备。Host 的 CC 使用上拉电阻,Device 的 CC 使用下拉电阻;Host 端必须监控 CC 信号;只有在监控到 CC 信号在正确的分压范围内,才会开启 VBUS 供电。

2025-05-28 18:37:48 3889

原创 glibc 库解析

GNU C Library 目标是为 Linux 内核操作系统提供用户态的 C 标准库;由与 C 标准库无法直接调用内核,所以 glibc 还实现了 POSIX.1 接口,用于与内核通信。fill:#333;color:#333;color:#333;fill:none;kernellibc.sokernelPOSIX.1ISO C我们通过关注一个最常见的。

2025-05-24 18:05:34 1271

原创 Qemu 磁盘扩容

扩展分区实际就是修改分区表中分区占用的扇区大小。有两种方法修改分区表,一种是进入到虚拟机中执行,只需打开虚拟机就行;另外一种直接将 qcow2 盘挂载到宿主机上,这需要借助。块大小即盘的实际容量,使用 Qemu 自带的磁盘工具。首先打印现有的分区表,确定需要扩展的分区为。

2025-05-15 17:33:07 866

原创 Kubernetes RuntimeClass 与 CRI 的分析

蚂蚁密算开发的 kuscia 是一款基于 k3s 的调度系统。在使用过程中发现其无法指定不同的容器运行时。初步分析,kuscia 的 server 节点使用的是开源。节点使用的是蚂蚁修改过的 kubelet 实现,一起放在 kuscia 中打包的。接口,也就是后端不依赖 containerd,而是完全自己实现整套类似 runc 的共能。变量,导致其无法指定不同的容器运行时。定义的一个接口函数,究竟是哪个结构体实现的呢?查看 kubelet 相关函数的实现,发现其在。,它用来实现 cri-api。

2025-05-13 18:42:15 1274

原创 go module 模块与源码的对应关系

模块是一组同时发布、拥有相同版本号的软件包集合。模块根目录包含go.mod,包目录下最少要有一个.go文件。

2025-05-08 23:04:55 895

原创 Docker Engine 存储驱动框架

Docker 镜像由一系列层级构成,每一层只存储与前一层的差异,。在使用 Dockerfile 构建镜像时,每条添加或删除文件的指令都会生成新的层,而其它不更改文件系统的指令只会在 Config 中体现。通过命令行查看镜像的构建过程,只有SIZE查看 nginx 的 manifest 验证层数,其layersDocker 容器是在 Docker 镜像的基础上添加一个新的可写层,也称为容器层,以保存容器运行期间对文件系统的更改。当容器被删除时,只会删除最上层的可写层,底层镜像保持不变。其中。

2025-04-30 11:57:22 841

原创 鲲鹏 TrustZone 初探

通信框架从程序开发者角度看,是将 TA 编译为 libcombine.so 动态库由 CA 调用。而对于 TA 的编译,由于在 TEE OS 中只内置了 LIBC 和 OPENSSL 库,如果使用其它库需要以静态链接的形式编译 TA。CA 与 TA 之间的通信依赖于 REE 侧的通信框架,包括用户态的 API 库、守护进程以及内核驱动;这两个环境各自拥有自己的资源,包括内存和 Cache。在被严格隔离的资源之上,TEE 和 REE 侧分别拥有自己的操作系统,用来执行用户的可信应用。

2025-04-27 16:13:46 432

原创 docker pull 过程解析

其中 Manifest 和 Config 时 JSON 格式的文本文件,Layer 是 tar.gz 格式的二进制文件。2. 请求 config.json (GET /v2/library/ubuntu/blobs/<config.digest>)1. 请求 Manifest (GET /v2/library/ubuntu/manifests/latest)3. 请求层文件 (GET /v2/library/ubuntu/blobs/<layer.digest>)返回压缩的层文件 (tar.gz)

2025-04-24 17:37:57 1219

原创 ubuntu 安装 ttf-mscorefonts-installe

时,它会从 sourceforge 下载字体;它会重新下载字体,并调用。

2025-04-17 17:29:44 423

原创 Chrome 自带的 Google Translate 配置代理

【代码】Chrome 自带的 Google Translate 配置代理。

2025-04-15 17:35:05 1528

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除