lfs from riscv
download: https://github.com/Jvlegod/lfs-from-riscv/releases/ 1 环境搭建全程建议给执行的用户目标权限. 这样后面就尽量别用 sudo, 容易出错. 1sudo chown -R lfs:lfs $LFS/tools $LFS/sources $LFS/usr $LFS 如果没有创建该用户. 123456# 创建 lfs 组sudo groupadd lfs# 创建 lfs 用户并加入组,指定 bash 为 shellsudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs# 给 lfs 用户设置密码sudo passwd lfs 后期恢复权限. 123sudo chown -R root:root $LFS/toolssudo chown -R root:root $LFS/sourcessudo chown -R root:root $LFS/usr 安装 riscv64 所需要的模拟器. 12sudo apt install qemu-user-static...
二进制安全调研
二进制安全用户态 Roadmap本次目的为研究, RISC-V 架构在用户态执行时的漏洞检测, 分析, 利用, 测试, 逆向, 插桩, 运行时监控能力的可能性. 希望后续能够 proting RISC-V 相关的一套二进制安全工具链, 能覆盖: 从漏洞发现 => 原因分析 => 利用验证 => 运行时约束的完整闭环能力. 为 RISC-V 用户态软件提供从开发到上线的全流程安全维护能力. TODO: 可以看到本篇中涉及到的软件生态是非常复杂的, 还有很多软件我并没有详细地去介绍和运行, 毕竟不能讲空话, 这个工作量巨大, 需要很多的积累才能一步步补充完整, 如果没有亲自去涉足笔者是不会轻易口嗨的, 因此本篇中的话语都是有依据可信的, 不可信的部分会单独进行一些说明. 0 写在前面的话再次强调, 本次的调研的目的是为了了解用户态二进制安全领域相关的关键路径, 便于为了后续的探索铺路(后续如果进一步去研究内核态的情况了会另出一版) 本次探索的难点在于两个方面: 第一个难点是我如何得知自己探索的软件在生态内是否是关键软件?...
Linux 内核社区交互与补丁提交指南
Linux 内核社区交互与补丁提交指南本指南记录了向 Linux Kernel Mailing List (LKML) 及其分支列表(如 RISC-V)发送邮件/补丁的标准流程. 以 https://lore.kernel.org/all/6eafdd754222e11a43be4bbc3652f7605d47afa6.1766559840.git.sanjayembeddedse@gmail.com/ 为例. 1 环境准备 git-email b4 2 配置123456789101112# 基础身份配置# git config --global user.name "Keke Ming"# git config --global user.email "ming.jvle@gmail.com"git config --global user.name <"Your Real Name">git config --global user.email...
linux篇-手写文件系统
1 结构体示意此前在虚拟文件系统篇章应该已经列举过一部分结构了, 这里我们继续用一个实例来完成本篇. 这里纠正一下前面的一些概念, 我们编码当中的 sb 指代的是该文件系统的一个实例, 而不是物理意义上的超级块. 类型 表示什么 super_block 一个挂载的文件系统 inode 一个文件或目录 dentry 路径名到 inode 的映射 struct file_system_type. fs_flags. 标志 作用 FS_REQUIRES_DEV 表示文件系统需要块设备(如 ext4/xfs) FS_BINARY_MOUNTDATA mount 参数是二进制数据(较少见) FS_HAS_SUBTYPE 支持子类型,例如 fuse.sshfs FS_USERNS_MOUNT 允许 user namespace 的 root 挂载 FS_RENAME_DOES_D_MOVE 自己处理 d_move(),VFS...
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 偏移 ...