Appearance
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 | 极简设计,资源占用极低 | 嵌入式/老旧设备 |
WebUI | OMV等网页管理 | 服务器远程管理 |
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密钥登录
理解公钥私钥
- 生成密钥对:
bash
ssh-keygen -t ed25519 # ed25519算法
- 将公钥复制到服务器:
bash
ssh-copy-id user@host
- 服务器上的公钥存储在
~/.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等文件。
反向代理:将请求转发到内部服务(如多个端口的应用)。
负载均衡:将请求分发到多个后端服务器。