busybox config SSH
BusyBox 配置 SSH1 准备工作我们可以编译需要的 dropbear 工具: https://github.com/mkj/dropbear/releases 123456789# 切换到解压的源码目录下./configure --enable-staticmake PROGRAMS="dropbear dbclient dropbearkey scp"# 将编译完成的程序 cp 到 rootfs 目录cp dropbear /path/to/rootfs/usr/sbin/cp dropbearkey /path/to/rootfs/usr/bin/cp dbclient /path/to/rootfs/usr/bin/cp scp /path/to/rootfs/usr/bin/ BusyBox 极简 rootfs...
uprobe
0 引言 kernel 6.6.109 该篇为了探究 uprobe 的执行流程和结构. 1 测试代码trace_uprobe.ko 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include <linux/module.h>#include <linux/ptrace.h>#include <linux/uprobes.h>#include <linux/namei.h>#include <linux/moduleparam.h>MODULE_AUTHOR("john doe");MODULE_LICENSE("GPL v2");static char *filename;module_param(filename, charp, S_IRUGO);static long...
altlinux
0 引言ALT Linux 是源自俄罗斯的 Linux 发行版, 基于 RPM 软件包格式与 APT-RPM 包管理体系构建. 就算是官网对于系统本身的介绍也不够详细. ALT Linux创始于2001年, 由两个大的俄罗斯自由软件计划合并而来. 2008年它成为了一个大的组织, 从事自由软件的开发和部署、文档和技术资料撰写、用户支持及定制产品开发工作. ALT Linux面向不同的目的生产不同类型的发行.这包括面向家庭、办公计算机、企业服务器的各种桌面发行, 广泛包含各种开发工具和文档的通用发行, 认证产品, 面向教育机构的专用发行, 以及面向低端计算机的发行. ALT Linux拥有自己的基础开发设施和软件仓库, 称为Sisyphus, 它为所有不同类型的ALT Linux提供基础. (https://distrowatch.com/table.php?distribution=alt) PS: 由于这是一个俄罗斯的发行版, 对于中文生态的支持是不太足够的, 甚至官网对英文的文档翻译都不够完善, 下篇我们抛开国别问题对该发行版进行探索. 1 系统理念在 “What Is...
AOSC
AOSC OS 调研0 引言这次调研是继 Clear Linux OS 之后的第二次 OS 调研. 本次探索的对象是安同 OS, 其生态位官方开篇就点出了. 安同 OS(英译: AOSC OS)是一款以 “简明可靠” 为设计及维护目标的 Linux 发行版. 本系统主要面向有一定 Linux 使用经验的用户, 针对个人桌面设备优化体验, 致力于为用户提供开箱即用和简便可靠的工作环境.(https://aosc.io/aosc-os) 通过章节一, 我们可以了解到 AOSC 整体的风格是如何的, 面向的群体又是哪些. 通过章节二三, 我们可以了解到 AOSC 的生态软件, 它着重强调一个跨发行版和通用性, 笔者认为正是这些特性才应了我结尾的思考. PS: 这里官网十分出戏, 封面较为简洁清新. 初看不太正经, 像是一群二次元开发者的民间杰作. 可喜的是网页给我的感受是访问速度很快很简洁 1 AOSC 的全局观1.1 系统特性 高效工作, 以开箱即用作为主要设计目标, 按照官方的说明来讲笔者认为应该是办公类的软件部署较为快捷, 兼容的比较多. 易于管理, 管理工具全面,...
clearlinux
Clear Linux OS 调研开篇先放置一个性能测试对比, 可以看到早期 Clear Linux 足足比 Ubuntu 的性能快了 2.3 倍. 源自: https://openbenchmarking.org/ , 这里可以找到更多的对比图 2025.7.18 Intel 官方社区明确停止 Clear Linux OS 停止维护、停止安全补丁与更新. 为什么要做这次调研? 笔者的理解是: 尽管停止了支持(貌似是因为成本原因), 但我们不能否认, 这是一款相较于其他发行版性能爆炸的 OS, 其到现在仍然能够提供一定的指导意义. Clear Linux OS 是一个怎么样的 OS 发行版? 第一节将总体介绍到. Clear Linux OS 中有哪些值得被借鉴的理念和项目? 调研一下这个发行版有没有什么优秀的 project 能够被继承或者衍生.第二和第三节将讨论, 二三节的工具和内容是贯穿始终的 Clear Linux OS 的底层设计思想是否能够应用到其他架构? 对于 riscv 架构在后续是否也能够提供一个 “riscv performance OS”?...
二进制文件篇-手写ELF加载器
1 概述这是一个从0开始手写的 ELF 加载器. 项目链接: https://github.com/Jvlegod/uELF 今天我们来看 ELF Header 的结构. 12345678910111213141516typedef struct { unsigned char e_ident[16]; // 魔数 + 文件类型 uint16_t e_type; // 文件类型 (ET_EXEC, ET_DYN, ET_REL) uint16_t e_machine; // 架构类型 (EM_X86_64, EM_RISCV, etc.) uint32_t e_version; // ELF 版本 (一般是 1) uint64_t e_entry; // 程序入口地址 uint64_t e_phoff; // Program Header Table 偏移 uint64_t e_shoff; // Section Header Table 偏移 ...
Linux篇-proc文件系统
1 概述/proc 文件系统(procfs, process filesystem)是 Linux 内核对外暴露内核与进程信息的一种虚拟文件系统.它不是一个真正存在于磁盘上的文件系统,而是由内核在运行时动态生成的,用于让用户空间(用户、程序、脚本等)读取甚至控制内核状态. 目录结构. 1234567891011121314151617181920/proc├── 1/ # 进程号目录 (PID=1)│ ├── cmdline # 启动命令行参数│ ├── environ # 环境变量│ ├── fd/ # 打开的文件描述符│ ├── maps # 内存映射信息│ ├── stat # 进程状态│ ├── status # 状态信息│ └── exe -> /sbin/init│├── cpuinfo # CPU 信息├── meminfo # 内存信息├──...
Linux篇-insmod观察
1 概述本篇为 Linux 调试篇,主要是观察 Linux 常见的各种调用过程. 这里我简单书写了一个内核模块. 123456789101112131415161718192021// helloworld.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("Jvle");MODULE_DESCRIPTION("Hello World Kernel Module for Linux 6.6.109");static int __init hello_init(void){ pr_info("Hello, kernel world!\n"); return 0;}static void __exit hello_exit(void){ pr_info("Goodbye, kernel...
Linux篇-platform
1 数据结构1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071// 通过 platform_bus_init 函数进行注册const struct bus_type platform_bus_type = { .name = "platform", .dev_groups = platform_dev_groups, .match = platform_match, .uevent = platform_uevent, .probe = platform_probe, .remove = platform_remove, .shutdown = platform_shutdown, .dma_configure = platform_dma_configure, .dma_cleanup =...
Linux篇-设备树
1 概念 DTS: 设备树的源文件,以 .dts 结尾. DTSI: 设备树源文件的头文件, .dtsi 为扩展名. DTC: 设备树的编译器,将 DTS 和 DTSI 生成 DTB 文件. DTB: 二进制文件,以 .dtb 结尾. Linux 内核启动的时候会在 /proc/device-tree 目录下根据节点的名字创建不同的文件夹. 一般存放在 arch/<arch>/boot/dts/ 中. 编译方式. 123# 以 arm64 为例# 结果在: arch/<arch>/boot/dts/*.dtbmake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs 也可以使用 dtc 直接编译. 1234# 编译dtc -I dts -O dtb -o output.dtb input.dts# 反编译dtc -I dtb -O dts -o output.dts input.dtb 2 节点介绍2.1 根节点根节点是整个设备树的起点. 123/ {...} 2.2...