Ubuntu 高级进阶教程

server/2025/3/9 5:55:57/

适用对象:具备 Ubuntu 基础知识的开发者、运维工程师、系统管理员


目录

  1. 内核编译与调优
  2. 高级包管理
  3. 系统安全加固
  4. 网络高级配置
  5. 存储与 RAID 管理
  6. 自动化运维与脚本
  7. 虚拟化与容器技术
  8. 性能分析与优化
  9. 故障排查与恢复
  10. 附录:工具链与资源

1. 内核编译与调优

1.1 编译自定义内核
# 安装依赖  
sudo apt install build-essential libncurses-dev bison flex libssl-dev  # 下载内核源码(以 5.15 为例)  
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.tar.xz  
tar -xvf linux-5.15.tar.xz  
cd linux-5.15  # 配置内核(选择默认配置并自定义)  
make oldconfig          # 基于当前系统配置  
make menuconfig         # 图形化界面调整选项  # 编译与安装  
make -j$(nproc)         # 多线程编译  
sudo make modules_install  
sudo make install  # 更新 GRUB  
sudo update-grub  

调优选项

  • 启用 CONFIG_PREEMPT 降低延迟(适合实时性要求高的场景)
  • 调整 CONFIG_HZ=1000 提升响应速度
  • 禁用未使用的驱动以减少内核体积
1.2 内核参数优化(/etc/sysctl.conf)
# 提升网络性能  
net.core.rmem_max = 16777216  
net.core.wmem_max = 16777216  
net.ipv4.tcp_fin_timeout = 15  # 优化文件系统  
vm.swappiness = 10  
fs.file-max = 2097152  

应用配置:

sudo sysctl -p  

2. 高级包管理

2.1 创建本地仓库
# 安装必要工具  
sudo apt install reprepro gnupg  # 创建仓库目录  
mkdir -p /opt/myrepo/conf  
cat > /opt/myrepo/conf/distributions <<EOF  
Codename: focal  
Architectures: amd64 arm64  
Components: main  
SignWith: YOUR_KEY_ID  
EOF  # 添加 DEB 包  
reprepro includedeb focal /path/to/package.deb  # 客户端配置  
echo "deb http://your-server/myrepo focal main" | sudo tee /etc/apt/sources.list.d/myrepo.list  
2.2 使用 Apt-Pinning
# /etc/apt/preferences.d/99-mypriority  
Package: *  
Pin: release o=MyRepo  
Pin-Priority: 1001  

3. 系统安全加固

3.1 启用 AppArmor/SELinux
# 安装 AppArmor 工具  
sudo apt install apparmor-utils  # 强制模式配置  
sudo aa-enforce /etc/apparmor.d/*  # 查看状态  
aa-status  
3.2 SSH 安全加固
# /etc/ssh/sshd_config  
PermitRootLogin no  
PasswordAuthentication no  
AllowUsers alice  
MaxAuthTries 3  
ClientAliveInterval 300  

重启服务:

sudo systemctl restart sshd  

4. 网络高级配置

4.1 网络绑定(Bonding)
# 安装工具  
sudo apt install ifenslave  # 配置(/etc/netplan/01-bond.yaml)  
network:  bonds:  bond0:  interfaces: [enp1s0, enp2s0]  addresses: [192.168.1.100/24]  gateway4: 192.168.1.1  parameters:  mode: 802.3ad  lacp-rate: fast  
4.2 使用 WireGuard VPN
# 安装  
sudo apt install wireguard  # 生成密钥对  
wg genkey | tee privatekey | wg pubkey > publickey  # 配置文件(/etc/wireguard/wg0.conf)  
[Interface]  
PrivateKey = <SERVER_PRIVATE_KEY>  
Address = 10.8.0.1/24  
ListenPort = 51820  [Peer]  
PublicKey = <CLIENT_PUBLIC_KEY>  
AllowedIPs = 10.8.0.2/32  

5. 存储与 RAID 管理

5.1 创建软 RAID 5
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd  
sudo mkfs.ext4 /dev/md0  
sudo mount /dev/md0 /mnt/raid  
5.2 LVM 高级操作
# 扩展逻辑卷  
sudo lvextend -L +20G /dev/vg0/lv_data  
sudo resize2fs /dev/vg0/lv_data  # 创建快照  
sudo lvcreate -s -n snap_data -L 5G /dev/vg0/lv_data  

6. 自动化运维与脚本

6.1 使用 Ansible
# playbook.yml  
- hosts: webservers  tasks:  - name: Install Nginx  apt:  name: nginx  state: latest  - name: Start Service  systemd:  name: nginx  state: started  

执行命令:

ansible-playbook playbook.yml  
6.2 编写 Systemd 服务
# /etc/systemd/system/my-service.service  
[Unit]  
Description=My Custom Service  [Service]  
ExecStart=/usr/local/bin/my-script.sh  
Restart=on-failure  [Install]  
WantedBy=multi-user.target  

启用服务:

sudo systemctl enable my-service  

7. 虚拟化与容器技术

7.1 KVM 虚拟化
# 安装 KVM  
sudo apt install qemu-kvm libvirt-daemon-system  # 创建虚拟机  
virt-install \  --name ubuntu-vm \  --ram 2048 \  --disk path=/var/lib/libvirt/images/ubuntu.qcow2,size=20 \  --vcpus 2 \  --os-type linux \  --os-variant ubuntu22.04 \  --network bridge=virbr0 \  --graphics none \  --console pty,target_type=serial \  --location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/'  
7.2 构建 Docker 镜像
# Dockerfile  
FROM ubuntu:22.04  
RUN apt update && apt install -y nginx  
EXPOSE 80  
CMD ["nginx", "-g", "daemon off;"]  

构建命令:

docker build -t my-nginx .  

8. 性能分析与优化

8.1 使用 Perf 工具
# 安装  
sudo apt install linux-tools-common linux-tools-generic  # 分析 CPU 热点  
perf record -g -F 99 -p $(pgrep nginx)  
perf report  
8.2 调整 I/O 调度器
# 查看当前调度器  
cat /sys/block/sda/queue/scheduler  # 修改为 deadline 调度器(SSD 推荐)  
echo 'deadline' | sudo tee /sys/block/sda/queue/scheduler  

9. 故障排查与恢复

9.1 修复 GRUB 引导
# 进入 Live CD 环境  
sudo mount /dev/sda1 /mnt  
sudo mount --bind /dev /mnt/dev  
sudo chroot /mnt  
grub-install /dev/sda  
update-grub  
9.2 恢复误删文件(ext4 文件系统)
sudo apt install extundelete  
extundelete /dev/sda1 --restore-file /home/user/important.txt  

10. 附录:工具链与资源

10.1 推荐工具
  • 监控:Prometheus + Grafana
  • 日志:ELK Stack (Elasticsearch, Logstash, Kibana)
  • 调试:strace, ltrace, gdb
  • 网络分析:tcpdump, Wireshark, nmap
10.2 学习资源
  • 官方文档:Ubuntu Server Guide
  • 书籍:《The Linux Programming Interface》《UNIX and Linux System Administration Handbook》
  • 社区:Server Fault, Ubuntu Forums

注意

  • 所有涉及系统级修改的操作,建议提前备份数据。
  • 内核编译、RAID/LVM 操作等高风险任务,需在测试环境验证后再应用于生产环境。

更新日期:2023年10月
版权声明:自由分享,禁止用于商业用途。


http://www.ppmy.cn/server/173595.html

相关文章

实时音视频通信SDK/API:EasyRTC嵌入式SDK去中心化WebP2P架构设计,Linux、ARM、小程序适配

WebRTC是一种开源的实时通信技术&#xff0c;支持多种操作系统和硬件架构&#xff0c;包括Linux、Android、iOS以及各种嵌入式平台&#xff08;如ARM架构&#xff09;。这种广泛的兼容性使得WebRTC能够无缝集成到嵌入式设备中&#xff0c;无需担心兼容性问题。 尽管WebRTC得到…

视觉-语言模型-出发点CLIP--(挖掘源码-网络框架)

1.网络架构 建议配合 clip原理一起来品尝你的视觉语言之旅 2.模块 2.1 构建残差块 (也是resnet) class Bottleneck(nn.Module):expansion 4def __init__(self, inplanes, planes, stride1):super().__init__()# all conv layers have stride 1. an avgpool is performed af…

DOM容器

DOM 容器&#xff08;DOM Container&#xff09; 是 React 应用中用于挂载和渲染组件树的实际 DOM 元素。它是 React 虚拟 DOM 和浏览器实际 DOM 之间的桥梁。React 会将组件树渲染到 DOM 容器中&#xff0c;从而在页面上显示出来。 DOM 容器的定义 在 React 中&#xff0c;D…

大模型开发(五):P-Tuning项目——新零售决策评价系统(二)

P-Tuning项目——新零售决策评价系统&#xff08;二&#xff09; 0 前言1 P-Tuning原理2 数据处理 0 前言 上篇文章我们介绍了使用PET方式微调BERT模型&#xff0c;PET属于提示词微调的一种&#xff0c;另一种比较常见的提示词微调是P-Tuning&#xff0c;我们今天在相同的项目…

如何提高测试用例覆盖率?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 我们将讨论测试覆盖率的相关问题&#xff0c;以及它如何帮助提高软件质量的。 测试覆盖率概述 测试覆盖率被定义为一种测试技术指标&#xff0c;它表明我们…

局域网自动识别机器名和MAC并生成文件的命令

更新版本&#xff1a;添加了MAC 地址 确定了设备唯一性 V1.1 局域网自动识别机器名和MAC并生成文件的批处理命令 echo off setlocal enabledelayedexpansionREM 设置输出文件 set outputFilenetwork_info.txtREM 清空或创建输出文件 echo Scanning network from 192.168.20.1…

ApoorvCTF Rust语言逆向实战

上周参加了国外的比赛&#xff0c;名称叫&#xff1a;ApoorvCTF 看一下老外的比赛跟我们有什么不同&#xff0c;然后我根据国内比赛对比发现&#xff0c;他们考点还是很有意思的&#xff0c;反正都是逆向&#xff0c;哈哈哈 Rusty Vault 题目描述&#xff1a; In the heart…

机器学习常见面试题

常见基模型 1. 线性模型&#xff08;Linear Models&#xff09; 特点&#xff1a;通过线性组合特征进行预测&#xff0c;适合处理线性关系。常见类型&#xff1a; 线性回归&#xff08;Linear Regression&#xff09;逻辑回归&#xff08;Logistic Regression&#xff09;岭回…