Skip to content

Linux intro

一、Linux发行版分类

Debian系列

  • Debian:以稳定著称,是许多发行版的基础。

  • Ubuntu:基于Debian,是最流行的桌面Linux发行版之一,也提供服务器版。

  • Deepin:中国开发的独立发行版,拥有自己独特的桌面环境(DDE)。

RedHat系列

  • Red Hat Enterprise Linux (RHEL):企业级付费发行版,提供商业支持。

  • CentOS:曾经是RHEL的免费克隆版,但现已转向CentOS Stream(滚动更新,作为RHEL的上游)。

  • Fedora:Red Hat赞助的社区发行版,用于测试新技术。

  • OpenEuler:华为推出的企业级Linux发行版,独立上游,专注于ARM架构。

Arch系列

  • Arch Linux:以轻量、简洁和高度可定制著称,采用滚动更新模式。

二、Linux图形界面(GUI)

桌面环境特点适用场景
GNOME现代化设计,资源占用较高主流桌面
XFCE4轻量快速,模块化设计旧硬件/效率优先
KDE高度可定制,功能丰富视觉定制爱好者
LXDE极简设计,资源占用极低嵌入式/老旧设备
WebUIOMV等网页管理服务器远程管理

ARM Linux

启动差异

  • x86架构:使用UEFI和ACPI,固件将硬件信息传递给内核。

  • ARM/RISC-V架构:通常使用Device Tree(设备树)描述硬件,由bootloader(如U-Boot)传递给内核。

  • 原因:ARM SoC通常集成外设(如SPI、I2C),需要详细描述。

服务器ARM

  • 服务器级ARM芯片(如鲲鹏920)采用UEFI+ACPI,启动方式与x86类似。

  • 嵌入式ARM设备使用Device Tree + U-Boot。

兼容性挑战

  • 缺乏统一启动标准导致碎片化。

  • 设备树需要针对具体硬件编写,增加了适配难度。

命令行基础

基本命令

  • 目录操作
bash

cd /path     # 切换目录

ls -l        # 列出详细信息

pwd          # 打印当前工作目录

tree         # 树状显示目录结构(需安装tree)
  • 文件操作
bash

touch file   # 创建空文件

cp src dest  # 复制

mv src dest  # 移动或重命名

rm file      # 删除文件(rm -r 删除目录)
  • 系统监控
bash

top          # 显示进程动态(推荐htop)

ifconfig     # 网络接口信息(推荐ip addr)
  • 用户管理
bash

useradd -m username  # 创建用户(-m创建家目录)

passwd username      # 设置密码
  • 权限管理
bash

chmod 755 file  # 修改权限

chown user:group file  # 修改所有者和组
  • 包管理
bash

# Debian/Ubuntu

apt update        # 更新源

apt install pkg   # 安装包

# RedHat/CentOS

yum install pkg   # 或dnf
  • 网络工具
bash

ping example.com  # 测试网络连通性

curl example.com  # 传输数据

grep "pattern" file  # 搜索文本
  • 系统控制
bash

poweroff   # 关机

reboot     # 重启

权限管理

用户和组

  • root用户:超级用户,拥有系统最高权限。

  • 普通用户:受限权限,需要sudo执行特权命令。

  • sudo:允许授权用户以root权限运行命令,配置在/etc/sudoers

文件权限

Linux中“万物皆文件”,包括设备、管道等。每个文件都有权限属性:

  • r(读):允许读取文件内容或列出目录内容。

  • w(写):允许修改文件内容或在目录中创建/删除文件。

  • x(执行):允许执行文件或进入目录。

权限用9个字符表示,分为三组:所有者(user)、所属组(group)、其他用户(others)。

Linux系统中,r=4,w=2,x=1,比如7 = 4+2+1,而755就代表user权限是7,group和others是5。

例如:

bash

-rwxr-xr-- 1 user group 1024 Jan 1 12:00 file
  • 所有者:rwx(读、写、执行)

  • 所属组:r-x(读、执行)

  • 其他:r--(只读)

修改权限的命令:

bash

chmod 755 file  # 设置权限为rwxr-xr-x

chmod u+x file  # 给所有者添加执行权限

chown user:group file  # 修改文件的所有者和组

常用命令行软件

  • 编译工具
bash

gcc source.c -o output  # 编译C程序

g++ source.cpp -o output # 编译C++程序

make                    # 自动化构建
  • 文本编辑

  • vim:功能强大的文本编辑器,学习曲线陡峭但高效。

  • nano:简单易用的文本编辑器。

  • cat:查看文件内容。

  • 远程连接

终端 or ssh软件,如electerm

bash

ssh user@host        # 远程登录

scp file user@host:path  # 安全复制

SSH密钥登录

理解公钥私钥

  1. 生成密钥对:
bash

ssh-keygen -t ed25519  # ed25519算法
  1. 将公钥复制到服务器:
bash

ssh-copy-id user@host
  1. 服务器上的公钥存储在~/.ssh/authorized_keys

用户组

  • 用户组用于管理权限集合。

  • 将用户添加到组:

bash

usermod -aG groupname username  # -aG表示追加到附加组

TMUX

tmux是一个终端多窗口管理软件,可以用来让程序挂在后台

bash

# 查看有所有tmux会话
tmux ls
快捷键:Ctrl+b s

# 新建tmux窗口
tmux new -s <session-name>

# 重命名会话
tmux rename-session -t <old-name> <new-name>
快捷键:Ctrl+b $

# 分离会话
tmux detach  或者使用  exit(关闭窗口)
快捷键:Ctrl+b d

# 重新连接会话
tmux attach -t <session-name>  或者使用 tmux at -t <session-name>

# 杀死会话
tmux kill-session -t <session-name>

# 切换会话
tmux switch -t <session-name>

Shell配置

  • ~/.bashrc:用户登录时执行的bash配置。
bash

# 示例:设置别名

alias ll='ls -alF'

alias update='sudo apt update && sudo apt upgrade'

systemd

systemd是Linux的系统和服务管理器,用于启动系统和管理服务:

bash

systemctl start service   # 启动服务

systemctl stop service    # 停止服务

systemctl enable service  # 设置开机启动

容器和虚拟化

  • Docker/Podman:容器化技术,隔离应用环境。

  • Docker:使用守护进程,需要root权限。

  • Podman:无守护进程,支持rootless。

  • QEMU/KVM:虚拟机方案,KVM提供硬件加速。

Linux内核

Linux内核是操作系统的核心,负责管理硬件和软件资源,主要功能包括:

  • 设备驱动:与硬件设备通信。

  • 进程管理:创建、调度和终止进程。

  • 内存管理:分配和回收内存。

  • 文件系统:管理磁盘上的文件和目录。

  • 安全:实施访问控制和权限管理。

内核定制(如需要特殊外设)

比如若需要给自己的开发板安装一个第三方mipi屏幕,用户需要为内核打补丁或添加驱动:

bash

# 示例:安装内核头文件并编译驱动

sudo apt install linux-headers-$(uname -r)

make

sudo insmod my_driver.ko

udev和rules

udev是Linux的设备管理器,负责在/dev目录下动态创建设备节点。用户可以通过规则(rules)自定义设备的行为。

规则文件位于/etc/udev/rules.d/,例如:


# 当检测到USB设备时,设置权限为666

SUBSYSTEM=="usb", MODE="0666"

网络管理(对外提供服务的必须)

基本概念

  • 127.0.0.1:本地环回地址。

  • 端口:0-65535,其中0-1023为系统端口。

  • 公网服务器:需要公网IP、域名和SSL证书(如Let's Encrypt)。

  • DNS:将域名解析为IP地址。

代理和穿透

  • Xray + Reality协议:用于科学上网,配置复杂但更安全。

  • FRP:内网穿透工具,将内网服务暴露到公网。

  • WireGuard:现代VPN协议,配置简单且高效。

Nginx

Nginx是高性能的Web服务器和反向代理:

  • 静态文件服务:直接返回HTML、CSS等文件。

  • 反向代理:将请求转发到内部服务(如多个端口的应用)。

  • 负载均衡:将请求分发到多个后端服务器。

vitepress + nginx 实现静态网页

gradio + nginx 提供AI 模型web界面