哔哩哔哩频道两万订阅纪念
坑边闲话:这是一期 B 站专栏,首发在 B 站。还是老样子,最权威版本以本博客为准。自笔者在 2020 年 4 月 3 日发布第一个随手拍摄的视频开始,到 2025 年 5 月 6 日正式达成两万订阅量,笔者足足花了五年零一个月的时间。对于一个不会整活儿的知识区业余 UP 主,这实在是一个很漫长但很有意义的过程。 B 站的朋友们好啊,最近后台提醒粉丝量达到两万,看到这个消息我是非常开心的。 平时每次看到 B 站创作中心右上角的「成为UP主的第 xxx 天」提醒,我都感觉很不可思议,仿佛前几天才上传第一个视频。 恍然间,五年零一个月就过去了。 1. 自媒体成绩单· 如果做自媒体有一个赚钱成绩单,我想我肯定是不及格。 我在上大学的时候就是知乎用户。大概是 2019 年的某一天,我在知乎看到一个问题:简中互联网是不是已经彻底沦为垃圾场?(大概是这个意思,反正不是很乐观的描述) 我浏览完几个回答后感觉心里很难过,因为当时我还是一个很正直、很傻瓜的热血青年,尚未经历各种现实的毒打。那时我自信满满地立志要从自我做起,输出有价值的内容,绝不复制粘贴一些无从考证、不可复现的内容。 这世界上最...
对群晖官方认证硬盘的看法
坑边闲话:在企业级存储领域,群晖和威联通都是事实上的小厂,但笔者认为这两家公司颇有世界级正规公司的风范:控制产品销售单价,严禁经销商窜货,配套设施完善,拥有精心设计的多语言官网。最近群晖尝试在 Plus 机型上进行强制硬盘认证,即非 Synology 认证/出品的硬盘将不被系统支持。毫无疑问,这一举措在许多 NAS 玩家中引起了轩然大波。本文将尝试不加任何情绪地对这件事进行分析。 截至 2025 年 4 月 28 日, 参见图 1,在群晖全球官网可以发现,对于较老的机型如 DS923+,官方依然提供第三方硬盘认证列表,支持如下硬盘: 希捷 IronWolf, SkyHawk, SkyHawkAI; 东芝 N300, MN06, MN07, MN08; 西部数据红盘、紫盘; 参见图 2,在群晖中国官网可以发现,对于较新的机型如 DS925+,官方只提供自家的硬盘。虽然不排除 Synology 后面会扩展兼容性列表,但以目前的风向来看,群晖上层大概率是想只允许用户使用自家认证的硬盘。 1. 小小吐槽· 为方便头铁的读者选购群晖认证硬盘,此处提前分析一下群晖认证硬盘的...
ZFS 设计理念真的落后了,但它很稳定
坑边闲话:闲话 哔哩哔哩原文 Debian bookworm 的 backport 频道正式推送了 OpenZFS 2.3.1, 没错,就是这么快! 一般来说,作为社区 package 打包维护者,不太可能在 1.0, 2.0, 3.0 就积极引入,第一个小版本 如 2.01, 3.01 才是引入的最佳时间。这种版本 和大版本整数发布不会有很长的间隔 功能和大版本整数版基本相同 修复了整数版本无心之失产生的一些小问题 我第一时间进行了更新,然后开启了 direct-IO 进行了测试。 总体来看,性能表现和我预料的差不多。 写操作· direct-IO 在写入方面和 buffered-IO 没有太大区别,之所以写入速度没有突飞猛进,主要是 ZFS 的瓶颈在 ZIO 后端上,把压缩、去重、加密全部关掉,速度也没有太多提升。本质上是因为 ZFS 希望尽可能多地合并写入,把多个 write 合并为一个合适的 record. 然而,这种优化逻辑是为机械阵列而生的,全 nvme 闪存并不需要这个逻辑。 综上,direct-IO 并没有带来性能上的惊喜,但是这仍然属于一个重大的进步...
面对质疑我选择继续说真话
坑边闲话:最近我做了两期与家庭 NAS 和个人数据备份相关的内容,但收到了好多批判的声音。其中认为我不懂 NAS 的不在少数,选择在 QQ 群和我当场对质人的也有很多。这里我想集中回应一下。 哔哩哔哩原文 我现在依然坚持我的观点:如果你的机械阵列存储的多是热门电影,或者此类可公开下载的内容占比已经达到现有数据的 85% 以上,那你基本可以告别机械硬盘了。 之前我在家庭仅闪存 NAS 里说得有点急(因为我刚从苏格兰旅游回来,手头的事情一团乱,然而我想趁着当时头脑比较清楚就赶紧录了素材。)事实证明视频较长,我后面说话的时候嘴巴已经有点不够流畅了。 下面我再把核心观点罗列一下。 1. 杀死机械盘的不是 SSD,而是高速带宽· 此前我们从没想过家庭网络可以做到 1000Mbps,甚至部分发达地区已经开始推广 2500Mbps,这是很吓人的。日本某些地区的万兆因特网也开始普及,比起他们我们还有点差距,但我们现在这个速度已经很够用了。这时候,使用网盘作为存储流媒体数据的想法就很自然、直接了。 使用机械阵列存储大量电影,这种用法自 2010 年代开始在群晖用户流行开来。毕竟当时的网络完...
漫谈 CloudDrive2 的文件缓冲机制
坑边闲话:本文最初发布于哔哩哔哩专栏。这篇文章属于临时起意,后来审阅文章时发现技术细节上有严重问题,该部分描述目前已经被修复,一切内容以本博客为准。 哔哩哔哩原文 此前我在视频 BV1iAPgexEi6 里提到可以使用 OpenList/CloudDrive/Rclone/Raidirve 这种网盘工具把网络盘挂载到本地,实现云盘本地化使用。现在我感觉有点过于理想了。 想说的东西很多,今天这篇专栏就当作打草稿,读者且来批判性观看。 1. CloudDrive2 的缓存模型· 任何读写模型都有流控机制,哪怕是本地的 PCIe NVMe 硬盘,也会借助 PCIe 协议的 Credit-Based Flow Control 做流控。当然,这不同于 TCP 的滑动窗口,PCIe 流控协议更倾向于低延迟,目标是防止缓冲区溢出。 所以按照这个观点来看,在我们的 PC 通过 CloudDrive2 往网盘写入数据的过程中,CloudDrive2 也需要有一个缓存、流控协议用来处理本地的写入请求,防止本地的文件浏览器或者 rsync 这种 sender 把 buffer 写爆。 Clou...
小小更新一下异地组网拓扑
坑边闲话:最近这段时间一直在慢慢调整我的异地组网拓扑。之前那套中心化方案虽然国内访问体验非常丝滑,但洲际链路延迟实在让人抓狂,很多操作总感觉“卡半拍”。趁着春节假期有空,我干脆把整个网络拓扑重新梳理了一遍,顺便也测试了几种不同的跨境连接方式。没想到这次小小调整,整体体验提升非常明显,也顺便把一些踩过的坑记录下来,方便后面复盘,也希望对有类似需求的朋友有参考价值。 哔哩哔哩原文 此前一直用的是 BV1hm4y167F5 介绍的中心化组网方案,在国内体验特别好,但是洲际延迟太高了。用了一阵子 Cloudflare Tunnel 的基于云管理的服务发布隧道,感觉也还挺好,而且免费!白嫖党狂喜! 可惜的是 Cloudflare Tunnel 貌似对 HTTP 之外的协议支持不行,SSH 之类的无法轻松使用。后来群友建议可以自己优选 VPS,然后自己做优化拓扑。于是购买了白丝云的 AS9929 VPS,延迟从 310 降低到了 205 左右,很多协议的性能提升非常明显。 不过遗憾的是 Vim 编辑器在 200 毫秒的延迟下依然很难用,我选择继续使用 VSCode. 如图所示,现在的...
ZFS 记录值很重要
坑边闲话:recordsize 是个理解上限和下限都很不平凡的概念,普通人可能认为大文件连续吞吐用大的 recordsize,小吞吐、改写就用小 recordsize,然而这并不够深入,甚至在某些场景下会造成误解。 哔哩哔哩原文 1. 深入理解 recordsize· recordsize 并不是一个具体的概念,而是在将 dirty page 往磁盘同步时,采用的最大分片值。因此,使用大的 recordsize 会导致分块数量变少,占用的指针数量也变少,但压缩空间变大容易达成更高的压缩率。 然而,如果要对某个文件进行改写,大的 recordsize 极有可能造成恶劣影响。比如一个数据库的 .db 文件有 10GB, 但是一次只改写里面 8KB 的数据,这时如果使用了 128KiB 的 recordsize,将导致要先读出其中 128KiB 的连续内容,然后改写其中的 8KB 数据,最后申请 128KiB 的新空间并把改完的内容写进去。由此可见,一次 I/O 就造成了 128/8=16 倍的写放大。 之前我反复强调 recordsize 对 ZFS 存储占用的影响,今天有个...
使用 Sanoid 自动管理 ZFS 快照
坑边闲话:ZFS 快照任务非常关键,然而仅使用手动快照在大多数情况下无法避免意外事件,借助自动化的快照机制,可以有效提高抗风险能力。本文基于 Debian bookworm 系统介绍开源快照管理软件 Sanoid 的使用方法。 1. 快照的自动管理· 此前笔者的快照也是自动化编排的,只是行为比较简单。笔者编写了一个自动执行快照的 Systemd Timer,然后定期执行某个脚本: 在脚本里定义了执行快照的逻辑; 在 Systemd Timer 和 Service 定义执行时间和执行路径。 然而,自己重复造轮子的代价就是会翻车,然后重复解决前人已经解决的问题。因此推荐使用开发多年的工具 Sanoid. 该工具原理与笔者此前的开发工作类似,只是它以 TOML 配置文件对快照任务进行了抽象,而且增加了对快照生命周期的支持,能够自动销毁过期的快照。 2. 安装 Sanoid· Sanoid 的主要开发语言是 Perl,因此不需要经过复杂的编译即可使用。目前 Sanoid 没有集成到 ZFS 工具链上游,也没有集成到 Debian 发行版的软件包仓库,因此用户需要安装 Debian...
使用 ZFSBootMenu 安装 Debian 12 系统
坑边闲话:ZFS 有千般好,但是将 Linux 安装在 ZFS 上仍颇具挑战性。GRUB 2 已支持引导 Linux on ZFS,但只有 Ubuntu 等胆大的发行版内置了 ZFS 启动支持,而 Debian 这种比较尊重开源许可的发行版并不支持。本文介绍使用 ZFSBootMenu 在 ZFS 文件系统上安装 Debian 的方法。注意,本方案仅适用于 x86 架构。 1. 前期准备· ZFSBootMenu 是一个专为 root-on-ZFS 设计的 Linux bootloader,它支持快照和磁盘加密。ZFSBootMenu 本质上是一个小型的、独立的 Linux 系统,它知道如何在 ZFS 文件系统中查找目标 Linux 系统的内核和 initramfs 镜像。当识别出合适的内核与 initramfs,ZFSBootMenu 会使用 kexec 命令启动该内核。 kexec kexec 是 Linux 内核中的一个功能,它允许在不经过硬件重新引导的情况下直接加载并启动一个新的内核。这可以显著加快内核的重启过程,因为跳过了固件(BIOS/UEFI)初始化和引导加载程...
Linux Samba 文件共享配置与调优
坑边闲话:使用 Linux 系统做文件服务器其实很简单,需要的步骤其实相当少。本文介绍基本的共享配置流程。 1. 安装 SAMBA 服务器· 以 Debian 12 为例安装 samba 服务器: 12sudo apt updatesudo apt install samba 2. 添加 Samba 用户· smb 是典型的 Client-Server 架构,基于内建的统一身份认证。在使用 smbpasswd 添加用户时,该用户名必须已经存在于 Linux 系统中,即作为一个本地系统用户存在。这是因为 Samba 的用户管理基于系统用户,但它为每个用户单独维护了一个 Samba 用户密码数据库。 如果用户尚不存在,可使用以下命令创建一个新的系统用户: 1sudo useradd -m -s /sbin/nologin <NEW_USERNAME> -m:创建用户的主目录。 -s /sbin/nologin:指定一个无效的登录 shell 以防止用户直接登录到系统。如果你希望允许用户登录到系统,可以选择其他 shell 如 /bin/bash. 为该用户添加 S...
Linux KVM 虚拟机配置教程
坑边闲话:KVM (Kernel-based Virtual Machine) 是一个基于 Linux 内核的开源虚拟化技术,它在 2006年 由 Avi Kivity 和他的团队开发,并于 2007年 合并到 Linux 内核中,成为主流虚拟化解决方案之一。KVM 使用较为方便,生态非常良好,本文介绍如何在 Linux 上配置并使用 KVM 虚拟机,同时会介绍 Intel VT-D、AMD-V、IOMMU 等硬件功能。 1. 初始化 Linux 系统· 在开始之前,读者需要有一个支持裸机安装的 Linux 系统,本文以 Debian 12 为例。 强烈建议使用最小化安装程序,因为有些新手非常依赖图形化界面配置虚拟机,导致迟迟无法深入理解技术细节,学到最后发现只是学了一个类似 VMware Workstation Pro 的软件。GUI 是用户友好型发明,但是对于学习技术、了解细节、拓展思维并不友好。 1.1 调整 Console 界面字体大小· 最小化安装的 Linux 没有桌面环境,只有一个 console tty,因此建议执行以下命令,将界面字体设置为 Termius...
使用虚拟化方式玩转 ZFS
坑边闲话:本文最初发布于哔哩哔哩。来到英国,我就带了一个 AMD 7840HS 的零刻 GTR7 小主机,外加一台 MacBook Pro, 两者都在各自的领域里表现良好。然而对 AMD 的虚拟化 bug 使得我没办法简单地在 GTR7 上直接安装 Linux,因此如何在一个 Windows host 上使用 ZFS 变成了一个困扰我良久的问题。 哔哩哔哩原文 好几年前我为了不买软路由工控机,琢磨了一套不需要额外硬件的软路由方案,虽然很复杂,但确实有效。BV1Hv411H7WS 最近一段时间也想搞个 NAS,但是预算实在有限,于是用这套 GTR7 小主机搭配 Windows 10 系统打造了一个性能还挺不错的 ZFS NAS. 1. 难点在于如何使用物理硬盘。· Hyper-V 虚拟机可以直接通过块映射的方式使用雷电硬盘,基于相同原理,另一个三星 T5 用来做备份。 该方法的一大好处是后续换了物理 NAS,无需迁移数据,旧的硬盘插上去就能直接使用 zpool import 导入存储池。 总的来看,除了 Hyper-V 块设备虚拟化层带来了一些性能开销,其余方面还是颇为简...
Mac mini 运维心得
坑边闲话:自 Apple Silicon 发布以来,其低功耗高性能的特性受到了很多用户的喜爱。相比之下,x86 端设备高能耗高性能的表现让人越来越不满意。高功耗带来的发热、噪音在家用、办公室用场景下总是令人感到不适。恰逢搭载 M4 系列芯片的 Mac Mini 上市,笔者购买了一款 M4 Pro 芯片的基础款 Mac Mini, 尝试用它来做服务器使用。 哔哩哔哩原文 Mac mini 做服务器已经有一阵时间了,折腾的地方还挺多。 1. 远程控制· 在远程控制这一块, 局域网内可以用 Mac 间的屏幕共享,基本上很丝滑; 外网的话用远程桌面就很卡。Windows VNC 连接任何场景都比较卡。 SSH 需要从头学一套 launchd 命令,总体来说如果有 Linux 经验,上手不算难。 2. 容器支持· 麻烦的是容器。现在 Mac 的 OrbStack 容器不支持调用 Apple VideoToolBox,也就是没办法硬件加速编解码视频。要想用Jellyfin,必须直接装 macOS 版。如果出门在外服务出了问题,就只能远程桌面维护,相对来说还是很难受的。 另外就是有...
ZFS 的 ARC 策略
坑边闲话:Allan Jude 是真正的存储专家,他是一位资深的程序员和开源贡献者,而且运营着一家声誉良好的公司。笔者一直 follow 他的动态。本文介绍他的一篇博客。 哔哩哔哩原文 最近看到 Allan Jude 的一篇关于 ARC 的很有意思的文章。 ZFS 的 ARC 缓存是一种比较高级的 cache 策略,它不同于常见的 LRU 和 MFU,反而是同时使用多种缓存策略,然后通过 P 值(可以理解为不同策略的分界线)和幽灵引用列表对两种策略的占比进行动态调整,这类似于某种滑动窗口。这一点我在之前的视频里讲过,这里就不再展开了。 Allan 的这篇文章主要介绍了 OpenZFS 2.2.0 带来的 ARC 新特性。我们知道,ARC 里缓存的不仅仅是文件,还有元数据、块引用、间接块等非文件数据(后面统一叫 metadata)。metadata 等数据在 ARC 里的占比在老版本的 ZFS 里一直是固定的 75%,这很不好,因为存储所面对的计算场景可能有自己的特殊要求,如果 75% 不够用,将会产生效能下降。 那么如何优化 ZFS 才能让 metadata 占比更灵活...
如何代理 Docker 官方镜像的流量
坑边闲话:现代软件的开发、测试、部署基本离不开容器技术,然而大陆地区的防火墙屏蔽了 Docker 官方的 Registry,这无疑给普通开发者带来了很大的负担和痛苦。本文介绍一般场景下绕过防火墙的阻断的方法,帮助开发者较快地访问官方 Docker 镜像平台。 1. 使用 OpenClash 规则集· 作为一个成熟的程序员,应该学会使用 Clash 等代理工具,毕竟良好的技术网站访问体验是增进技术的重要支撑。笔者选择使用 OpenClash 这款 OpenWrt 插件作为主代理工具,用以给局域网中的所有设备提供透明代理服务。 如图 1 所示,在 OpenWrt 的「服务」→「OpenClash」→「覆写设置」→「规则设置」页面,勾选「自定义规则」,随后将如下内容按照图示添加进去。 12- DOMAIN-SUFFIX,docker.com,🔰国外流量- DOMAIN-SUFFIX,docker.io,🔰国外流量 提醒:请查阅你 Clash 配置文件中的国外分流规则的名字,用以替换示例中的「🔰国外流量」。 重启 OpenClash 后,以 docker.com、docker...
四年磨一剑!关于 ZFS 的全闪存突破!
坑边闲话:本文最早发布于哔哩哔哩专栏。ZFS 凭借 ARC 缓存设计,使得它在内存足够大、足够安全的情况下性能极高。注意,并不是所有的基于内存的缓存系统都有极高的性能和良好的存储层次化兼容性。然而,在 NVMe 时代,底层设备完成了革新,NVMe 允许 64K 个队列和 64K 的队列深度,这在 SAS/SATA 时代是天文数字。ZFS 亟需革新存储底层,以适应 NVMe 设备。Direct-IO 就是迈向新时代的第一步。 哔哩哔哩原文 最近发现 OpenZFS 合并了一项重要的内核支持 PR:Direct-IO. 说人话就是绕过 ARC 内存级缓存,直接读写存储池。 直接的好处就是对全闪存的支持变得更好了!毕竟 NVMe 硬盘自身就相当于很多的 CE 做 RAID0,而且自身支持强大的随机与多队列,因此给 NVMe 设备做缓存其实并不明智。事实上,给 NVMe 开缓存,在性能上往往适得其反。PureStorage 的 NVRAM 模块一般都只有几个 GB,足以说明问题。 此前我认为这在 OpenZFS on Linux 上支持 Direct-IO 是不可能的,因为这违背...
Windows SSH server 配置完全指南
坑边闲话:笔者使用 SSH 已经有相当长时间了,只是笔者一直误以为 SSH 仅支持 Unix 系统。偶然发现,从 Windows Server 2019 和 Windows 10 1809 开始,微软将 OpenSSH 集成到了操作系统中,这意味着我们可以直接在 Windows 上使用原生的 SSH 功能了!虽然体验没有 Unix 系那么完美,但是在一些特殊场景还是具有很大的作用。本文将带你深入了解 Windows 上的 OpenSSH 服务器配置,无论你是想远程管理服务器,还是想搭建一个安全的文件传输环境,这篇文章都能帮到你。 Windows 的 OpenSSH 并不是开箱即用,甚至也不能一行命令就启用。这说明 SSH 连接在 Windows 场景下是二等公民。微软的官方文档是最终权威教程,本文只做简单介绍。 1. 什么是 OpenSSH?· OpenSSH 是一个开源的 SSH 协议实现,它提供了加密的网络通信服务。简单来说,通过 SSH 你可以: 远程登录到计算机并执行命令 安全地传输文件(通过 SCP 或 SFTP) 建立加密的网络隧道 在 Windows 中集成...
TrueNAS SCALE 数据备份教程
坑边闲话:存储是数字资产的基石,没有可靠的存储,就没有可靠的服务。基于 ZFS 文件系统的 TrueNAS SCALE 具有强大的数据复制能力。本文详细介绍 TrueNAS SCALE 的备份功能。 1. TrueNAS Replication 功能介绍· Replication 指的是「复制」,在 TrueNAS 语境里指的是 zfs send 和 zfs recv 过程,即直接复制 ZFS 数据集。这里的复制并非是 rsync 的文件级别复制,而是 LUN 级别的复制。 TrueNAS SCALE 的 Data Protection 面板集成了所有可用的备份服务,以 24.04 为例: Scrub Tasks Cloud Sync Tasks Periodic Snapshot Tasks Rsync Tasks Replication Tasks Periodic S.M.A.R.T. Tests 2. 创建 SSH 机密和 SSH 连接· TrueNAS 或者其他的系统,实时远程备份均依赖网络。既然有了网络,就需要考虑认证问题。本节介绍 TrueNAS Repli...
个人银行、互联网海外账号创建指南
坑边闲话:中国大陆的银联系统和中国大陆的互联网类似,都有着不可描述的局域网属性。纵然该体系下的服务在中国境内比较方便(如果你愿意付出一定的隐私代价),但是出国之后几乎是寸步难行。许多海外 App 因为审查机制门槛,并没有选择在中国的苹果 App Store 同步上架,而中国人创建海外账号则面临支付问题。本文介绍了笔者身处英格兰时,创建海外银行账户和大型互联网公司用户账户的经历。 1. 手机号· 手机号、银行卡、Apple ID 都很重要,但是申请时有先后顺序。目前来看,手机号是先要拥有的。 1.1 CMLink· 从中国来到海外,可以办理 CMLink 临时用一用,随后可按需选择 Vodafone 或者 O2 等本地服务商。 虽说 CMLink 价格便宜,但是它有被窃听的风险。因此不建议长期使用。 CMLink Fair Use Policy CMIUK 对通过我们的服务或通过互联网(包括通过指定的任何服务器传输的数据信息)传输的数据或信息的安全性和完整性不作任何保证,也不承担任何责任。CMIUK 不监控,不控制,也不对通过我们的网络或服务传递的信息内容承担任何责任。 所有通...
使用 Dropbox 替代 OneDrive、坚果云
坑边闲话:作为一个 OneDrive 和坚果云双持的用户,多年来笔者一直对自己的数据同步与存储机制感到较为满意。其中:OneDrive 凭借几乎免费的价格和 1TB 的可靠云存储,被笔者当作照片备份工具;坚果云凭借着强大的国内、国际可用性及增量同步机制,被笔者当作主力文件同步工具。 笔者在读本科时一直想使用 Dropbox 作为单一云存储,可惜因当时的网络和价格问题最终没有成行。如今笔者发现在 30% UniDays 优惠券加持下,Dropbox Plus 2TB 服务一年仅需 £67.12,约合 ¥627,总体还是可以接受的。 本文介绍如何在遵循狡兔三窟、鸡蛋不放到一个篮子里等原则下,使用不同服务商的云服务的过程。 1. 迁移动机· 随着中国大陆言论审核越来越严格,云盘随时面临资料「被和谐」的隐患。本人自认为云盘里没有违规的文件,如色情、暴力、反动内容。然而「违规内容」的认定缺乏统一标准,比如难以确定在未来的某一天某个关键词是否会成为违禁词。上述情况使得原本正常或有些许擦边的文件也可能在未来的某一天变得不可用。此外,本人未来相当长的一段时间将会居住在海外,因此把资料同步到一...
Ghidra 逆向 p2:使用 Python 编程
坑边闲话:Ghidra 使用 Java 进行开发,因此核心运行时是 JVM. 与 JVM 沟通的最简单方法自然是用 Java 语言,但用 Java 写插件、脚本的代价太高,因此 Ghidra 内置了 Jython(类似于 CPython 2,是一种 Python 2 的 Java 实现),支持使用 Python 2 语法开发脚本。Python 程序通常比等价语义的 Java 程序短很多,大概只有 Java 的五分之一到十分之一长度。不幸的是,Jython 目前仅支持到 Python 2.7 标准。 1. Ghidrathon:Ghidra 的 Python 3 框架· 继续使用 Python 2 语法开发插件是不明智的,本章介绍 Ghidra 扩展:Ghidrathon. 1.1 Ghidrathon 框架简介· Ghidrathon 基于 Jep 进行开发。Jep 通过 JNI 将 CPython 嵌入到 Java 中。 在 JVM 中嵌入 CPython 3 的一些好处: 解释器更加专业成熟:相比较 Jython,使用本机 Python 3 解释器快得多。Python ...
Ghidra 逆向 p1:工具的基本使用方法
坑边闲话:笔者使用 IDA Pro 进行程序分析已经有很多年了,来到欧洲之后发现大部分人喜欢用开源免费的 Ghidra,或许是他们比较尊重版权而不屑于使用盗版的 IDA Pro 吧。既然决定入乡,随俗便是不可避免的。经过一番学习,我终于初步学会了如何使用 Ghidra 进行逆向分析。 1. Ghidra 安装· Ghidra 使用 Java 进行开发,因此具有极好的跨平台能力。Java 代码“一次编译,处处运行”,因此所有平台的 Ghidra 安装包是相同的。Java 的图形化界面没有原生开发那么细腻,所以 Ghidra 初看上去有些粗陋,但看习惯了也还好,毕竟它的功能强大、逻辑严密。这就好比找了个外貌没那么惊艳的女朋友,但是因为她内在修养很好,相处久了也感到舒服。 1.1 安装 JDK· JDK 是 Java 开发库,只有安装了 JDK 才可以运行 Ghidra. macOS 和 Linux 通过包管理器安装完之后,需要在 ~/.bashrc 或 ~/.config/zsh/.zshrc 或其他 shell init 脚本里指定 ${JAVA_HOME}...
使用 ksmbd 配置文件共享
坑边闲话:ksmbd 是韩国三星集团工程师 Namjae Jeon 基于 Linux 内核态开发的一个 SMB 文件共享服务器,其源码现已合并到 Linux 内核主干。传统的 Samba 工作在用户态,使用时会有较大的性能开销。但截至目前,Samba 的 smbd 明显要更加完善,支持的功能更多。因此,本文并不尝试带领读者将 Samba 替换为 ksmbd,而是想带大家尝试新鲜事物,窥探未来的文件存储发展方向。 SMB 协议:全称 Server Message Block. SMB 协议最初由 IBM 的 Barry A. Feigenbaum 于 1983 年开发,用于在 IBM OS/2 的网络里共享文件和打印机; smbd:Samba 的 SMB 实现。 ksmbd:前缀 k 代表它工作在 Linux 内核态。 1. SMB 协议简史· SMB 是非常重要的一个网络文件系统协议,它涉及到多个彼此差异很大的版本,因此有必要对其发展历史进行梳理。 历史部分主要参考维基百科相关页面,使用 ChatGPT 4 机器翻译加人工精调。 1.1 SMB 1.0· Barry F...
在容器中运行群晖 DSM
坑边闲话:群晖的 DSM(DiskStation Manager) 系统是家用 NAS 的典范,有着易用的人机交互界面和丰富的系统套件,而这些特性是开源方案所不具备的。然而,DSM 只能运行在群晖的硬件上。 1. 缘起 DSM· 笔者早在 2017 年 2 月也即本科二年级的时候,曾对群晖 NAS 产生过一丢丢的兴趣,主要原因是网上很多人都说 NAS 很有用。本科时候总是满脸热忱,对新奇的东西充满了研究的兴趣。当时用了一台基于 Intel Core i3 550(第一代酷睿)的 PC 机打造了黑群晖系统。那时候新版系统还是 5.x,采用 U 盘引导。因为人在数学系,接触计算机设备的时间不多,所以这台设备很快就被搁置,年底已经彻底变为了 Linux 学习机。 不过当时的 DSM 给我留下了深刻的印象。 再到后来,我拥有了自己的 NAS,而这时已经是 2021 年 4 月,距离我第一次用 DSM 已过去了四年时光。 可惜后来我用的并非白群晖,而是基于 VMware ESXi 的虚拟化 TrueNAS SCALE. TrueNAS SCALE 和 ZFS 的教程我已经写过很多很多...
关于 NAS 系统稳定性的思考
坑边闲话:有大佬曾说过,一个可用的文件系统需要三到五年的开发时间。一个基于某种存储系统的 NAS 系统显然需要的时间更多一些,毕竟 NAS 系统还要解决网络和服务的问题。 最近绿联新系统翻车的新闻刷爆了 NAS 圈,对此我感到毫不意外。我想发表三点个人意见。 1. 存储系统的研发是困难的· 难就难在如何让普通用户也能轻松使用。 知乎用户 AlphaArea 曾经无情嘲笑群晖系统卖的贵,认为群晖就是 Linux 加 KVM,然后靠容器撑起一片天。事实真的如此吗? 说到底,事实确实就是如此,但这并不代表群晖没有科技地位。事实证明,把一套复杂的东西封装好并做成绝大多数人都能上手的产品,绝非一件容易的事情。而且,这里面还会涉及到一些核心组件的开发。 文件系统是最重要的,但是在 NAS 系统中貌似也是最不起眼的,毕竟绝大多数厂商都没有能力订制属于自己的文件系统,只有强如 Apple、Microsoft、IBM 才有兴趣、有实力打造自己的文件系统。此外,很多优秀的文件系统都是开源的,拿来主义岂不美哉? 做民用 NAS 本质上是做用户交互。用命令行确实管用,但是并不好用,只有对 Lin...





























