🐧 第01课:Linux概述与安装

阶段一:文件系统 第1/6课 基础

📚 课程目标

一、Linux是什么?

1.1 Linux的定义与起源

Linux是一个自由和开放源码的类UNIX操作系统内核,由芬兰赫尔辛基大学学生Linus Torvalds于1991年创建。严格来说,"Linux"仅指内核,但日常使用中常指基于该内核的完整操作系统(GNU/Linux)。

📖 历史时间线

年份事件
1969Ken Thompson在Bell Labs创建UNIX
1983Richard Stallman发起GNU项目,目标是创建自由操作系统
1987MINIX发布,教学用小型UNIX系统
1991.8.25Linus在comp.os.minix发帖宣布Linux项目
1994Linux 1.0发布,首个稳定版本
1996Linux 2.0,支持SMP多处理器
2005Linus创建Git版本控制系统管理内核代码
2024Linux内核6.x,驱动全球96%+的服务器

1.2 Linux vs Windows vs macOS

特性LinuxWindowsmacOS
内核Linux (Monolithic/Module)NT HybridXNU (Hybrid)
开源完全开源闭源部分开源(Darwin)
许可GPL v2商业许可APSL + 商业
ShellBash/Zsh/Fish等PowerShell/CMDZsh
包管理apt/yum/pacman等MSI/EXE/StoreHomebrew
服务器份额~96%~2%~1%

二、Linux架构

2.1 分层架构

┌─────────────────────────────────────────┐
│            用户空间 (User Space)          │
├─────────────────────────────────────────┤
│  应用层    │  Shell  │  GUI  │  服务     │
├─────────────────────────────────────────┤
│  系统调用接口 (System Call Interface)     │
├─────────────────────────────────────────┤
│            内核空间 (Kernel Space)        │
├──────┬──────┬──────┬───────┬────────────┤
│ 进程 │ 内存 │ 文件 │ 网络  │ 设备驱动   │
│ 管理 │ 管理 │ 系统 │ 协议栈 │ 模块      │
├──────┴──────┴──────┴───────┴────────────┤
│           硬件抽象层 (HAL)               │
├─────────────────────────────────────────┤
│          硬件 (CPU/MEM/DISK/NET)         │
└─────────────────────────────────────────┘

2.2 内核核心子系统

2.3 用户空间与内核空间

现代CPU提供特权级机制(x86的Ring 0-3),Linux使用Ring 0(内核态)和Ring 3(用户态):

三、Linux发行版

3.1 主要发行版家族

              ┌── Debian ──┬── Ubuntu ──┬── Linux Mint
              │            │            ├── Pop!_OS
              │            │            └── Kali Linux
    Slackware │
 ───┬────────┤            ┌── Fedora ──── RHEL ──┬── CentOS Stream
    │        │            │                      ├── Rocky Linux
    │        ├── Red Hat ──┤                      └── AlmaLinux
    │        │            └── openSUSE ──┬── Leap
    │        │                           └── Tumbleweed
    │        │
    │        └── Arch ──── Arch Linux ─── Manjaro ─── Garuda
    │
    └── Gentoo ──── Funtoo

3.2 服务器主流发行版对比

发行版包管理发布模式适用场景
Ubuntu Serverapt/dpkg6个月/2年LTS云计算、开发
RHELyum/dnf/rpm商业订阅企业生产
Rocky/Almadnf/rpm跟RHEL企业替代
Debianapt/dpkg~2年稳定版稳定性优先
SLESzypper/rpm商业订阅企业/SAP

四、系统信息查看(实机验证)

4.1 内核与系统版本

$ uname -a
Linux VM-4-3-ubuntu 6.8.0-101-generic #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb  9 10:15:05 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/os-release
NAME=Ubuntu VERSION=24.04.4 LTS (Noble Numbat) ID=ubuntu
$ cat /proc/version
Linux version 6.8.0-101-generic (buildd@lcy02-amd64-051) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb  9 10:15:05 UTC 2026

4.2 CPU信息

$ lscpu
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           48 bits physical, 48 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  2
On-line CPU(s) list:                     0,1
Vendor ID:                               AuthenticAMD
BIOS Vendor ID:                          Smdbmds
Model name:                              AMD EPYC 7K62 48-Core Processor
BIOS Model name:                         3.0  CPU @ 2.0GHz
BIOS CPU family:                         1
CPU family:                              23
Model:                                   49
Thread(s) per core:                      1
Core(s) per socket:                      2
Socket(s):                               1
Stepping:                                0
BogoMIPS:                                5190.24
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 arat
Hypervisor vendor:                       KVM

4.3 内存信息

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.5Gi       2.0Gi       1.7Gi        49Mi       4.1Gi       5.5Gi
Swap:          9.9Gi       161Mi       9.8Gi

4.4 磁盘信息

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        79G   29G   47G  39% /
/dev/vda2        79G   29G   47G  39% /

4.5 系统运行状态

$ uptime
 21:37:29 up 19:21,  0 user,  load average: 1.07, 0.76, 0.64
$ w
 21:37:29 up 19:21,  0 user,  load average: 1.07, 0.76, 0.64
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT

4.6 内核模块

$ lsmod | head -10
Module                  Size  Used by
ipt_REJECT             12288  175
nf_reject_ipv4         12288  1 ipt_REJECT
tcp_diag               12288  0
inet_diag              28672  1 tcp_diag
nf_conntrack_netlink    57344  0
xt_nat                 12288  5
xt_tcpudp              16384  0
veth                   45056  0
xt_conntrack           12288  2

4.7 系统默认运行级别

$ systemctl get-default
graphical.target
$ systemctl list-unit-files --type=service --state=enabled | head -15
UNIT FILE                              STATE   PRESET
apparmor.service                       enabled enabled
apport.service                         enabled enabled
blk-availability.service               enabled enabled
chrony.service                         enabled enabled
cloud-config.service                   enabled enabled
cloud-final.service                    enabled enabled
cloud-init-local.service               enabled enabled
cloud-init.service                     enabled enabled
console-setup.service                  enabled enabled
containerd.service                     enabled enabled
cron.service                           enabled enabled
dmesg.service                          enabled enabled
docker.service                         enabled enabled
e2scrub_reap.service                   enabled enabled

五、Linux安装方式

5.1 安装方式对比

方式适用场景优点缺点
物理机安装生产服务器性能最优硬件兼容性风险
虚拟机学习/开发快照恢复方便性能损失5-15%
云服务器生产/弹性快速部署、弹性成本、数据安全
WSL2Windows开发无缝集成不完全兼容
容器(LXC/Docker)隔离应用轻量级非完整OS

5.2 安装分区方案

生产服务器推荐分区方案(以100GB磁盘为例):

5.3 安装后首次配置

# 1. 更新系统
sudo apt update && sudo apt upgrade -y    # Debian/Ubuntu
sudo dnf update -y                         # RHEL/Fedora

# 2. 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 3. 设置主机名
sudo hostnamectl set-hostname myserver

# 4. 配置网络(Netplan示例)
cat /etc/netplan/01-netcfg.yaml

# 5. 安装基础工具
sudo apt install -y vim curl wget git htop net-tools

# 6. 配置SSH
sudo systemctl enable --now ssh
sudo ufw allow ssh

六、Linux哲学思想

🔓 UNIX/Linux设计原则

  1. 一切皆文件 - 硬件设备、管道、socket都是文件,统一读写接口
  2. 一个程序只做一件事 - 小而美的工具组合完成复杂任务
  3. 程序协同工作 - 管道(pipe)连接程序,输出成为输入
  4. 纯文本存储配置 - 人类可读,版本可控,工具可处理
  5. 避免交互式界面 - 命令行优先,方便自动化
  6. 提供机制而非策略 - 内核提供能力,用户空间决定用法
# 体现Linux哲学的典型用法
# 管道连接:查找占空间最大的5个目录
du -sh /* | sort -rh | head -5

# 重定向:保存命令输出
ls -la /etc/ > /tmp/etc-listing.txt 2>&1

# 一切皆文件:查看CPU信息就是读文件
cat /proc/cpuinfo | grep "model name" | head -1

# 小工具组合:统计nginx日志中访问最多的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

七、故障排查

7.1 常见安装问题

❌ 问题:安装后无法启动图形界面

原因:未安装桌面环境或显卡驱动不兼容

排查

# 检查是否安装了桌面
systemctl get-default          # 应该是 graphical.target
dpkg -l | grep desktop         # 查看桌面包
journalctl -b | grep -i error  # 查看启动错误

# 安装桌面(Ubuntu)
sudo apt install ubuntu-desktop

# 切换到图形目标
sudo systemctl set-default graphical.target
sudo systemctl isolate graphical.target

❌ 问题:网络不可用

排查

# 查看网络接口
ip addr show
# 查看网络管理器状态
systemctl status NetworkManager
# 检查DNS
cat /etc/resolv.conf
# 测试连通性
ping -c 3 8.8.8.8
ping -c 3 google.com

❌ 问题:SSH无法连接

排查

# 检查SSH服务
systemctl status sshd
# 检查监听端口
ss -tlnp | grep 22
# 检查防火墙
sudo iptables -L -n | grep 22
sudo ufw status
# 查看SSH配置
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"

八、练习

📝 练习1:系统信息收集

使用命令获取以下信息并记录:

  1. 内核版本和架构
  2. CPU型号和核心数
  3. 内存总量和可用量
  4. 磁盘分区和使用率
  5. 已安装的已启用服务列表

📝 练习2:理解文件即一切

查看以下"文件"内容,理解Linux"一切皆文件"的设计:

# CPU信息
cat /proc/cpuinfo | head -5

# 内存信息
cat /proc/meminfo | head -5

# 内核启动参数
cat /proc/cmdline

# 挂载的文件系统
cat /proc/mounts | head -5

# 系统运行时间
cat /proc/uptime

📝 练习3:管道实践

使用管道组合命令完成以下任务:

  1. 查找/etc下所有.conf文件的数量
  2. 查看当前系统已建立的TCP连接数
  3. 找出占用内存最多的5个进程
# 参考答案
find /etc -name "*.conf" 2>/dev/null | wc -l
ss -tn state established | wc -l
ps aux --sort=-%mem | head -6
🏆

成就解锁:Linux入门者

✅ 了解Linux历史与架构

✅ 掌握系统信息查看命令

✅ 理解Linux设计哲学

✅ 能够进行基本故障排查

下一课 → 文件系统层次结构,深入理解Linux目录布局