Linux是如何启动的

概述

Linux启动过程主要分为以下几个阶段:

  • BIOS/UEFI启动
  • Boot Device引导
  • Boot Loader执行
  • 内核引导
  • 用户空间初始化,驱动程序加载、内核模块加载、启动1号进程,并由其启动其他用户空间进程

具体的启动过程如下图所示:
alt text

BIOS/UEFI启动

阅读更多

systemd介绍

概述

systemd 是 Linux 系统的一组基本构建模块。它提供了一个系统和服务管理器,以 PID 1 运行并启动系统的其余部分。systemd 提供强大的并行化能力,使用套接字和 D-Bus 激活来启动服务,提供按需启动守护进程,使用 Linux 控制组跟踪进程,维护挂载点和自动挂载点,并实现复杂的基于事务依赖的服务控制逻辑。systemd 支持 SysV 和 LSB 初始化脚本,并可替代 sysvinit。其他部分包括一个日志守护进程、用于控制基本系统配置(如主机名、日期、区域设置)的实用程序、维护登录用户列表以及正在运行的容器和虚拟机、系统账户、运行时目录和设置,以及用于管理简单网络配置、网络时间同步、日志转发和名称解析的守护进程。

他是一个大而全的系统,包含了很多功能,可以如下图所示:
alt text

主要的一些功能有:

  • 服务管理:systemd可以启动、停止、重启、查看服务的状态,还可以设置服务的依赖关系。
  • 日志管理:systemd通过journalctl命令可以查看系统日志,支持按服务、时间、优先级等条件过滤。
  • 定时任务:systemd可以替代cron,通过systemd-timer实现定时任务的管理。
  • 系统初始化:systemd负责系统的初始化,包括加载内核模块、挂载文件系统、启动用户空间进程等。
  • 用户会话:systemd可以管理用户会话,包括用户登录、注销、会话控制等。
  • 内核管理:包括cgroups、kdbus、autofs等
  • 网络管理:systemd-networkd可以管理网络配置,systemd-resolved可以管理DNS解析。
  • 设备管理:systemd可以管理设备,包括磁盘、网络、USB等设备。
  • cgroup管理:systemd可以管理cgroup,实现资源限制和控制。
阅读更多

Linux内核之tracepoint介绍

概述

Tracepoint 是一种在 Linux 内核中插入的静态探测点,用于跟踪和调试内核行为。它允许开发者在特定位置插入代码,收集运行时信息,而不会显著影响性能。

原理

特性

  • 静态探测点: 在内核预定义, 自定义的函数可以插入在这里
  • 动态启用: 默认不启用, 减少性能开销
  • 低开销
阅读更多

bpftrace简介

概述

bpftrace是一个基于eBPF的高级跟踪工具, 用于动态追踪Linux系统的行为和性能.

用于可以用简单的一行命令或者简洁的脚本,实现监控分析内核和用户空间程序的运行,而无需修改或者重新编译

安装

sudo apt-get install bpftrace
阅读更多

动态链接库的基本介绍

ld.so

ld.so的路径存在于任意一个存在动态链接库的elf文件上的.interp setion中

# objdump -s -j .interp /bin/ls
/bin/ls: file format elf64-x86-64

Contents of section .interp:
02a8 2f6c6962 36342f6c 642d6c69 6e75782d /lib64/ld-linux-
02b8 7838362d 36342e73 6f2e3200 x86-64.so.2.

#readelf -a /bin/ls | grep 'interpreter'
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

任何动态链接的程序都需要ld.so去启动,即直接执行一个动态链接库程序等价于执行 ld.so <program>

调试

阅读更多

wsl常见问题解决

更改wsl虚拟磁盘位置

默认虚拟磁盘文件大体是在C:\Users\XXX\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState (以ubuntu2404为例)

将里面的vhdx移动到目标盘位置,比如 D:\wsl\24.04\ , 然后执行命令即可

wsl --unregister Ubuntu-24.04
wsl --import-in-place Ubuntu-24.04 "D:\wsl\24.04\ext4.vhdx”

压缩磁盘

阅读更多

性能优化工具-strace

概述

使用 strace 查看系统调用统计可以帮助你分析一个进程的行为,特别是它在运行时进行的系统调用

原理

strace 使用 ptrace 系统调用追踪目标进程

当被跟踪的进程

阅读更多

性能优化工具-iostat

常用命令

  • -x 扩展信息

  • -m 使用MB单位

  • 命令后跟数字x y 每x秒刷新, 显示y次

    #每隔 2 秒显示一次详细的设备统计信息,共显示 5 次。

    iostat -x 2 5
  • -c 显示cpu相关的信息

  • -p 指定特定设备信息,比如-p sda只展示sda下的\

指标

基本指标

  • Device: 设备名称,例如 sda 表示第一个SCSI磁盘设备。
阅读更多