- 博客(145)
- 资源 (1)
- 收藏
- 关注
原创 双内核捕获挂死信息
摘要 本文介绍了使用捕获内核(crash kernel)定位内核挂死问题的配置方法。主要内容包括:主内核需关闭CONFIG_DEBUG_INFO_REDUCED以获取调试信息;通过启动参数预留内存空间给捕获内核;准备kexec工具和精简initrd;构建捕获内核时需注意内存分配。测试时可通过kexec预加载捕获内核,手动触发崩溃后分析转储的vmcore文件。常见问题包括主/捕获内核OOM、内存冲突等,需合理分配内存空间。该方法可有效捕获内核挂死时的关键信息,为问题定位提供有力支持。
2025-12-29 11:30:00
546
原创 uboot移植入门
本文介绍了在正点原子imx6ul开发板(ARMv7架构)上移植和启动uboot的过程。首先分析了ARMv7与ARMv8启动流程的差异,指出imx6ul通过bootrom读取存储介质上的imx头信息来加载uboot。文章详细说明了uboot的编译配置方法,包括禁用不必要驱动模块以解决启动错误,以及调试串口的设置。在烧录环节,解释了SD卡1KB偏移烧录的原因,并提供了具体的dd命令。最后给出了内核启动参数配置方案,包括解决串口无输出和init挂死问题的调试方法。整个过程涵盖了从uboot编译、烧录到内核启动的关
2025-12-29 11:00:00
1014
原创 打包comfyui docker镜像
本文介绍了如何为ComfyUI创建自定义Docker镜像。首先基于Ubuntu基础镜像,通过创建Python虚拟环境并安装匹配CUDA版本的PyTorch。然后安装ComfyUI源码及其依赖项,将源码和虚拟环境打包进Docker镜像。文中提供了启动脚本和Dockerfile示例,以及最终构建和运行容器的命令,包括GPU设备指定和模型目录挂载。该方法解决了官方未提供Docker镜像的问题,同时确保环境配置符合用户需求。
2025-12-04 11:00:00
157
原创 文件读取的底层实现——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
1541
原创 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
1105
原创 clone系统调用浅析
本文深入分析了Linux内核的clone系统调用机制。在用户态层面,通过glibc的__clone3函数触发系统调用,但内核并不直接使用用户态传入的入口函数地址,而是通过汇编指令在子线程中调用目标函数。内核态处理流程涉及kernel_clone、copy_process和架构相关的copy_thread函数,通过设置cpu_context结构实现线程上下文切换。文章还探讨了线程栈管理、寄存器上下文保存与恢复机制,并对比了x86和aarch64架构的实现差异,揭示了用户态线程与内核线程创建的底层原理。
2025-07-21 15:00:00
2029
原创 buildroot使用入门
Buildroot是一个轻量级的文件系统构建工具,适合嵌入式开发。本文介绍了使用Buildroot为QEMU虚拟板(aarch64架构)构建系统的配置过程。主要内容包括:工具链配置(推荐使用外部自定义工具链)、内核设置(支持自定义内核)、文件系统选项以及常见错误的解决方法(如wget证书验证和内核包哈希校验问题)。配置完成后,生成的系统镜像位于output/images/目录下,可直接用配套的start-qemu.sh脚本启动。相比手动构建rootfs,Buildroot提供了更便捷的自动化方案。
2025-07-21 11:00:00
401
原创 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
474
原创 ebpf入门程序
ebpf是一种很有趣的技术,早些时候是用于调试网络的(berkeley package filter)因为ebpf的机制是生成字节码交由内核中的虚拟机运行,因此有些调试无需重新编译内核/驱动即可完成。
2025-04-28 10:45:00
813
原创 arm64架构的copy_from_user分析
一谈到内核-用户空间的数据拷贝,那肯定少不了copy_from_user/copy_to_user, 但底层是怎么实现的呢?本篇就来分析一下arm64架构的copy_from_user的流程。
2025-04-11 10:45:00
1185
原创 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
2183
原创 QEMU入门5:为virt板引入一个sd-card
virt默认不支持mmc设备,如果只是想引入一个sd/mmc设备,那直接在启动脚本里增加一个sdhci-pci,再在内核里新增sdhci-pci的驱动就可以了。本篇记录的是,通过修改virt板代码,引入一个pl181(sdhci),从而引入sdcard的流程。
2025-03-27 11:15:00
1161
原创 人工智能ollama+openwebui导入本地模型
网上查了一些文章,大部分是用ollama去拉取模型。但对于已经下载的模型 ,还拉什么呢?这篇文章记录一下直接导入本地模型的运行方式。
2025-03-17 11:00:00
1161
原创 将程序同时编译成可执行的动态库(C语言
linux环境下 /lib64/ld-linux-x86-64.so.2这个文件是动态链接器,它既是动态库,又可以执行。
2025-03-05 11:00:00
348
原创 QEMU入门4:aarch64虚拟机安装grub
网上关于在aarch64的qemu虚拟机使用的磁盘镜像中使用grub的文章较少,我自己摸索了一下
2024-12-02 14:45:00
2425
原创 QEMU入门3:制作initrd、根文件系统
QEMU入门1:ubuntu22.04搭建QEMU运行环境QEMU入门2:使用qemu简单的运行一个aarch64 linux内核。
2024-11-05 10:45:00
1211
原创 制作交叉编译工具链
通常我们使用交叉编译,都是使用人家做好的交叉编译工具链,但这样没法定制,本篇介绍如何使用crosstool-ng这个工具来自己编译编译工具链;环境 ubutnu22.04。
2024-11-04 10:30:00
1226
原创 QEMU入门2:使用qemu简单的运行一个aarch64 linux内核
上篇ubuntu22.04搭建QEMU运行环境已经搭好了qemu环境,这篇来使用下。
2024-10-14 10:30:00
1830
原创 vscode-server安装和部分配置
vscode确实彳亍,虽然我觉得Clion(c/c++语言版的IDEA)更方便,但是毕竟我没钱买license;这里记录一下网页版的vscode-server的安装和配置。
2024-07-10 10:30:00
2715
简单计算器安装包.zip
2020-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1