grub
GRUBGRUB 的原始版本更名为 GRUB Legacy。GRUB Legacy 上继续进行少量维护,但最后一个版本(0.97)是在 2005 年发布的。 大约在 2007 年,GNU/Linux 发行版开始在有限的范围内使用 GRUB 2,到 2009 年底,多个主要发行版都默认安装它。 GRUB 2 (GRand Unified Bootloader version 2) 是 Linux 系统中广泛使用的引导加载器。它在操作系统启动之前运行,负责加载操作系统内核到内存,并将控制权移交给内核。理解 GRUB 2 对于系统维护、故障排除以及多系统引导至关重要。 1. GRUB 2 核心概念GRUB 2 的设计非常模块化且强大,其核心概念包括: 多阶段引导 (Multi-stage Booting): boot.img (Stage 1): 位于硬盘的 MBR (Master Boot Record) 或 EFI 系统分区 (ESP) 的引导扇区。它非常小,主要任务是加载 core.img。 core.img (Stage 1.5): 包含文件系统驱动(让...
FHS和内核交互接口
Linux 文件系统结构(FHS)Linux 文件系统结构(Filesystem Hierarchy Standard,简称 FHS)是定义了 Linux 操作系统中文件和目录的布局与内容的一套标准。它的主要目的是为了让不同的 Linux 发行版能够保持文件系统的一致性,从而让软件开发者、系统管理员和用户都能更容易地找到特定的文件和目录,提高系统的兼容性和可管理性。 FHS 的设计理念是将系统文件和用户数据、可变数据和静态数据等进行逻辑上的分离,以实现以下几个关键目标: 可移植性(Portability):确保不同系统之间的文件路径和内容保持一致,方便应用程序在不同 Linux 发行版之间移植。 易管理性(Manageability):通过规范的目录结构,使系统管理员能够更容易地定位、备份、恢复和维护系统。 多用户环境(Multi-user Environments):区分用户数据和系统数据,支持多用户环境下的数据安全和隔离。 网络文件系统(Network Filesystems):方便通过网络挂载只读或共享文件系统,例如 /usr 和 /var。 FHS...
chroot/initrd/rescue实战操作
1. chroot 命令实战:改变根目录环境chroot (change root) 命令能够改变当前进程及其子进程的根目录。这意味着被 chroot 过的程序将认为新的目录是其文件系统的根目录 (/),无法访问该新根目录之外的文件和目录。这在系统恢复、构建隔离环境或测试软件时非常有用。 1.1 chroot 的典型应用场景 系统恢复与修复: 当您的 Linux 系统无法正常启动,例如 GRUB 引导器损坏、核心配置文件错误、或者需要重置 root 密码时,chroot 是进入受损系统环境进行修复的关键工具。 构建隔离的构建/测试环境: 在一个干净、隔离的环境中编译软件,避免与宿主系统的库冲突,或为特定目的(如交叉编译)设置独立的开发环境。 创建“chroot jail” (监狱): 限制特定服务的访问权限,增强安全性。例如,可以将 FTP 服务器或 SSH 用户限制在文件系统的某个特定子目录中,防止他们访问其他敏感区域。 1.2 chroot 系统恢复实战(以 GRUB 修复为例)假设您的 Linux 系统(例如 CentOS/Ubuntu)因 GRUB...
Linux:文件系统结构与启动过程深度解析
Linux 核心知识体系:文件系统结构与启动过程深度解析1. Linux 文件系统结构(FHS)文件系统层次结构标准(Filesystem Hierarchy Standard,FHS) 是 Linux 操作系统中文件和目录布局的规范。它确保了不同 Linux 发行版之间的一致性,便于软件管理、系统维护和可移植性。 FHS 的核心理念是将系统文件和用户数据、静态数据和可变数据进行逻辑分离,以实现系统稳定性、可管理性和多用户兼容性。 1.1 FHS 主要目录及其用途 / (根目录) 文件系统层次结构的起点,所有其他目录和文件都在其下。 只包含系统启动和运行所需的最少文件和目录。 /bin (用户二进制文件) 所有用户都可用的基本命令,如 ls, cp, mv。这些命令是单用户模式下系统启动和维护所必需的。 /sbin (系统二进制文件) 系统管理员使用的基本系统管理命令,如 fdisk, mkfs, reboot。通常用于系统启动、恢复和维护。 /etc (配置文件) 所有系统范围的配置文件,如 /etc/passwd, /etc/group,...
find
find 是一个在 Linux 和类 Unix 系统中用于在文件系统中搜索文件和目录的强大命令行工具。它能够根据各种条件(如名称、大小、类型、修改时间、权限、所有者等)进行搜索,并对找到的文件执行指定的操作。 find 的核心作用是: 递归搜索:从指定目录开始,递归地遍历其所有子目录,查找符合条件的文件和目录。 多条件组合:支持使用逻辑运算符(AND, OR, NOT)组合多个搜索条件。 执行操作:对找到的文件执行命令(如删除、复制、移动、修改权限等)。 基本语法1find [路径] [表达式] **[路径]**:指定从哪个目录开始搜索。可以是一个或多个目录。如果省略,则默认为当前目录 (.)。 **[表达式]**:由选项、测试、动作和操作符组成,用于定义搜索条件和对找到的文件执行的操作。 如果路径是相对径,输出就是相对路径;如果是绝对路径,输出就是绝对路径。 find 的常用选项和用法示例1. 按名称或模式搜索 -name <pattern>:按文件名(或目录名)搜索,支持通配符(*, ?, [])。区分大小写。 12find . -name...
hardware management
Linux 硬件管理1. CPU 和内存相关 lscpu top / htop free vmstat numactl 2. 硬盘与存储设备 lsblk fdisk parted blkid df du mount / umount smartctl(smartmontools 工具包) hdparm 2.1 lsblklsblk (list block devices) 是一个 Linux 命令行工具,用于列出系统中所有可用的块设备信息,比如硬盘、固态硬盘 (SSD)、U盘、分区以及逻辑卷等。它会以树状结构显示这些设备及其分区、逻辑卷或 RAID 阵列之间的层级关系。 好的,这是 lsblk 命令的常用选项列表,没有具体的例子: 常用选项: -a, --all:显示所有块设备,包括空设备或通常隐藏的设备。 -b, --bytes:以字节为单位显示设备大小。 -d, --nodeps:不打印设备的从属设备(例如,不显示磁盘下的分区)。 -D, --discard:显示设备的丢弃(TRIM/UNMAP)功能。 -f,...
tcpdump
Tcpdumptcpdump 是一个强大的命令行工具,用于捕获和分析网络流量。它是网络管理员、安全专业人员和开发人员在 Linux/Unix-like 系统上进行网络故障排除、监控、安全审计和协议分析的必备工具。 你可以把 tcpdump 想象成是给你的网卡安装了一双“透视眼”: 它让你实时看到数据包是怎么在网络中穿梭的,从 MAC 层到 IP 层再到应用层,全都一览无遗。你不仅能“看到”别人说了什么(数据内容),还能知道他们从哪里来、去哪儿、用了哪种语言(协议)、走了哪条路(路由) 一、Tcpdump 核心概念:捕获与过滤tcpdump 的核心功能: 实时数据包捕获:tcpdump 可以实时地从网络接口捕获数据包,并将其内容打印到标准输出或保存到文件。 丰富的过滤表达式:它支持使用 BPF (Berkeley Packet Filter) 语法创建高度定制的过滤规则,只捕获你感兴趣的流量。 协议解析:tcpdump 可以解析多种网络协议的头部信息,包括 Ethernet, IP, TCP, UDP, ICMP, ARP, DNS, HTTP...
iptables/nftables
在 Linux 中,最核心的防火墙管理工具是 Netfilter 框架,Netfilter 是 Linux 内核中的一个框架,它允许在网络数据包通过协议栈的不同阶段时进行截取、检查、修改和丢弃,而与它交互的主要命令行工具是 iptables 和 nftables。 许多 Linux 发行版还提供了更高级、更易于使用的前端工具,来简化防火墙的配置。 Ubuntu 及其衍生版本上默认的防火墙管理工具UFW, Red Hat 系列发行版(如 CentOS, RHEL, Fedora)上默认的动态防火墙管理工具Firewalld。 1. iptablesiptables 是一个非常强大且灵活的命令行工具,用于配置 Linux 内核中的 Netfilter 数据包过滤规则。它通过定义一系列的规则来决定如何处理网络流量。 工作原理: iptables 组织规则成**表 (tables),每个表包含多个链 (chains)**。数据包根据其类型(例如,传入、传出、转发)经过不同的链,并根据链中的规则进行匹配和处理。 表(Tables):iptables...
process management
进程是程序的执行实例,是操作系统资源分配的基本单位。 每个运行的程序在 Linux 中都是一个进程(具有独立的地址空间、代码段、堆、栈、数据段),包括 shell、nginx、mysqld、bash 等。 进程生命周期: 创建:通过 fork()、exec() 系列系统调用 就绪:等待内核调度 运行:CPU 调度运行中 阻塞:等待资源或事件(如 I/O) 终止:执行完毕或被杀死 僵尸:子进程结束但父进程未回收资源 进程状态 状态符 含义 说明 R Running 正在运行或可运行状态 S Sleeping 可中断的休眠 D Uninterruptible 不可中断(一般是 I/O 阻塞) T Stopped 被暂停或调试 Z Zombie 僵尸状态,需父进程回收 X Dead 已终止(很少见) psps 命令(process status 的缩写)用于报告当前系统中运行的进程快照。它提供了关于正在运行的进程的信息,包括它们的 PID(进程 ID)、TTY(终端)、运行时间、CPU...
Network Commands & Debugging
1. ip:现代网络配置与诊断工具ip 命令是 iproute2 工具集的核心,它已经取代了传统但逐渐过时的 ifconfig、route、arp 等命令,成为 Linux 系统上配置和诊断网络接口、路由表、IP 地址、ARP 缓存、隧道、IPSEC 等的首选工具。它的设计更符合现代网络协议栈,并且提供了更一致、更强大的语法。 核心功能ip 命令通过操纵内核的网络协议栈对象(如链路、地址、路由、邻居等)来管理和显示网络信息。它的通用语法是 ip [OPTIONS] OBJECT { COMMAND | help }。 深入解析与高级应用 对象 (Objects) 的理解: ip 命令的操作对象非常多,理解这些对象是掌握 ip 的关键: link: 网络设备(物理或虚拟接口,如 eth0, lo, br0, tun0)。 显示所有网络接口及其状态: ip link show (或 ip a 的简化输出) 启用/禁用接口: ip link set dev eth0 up / ip link set dev eth0 down (取代...