- 博客(142)
- 资源 (1)
- 收藏
- 关注
原创 文件读取的底层实现——generic_read_iter分析
本文分析了Linux 6.x内核中文件读取和预读机制的实现变化。相比Linux 4.x使用复合页,6.x改用folio结构。在文件系统层,传统的.read/.write方法已被.read_iter/.write_iter取代,如ext2文件系统的ext2_file_read_iter底层调用generic_file_read_iter。文件读取的核心流程是:通过filemap_get_pages获取数据页到fbatch,再通过copy_folio_to_iter将数据拷贝到用户空间。预读机制最终都调用ond
2025-08-18 15:00:00
1453
原创 ubuntu22.04配置远程桌面
摘要 本文介绍了在Windows上连接Ubuntu远程桌面的两种方法:Xorg/Xrdp和Wayland/Gnome-Remote-Desktop。针对Xorg环境,详细说明了xrdp安装配置步骤;对于Wayland方案,则讲解了通过系统设置开启远程桌面的方法。文章还指出Ubuntu 22.04存在锁屏后无法远程连接的问题,并提出使用HDMI欺骗器的解决方案。两种方案均需确保系统显示协议类型(Xorg或Wayland)与所选远程桌面方案兼容,并提供了相关检查命令。
2025-08-18 11:00:00
577
原创 clone系统调用浅析
本文深入分析了Linux内核的clone系统调用机制。在用户态层面,通过glibc的__clone3函数触发系统调用,但内核并不直接使用用户态传入的入口函数地址,而是通过汇编指令在子线程中调用目标函数。内核态处理流程涉及kernel_clone、copy_process和架构相关的copy_thread函数,通过设置cpu_context结构实现线程上下文切换。文章还探讨了线程栈管理、寄存器上下文保存与恢复机制,并对比了x86和aarch64架构的实现差异,揭示了用户态线程与内核线程创建的底层原理。
2025-07-21 15:00:00
1952
原创 buildroot配置项介绍
Buildroot是一个轻量级的文件系统构建工具,适合嵌入式开发。本文介绍了使用Buildroot为QEMU虚拟板(aarch64架构)构建系统的配置过程。主要内容包括:工具链配置(推荐使用外部自定义工具链)、内核设置(支持自定义内核)、文件系统选项以及常见错误的解决方法(如wget证书验证和内核包哈希校验问题)。配置完成后,生成的系统镜像位于output/images/目录下,可直接用配套的start-qemu.sh脚本启动。相比手动构建rootfs,Buildroot提供了更便捷的自动化方案。
2025-07-21 11:00:00
315
原创 linux共享内存
本文介绍了Linux系统中的三种共享内存实现方式:SystemV、POSIX和mmap。SystemV使用shmget等接口,可通过ipcs命令查看;POSIX通过shm_open实现,实际存储在/dev/shm中;mmap则通过文件映射实现内存共享,但需要自行处理同步问题。文章分别提供了SystemV和POSIX的读写示例代码,并对比了它们的特点和使用方法。SystemV共享内存可通过ipcs管理,而POSIX共享内存则通过文件系统方式实现,两种机制完全不同。mmap虽非标准IPC方式,但适合处理大块内存
2025-07-03 11:00:00
410
原创 ebpf入门程序
ebpf是一种很有趣的技术,早些时候是用于调试网络的(berkeley package filter)因为ebpf的机制是生成字节码交由内核中的虚拟机运行,因此有些调试无需重新编译内核/驱动即可完成。
2025-04-28 10:45:00
672
原创 arm64架构的copy_from_user分析
一谈到内核-用户空间的数据拷贝,那肯定少不了copy_from_user/copy_to_user, 但底层是怎么实现的呢?本篇就来分析一下arm64架构的copy_from_user的流程。
2025-04-11 10:45:00
1134
原创 QEMU入门6:virt板源码分析
前前后后折腾了一年,终于可以入门qemu了QEMU入门1:ubuntu22.04搭建QEMU运行环境QEMU入门2:使用qemu简单的运行一个aarch64 linux内核QEMU入门3:制作initrd、根文件系统QEMU入门4:aarch64虚拟机安装grubQEMU入门5:为virt板引入一个sd-card。
2025-03-27 15:00:00
2100
原创 QEMU入门5:为virt板引入一个sd-card
virt默认不支持mmc设备,如果只是想引入一个sd/mmc设备,那直接在启动脚本里增加一个sdhci-pci,再在内核里新增sdhci-pci的驱动就可以了。本篇记录的是,通过修改virt板代码,引入一个pl181(sdhci),从而引入sdcard的流程。
2025-03-27 11:15:00
954
原创 人工智能ollama+openwebui导入本地模型
网上查了一些文章,大部分是用ollama去拉取模型。但对于已经下载的模型 ,还拉什么呢?这篇文章记录一下直接导入本地模型的运行方式。
2025-03-17 11:00:00
905
原创 将程序同时编译成可执行的动态库(C语言
linux环境下 /lib64/ld-linux-x86-64.so.2这个文件是动态链接器,它既是动态库,又可以执行。
2025-03-05 11:00:00
314
原创 QEMU入门4:aarch64虚拟机安装grub
网上关于在aarch64的qemu虚拟机使用的磁盘镜像中使用grub的文章较少,我自己摸索了一下
2024-12-02 14:45:00
2320
原创 QEMU入门3:制作initrd、根文件系统
QEMU入门1:ubuntu22.04搭建QEMU运行环境QEMU入门2:使用qemu简单的运行一个aarch64 linux内核。
2024-11-05 10:45:00
1100
原创 制作交叉编译工具链
通常我们使用交叉编译,都是使用人家做好的交叉编译工具链,但这样没法定制,本篇介绍如何使用crosstool-ng这个工具来自己编译编译工具链;环境 ubutnu22.04。
2024-11-04 10:30:00
1147
原创 QEMU入门2:使用qemu简单的运行一个aarch64 linux内核
上篇ubuntu22.04搭建QEMU运行环境已经搭好了qemu环境,这篇来使用下。
2024-10-14 10:30:00
1663
原创 vscode-server安装和部分配置
vscode确实彳亍,虽然我觉得Clion(c/c++语言版的IDEA)更方便,但是毕竟我没钱买license;这里记录一下网页版的vscode-server的安装和配置。
2024-07-10 10:30:00
2493
原创 划分带分区的文件系统镜像
学习qemu的时候,需要给虚拟机加一个emmc卡,启动脚本里指定了使用某个分区作为根文件系统;这样只用简单的文件系统镜像就不行了,需要划分分区
2024-07-09 10:30:00
547
简单计算器安装包.zip
2020-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人