Linux基础教程 第15课:Linux内核和驱动管理

浏览量:65 次 发布时间:2026-01-21 20:34 作者:明扬工控商城 下载docx

最近更新:Linux基础教程 第15课:Linux内核和驱动管理


好的,我们继续第十五课。今天学习Linux内核和驱动管理,这是深入理解Linux系统的关键。


第一部分:Linux内核基础

1.1 理解Linux内核

内核是操作系统的心脏,负责:


进程管理和调度


内存管理


设备驱动


文件系统


网络协议栈


安全机制


bash

# 查看当前内核信息

uname -a

# 输出示例:

# Linux ubuntu 5.15.0-84-generic #93-Ubuntu SMP Tue Sep 5 17:16:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux


# 分解信息:

# Linux: 内核名称

# ubuntu: 主机名

# 5.15.0-84-generic: 内核版本

# x86_64: 硬件架构


# 查看内核详细信息

cat /proc/version

cat /proc/sys/kernel/version


# 查看内核编译配置

zcat /proc/config.gz 2>/dev/null || sudo modprobe configs && zcat /proc/config.gz

1.2 内核版本命名规则

text

主版本.次版本.修订版本-发布号-附加信息

5    .15   .0      -84   -generic


- 主版本:重大更新

- 次版本:偶数=稳定版,奇数=开发版(旧规则)

- 修订版本:bug修复和安全更新

- 发布号:发行版的补丁号

- 附加信息:如generic、lowlatency等

第二部分:内核模块管理

2.1 什么是内核模块?

内核模块是可以动态加载到内核中的代码,通常用于设备驱动。


bash

# 查看已加载的内核模块

lsmod


# 输出格式:

# Module                  Size  Used by

# nvidia              35307520  455

# i915                 2473984  4

# ...


# 查看模块详细信息

modinfo nvidia


# 查找特定模块

lsmod | grep nvidia


# 查看模块依赖关系

modprobe --show-depends nvidia


# 查看/proc/modules(原始数据)

cat /proc/modules

2.2 模块管理命令

bash

# 加载模块

sudo modprobe module_name           # 自动处理依赖

sudo insmod /path/to/module.ko     # 手动加载(不处理依赖)


# 卸载模块

sudo modprobe -r module_name       # 自动处理依赖

sudo rmmod module_name             # 手动卸载


# 列出所有可用模块

find /lib/modules/$(uname -r) -name "*.ko" | head -20


# 查看模块参数

sudo modprobe -c | grep module_name


# 带参数加载模块

sudo modprobe module_name param1=value1 param2=value2


# 永久配置模块参数

sudo vim /etc/modprobe.d/module_name.conf

# 添加:options module_name param1=value1 param2=value2

2.3 常用内核模块

bash

# 查看网络相关模块

lsmod | grep -E "(net|eth|wireless|wifi)"


# 查看文件系统模块

lsmod | grep -E "(ext|xfs|btrfs|ntfs|fat)"


# 查看USB相关模块

lsmod | grep -i usb


# 查看显卡驱动

lsmod | grep -E "(nvidia|amdgpu|i915|nouveau)"


# 查看声卡驱动

lsmod | grep -E "(snd|alsa)"


# 查看虚拟化模块

lsmod | grep -E "(kvm|virt|vbox)"

第三部分:内核编译和安装

3.1 准备工作

警告:编译内核有风险,可能导致系统无法启动!建议在虚拟机中练习。


bash

# 1. 安装编译工具

sudo apt update

sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev bc


# 2. 获取内核源码

# 方法1:从kernel.org获取(最新)

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.131.tar.xz

tar -xf linux-5.15.131.tar.xz


# 方法2:从Ubuntu仓库获取

sudo apt install linux-source

tar -xf /usr/src/linux-source-*.tar.xz


# 3. 准备编译目录

cd linux-5.15.131

cp /boot/config-$(uname -r) .config  # 复制当前配置

3.2 内核配置

bash

# 基于当前配置进行新配置

make olddefconfig


# 交互式配置界面

make menuconfig


# 菜单导航:

# [*] 编译进内核

# [M] 编译为模块

# [ ] 不编译


# 常用配置选项:

# General setup -> Local version: 添加自定义标识

# Processor type and features -> 设置CPU优化

# Device Drivers -> 设备驱动配置

# File systems -> 文件系统支持

# Networking support -> 网络协议

# Kernel hacking -> 调试选项


# 保存配置后退出

3.3 编译内核

bash

# 1. 清理之前的编译

make clean           # 清理编译生成的文件

make mrproper        # 彻底清理(包括配置文件)


# 2. 开始编译(根据CPU核心数设置并行编译)

# 查看CPU核心数

nproc

# 假设有8个核心:

make -j8


# 编译时间较长(30分钟到几小时)

# 可以分步编译:

make -j8 bzImage     # 编译内核镜像

make -j8 modules     # 编译模块

3.4 安装新内核

bash

# 1. 安装模块

sudo make modules_install

# 模块会被安装到 /lib/modules/新内核版本/


# 2. 安装内核

sudo make install

# 这会:

# - 复制内核镜像到 /boot/vmlinuz-版本

# - 复制System.map到 /boot/System.map-版本

# - 复制.config到 /boot/config-版本

# - 更新initramfs

# - 更新GRUB配置


# 3. 验证安装

ls -l /boot/vmlinuz-*

ls -l /lib/modules/


# 4. 查看GRUB菜单中的内核选项

sudo grep ^menuentry /boot/grub/grub.cfg | cut -d "'" -f2


# 5. 重启系统

sudo reboot


# 6. 启动后验证

uname -r

3.5 编译特定模块

bash

# 只编译某个驱动模块

# 假设要编译e1000网卡驱动

cd linux-5.15.131


# 找到驱动源码位置

find . -name "*e1000*" -type f


# 进入驱动目录

cd drivers/net/ethernet/intel/e1000


# 编译单个模块

make -C /lib/modules/$(uname -r)/build M=$(pwd) modules


# 安装模块

sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install

第四部分:内核参数调优

4.1 理解内核参数

内核参数控制内核的行为和性能特征。


bash

# 查看所有可调参数

sudo sysctl -a | head -20


# 查看特定参数

sudo sysctl kernel.hostname

sudo sysctl net.ipv4.ip_forward

sudo sysctl vm.swappiness


# 运行时修改参数

sudo sysctl -w kernel.hostname="newhostname"

sudo sysctl -w vm.swappiness=10


# 查看参数描述(需要安装kernel-doc)

apropos sysctl | grep vm.swappiness

4.2 常用性能调优参数

bash

# 编辑sysctl配置文件

sudo vim /etc/sysctl.d/99-performance.conf

添加以下内容:


bash

# 内存优化

vm.swappiness = 10                    # 减少交换倾向

vm.vfs_cache_pressure = 50           # 调整文件系统缓存压力

vm.dirty_ratio = 40                  # 脏页比例阈值

vm.dirty_background_ratio = 10       # 后台脏页比例

vm.overcommit_memory = 1             # 内存分配策略

vm.overcommit_ratio = 80             # 内存超配比例


# 网络优化

net.core.rmem_max = 16777216         # 最大接收缓冲区

net.core.wmem_max = 16777216         # 最大发送缓冲区

net.ipv4.tcp_rmem = 4096 87380 16777216  # TCP接收缓冲区

net.ipv4.tcp_wmem = 4096 65536 16777216  # TCP发送缓冲区

net.ipv4.tcp_congestion_control = cubic  # TCP拥塞控制算法

net.ipv4.tcp_slow_start_after_idle = 0   # 禁用慢启动

net.core.netdev_max_backlog = 10000  # 网络设备队列长度


# 文件系统优化

fs.file-max = 2097152                # 最大文件句柄数

fs.inotify.max_user_watches = 524288 # inotify监视数


# 安全优化

kernel.kptr_restrict = 1             # 限制内核指针暴露

kernel.dmesg_restrict = 1            # 限制dmesg访问

kernel.randomize_va_space = 2        # 完全地址空间随机化

bash

# 应用配置

sudo sysctl -p /etc/sysctl.d/99-performance.conf

4.3 内核启动参数

bash

# 查看当前启动参数

cat /proc/cmdline


# 编辑GRUB配置以修改启动参数

sudo vim /etc/default/grub


# 找到GRUB_CMDLINE_LINUX_DEFAULT行,添加参数:

# GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=1,2 transparent_hugepage=never"


# 常用启动参数:

# quiet           - 减少启动输出

# splash          - 显示启动画面

# nosplash        - 不显示启动画面

# noapic          - 禁用APIC

# acpi=off        - 禁用ACPI

# mem=2G          - 限制内存大小

# maxcpus=2       - 限制CPU数量

# isolcpus=1,2    - 隔离CPU核心

# transparent_hugepage=never - 禁用透明大页

# elevator=deadline - I/O调度器

# intel_iommu=on  - 启用Intel IOMMU

# amd_iommu=on    - 启用AMD IOMMU

# pci=noaer       - 禁用PCIe高级错误报告


# 更新GRUB配置

sudo update-grub

sudo reboot

第五部分:设备驱动管理

5.1 硬件识别

bash

# 查看PCI设备

lspci

lspci -v        # 详细信息

lspci -vv       # 更详细信息

lspci -nn       # 显示厂商和设备ID


# 查看USB设备

lsusb

lsusb -v        # 详细信息

lsusb -t        # 树状结构


# 查看块设备

lsblk

lsblk -f        # 显示文件系统

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT


# 查看SCSI设备

lsscsi

lsscsi -s       # 显示容量


# 查看CPU信息

lscpu

cat /proc/cpuinfo


# 查看内存信息

sudo dmidecode -t memory

5.2 驱动管理实践

bash

# 查看设备使用的驱动

# 对于PCI设备:

lspci -k

# 示例输出:

# 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)

#         Subsystem: Dell HD Graphics 630

#         Kernel driver in use: i915

#         Kernel modules: i915


# 对于USB设备:

lsusb -t

# 查看设备对应的sysfs信息

find /sys/devices -name "*driver*" | xargs ls -la

5.3 驱动问题排查

bash

# 1. 检查驱动是否加载

lsmod | grep driver_name


# 2. 查看内核日志中的驱动信息

dmesg | grep -i driver_name

sudo journalctl -k | grep -i driver_name


# 3. 检查设备是否被识别

lspci -nn | grep -i device_name

lsusb | grep -i device_name


# 4. 检查/sys文件系统中的设备信息

find /sys/ -name "*device_name*" 2>/dev/null


# 5. 查看驱动版本

modinfo driver_name | grep version


# 6. 手动加载驱动并查看输出

sudo modprobe -v driver_name


# 7. 如果驱动有参数,尝试调整

sudo modprobe -r driver_name

sudo modprobe driver_name param=value

第六部分:显卡驱动管理

6.1 NVIDIA驱动安装

bash

# 方法1:使用Ubuntu仓库

sudo apt update

sudo ubuntu-drivers devices  # 检测推荐驱动

sudo apt install nvidia-driver-535  # 安装推荐版本


# 方法2:使用NVIDIA官方驱动

# 1. 下载驱动:https://www.nvidia.com/Download/index.aspx

# 2. 禁用Nouveau驱动

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

# 添加:

blacklist nouveau

options nouveau modeset=0


# 3. 更新initramfs

sudo update-initramfs -u


# 4. 重启进入文本模式

sudo systemctl set-default multi-user.target

sudo reboot


# 5. 安装驱动

sudo bash NVIDIA-Linux-x86_64-535.104.run


# 6. 验证安装

nvidia-smi

nvidia-settings


# 7. 恢复图形界面

sudo systemctl set-default graphical.target

sudo reboot

6.2 Intel/AMD显卡驱动

bash

# Intel集成显卡(默认已包含)

# 查看Intel显卡信息

lspci | grep -i vga

sudo intel_gpu_top  # 需要安装intel-gpu-tools


# 安装Intel显卡工具

sudo apt install intel-gpu-tools vainfo


# AMD显卡

# 开源驱动(默认)

sudo apt install mesa-utils

glxinfo | grep "OpenGL renderer"


# AMD官方驱动(需要较新内核)

sudo apt install firmware-amd-graphics


# 查看AMD显卡信息

sudo lspci -v | grep -A 10 -i "display\|vga"

sudo dmesg | grep -i amdgpu

第七部分:内核调试和性能分析

7.1 内核日志分析

bash

# 查看内核环形缓冲区

dmesg

dmesg -T  # 带时间戳

dmesg -H  # 人类可读的时间

dmesg -l err,crit,alert,emerg  # 只看错误信息


# 实时监控内核日志

sudo tail -f /var/log/kern.log


# 使用journalctl查看内核日志

sudo journalctl -k  # 内核消息

sudo journalctl -k --since "1 hour ago"

sudo journalctl -k -f  # 实时跟踪


# 清空内核日志缓冲区

sudo dmesg -C

7.2 性能分析工具

bash

# 安装性能分析工具

sudo apt install linux-tools-common linux-tools-$(uname -r)


# perf工具使用

sudo perf list  # 列出所有事件

sudo perf stat ls  # 统计命令性能

sudo perf record -a -g sleep 10  # 记录系统性能

sudo perf report  # 查看报告


# 生成火焰图

git clone https://github.com/brendangregg/FlameGraph

sudo perf record -F 99 -a -g -- sleep 60

sudo perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > perf.svg

7.3 内核调试配置

bash

# 启用内核调试信息

# 在menuconfig中配置:

# Kernel hacking ->

#   [*] Kernel debugging

#   [*] Debug Filesystem

#   [*] Magic SysRq key


# 使用SysRq键(紧急情况)

# 启用SysRq:echo 1 > /proc/sys/kernel/sysrq

# Alt+SysRq+h:显示帮助

# Alt+SysRq+t:显示任务状态

# Alt+SysRq+m:显示内存信息

# Alt+SysRq+w:显示不可中断任务

# Alt+SysRq+e:终止所有进程(除了init)

# Alt+SysRq+i:杀死所有进程(除了init)

# Alt+SysRq+s:同步所有文件系统

# Alt+SysRq+u:重新挂载所有文件系统为只读

# Alt+SysRq+b:立即重启


# 内核oops分析

# 当内核崩溃时,查看:

cat /var/log/kern.log | grep -i oops

dmesg | tail -100

第八部分:内核安全和加固

8.1 内核安全模块

bash

# 查看SELinux状态

getenforce

sestatus


# 查看AppArmor状态

sudo aa-status

sudo apparmor_status


# 查看LSM(Linux安全模块)状态

cat /sys/kernel/security/lsm


# 查看内核安全特性

grep -E "(PAX|GRSECURITY|LANDLOCK)" /boot/config-$(uname -r)

8.2 内核安全配置

bash

# 创建安全配置文件

sudo vim /etc/sysctl.d/99-security.conf

添加以下内容:


bash

# 网络安全

net.ipv4.tcp_syncookies = 1

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

net.ipv6.conf.all.accept_source_route = 0

net.ipv6.conf.default.accept_source_route = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0


# 内核指针保护

kernel.kptr_restrict = 2

kernel.dmesg_restrict = 1


# 进程限制

kernel.exec-shield = 1

kernel.randomize_va_space = 2


# 审计

kernel.printk = 3 3 3 3


# 强制访问控制

fs.protected_hardlinks = 1

fs.protected_symlinks = 1

fs.protected_fifos = 2

fs.protected_regular = 2


# 用户空间监控

kernel.yama.ptrace_scope = 1


# 模块签名

modules.sig_enforce = 1

bash

# 应用配置

sudo sysctl -p /etc/sysctl.d/99-security.conf

8.3 内核模块签名

bash

# 生成密钥对

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Your Name/"


# 签名模块

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 MOK.priv MOK.der module.ko


# 导入密钥到MOK(Machine Owner Key)

sudo mokutil --import MOK.der


# 重启并按照提示完成导入


# 验证模块签名

modinfo module.ko | grep sig


# 启用模块签名验证

echo 1 | sudo tee /sys/module/module/parameters/sig_enforce

第九部分:实战练习

练习1:编译和安装自定义内核

下载Linux 5.15内核源码


基于当前配置创建.config


修改内核版本标识为"-custom"


禁用不需要的驱动和功能


编译并安装内核


验证新内核正常工作


练习2:驱动问题排查

模拟并解决以下驱动问题:


网卡驱动无法加载


USB设备识别问题


显卡驱动冲突


声卡无声问题


练习3:内核参数优化

为以下场景优化内核参数:


高并发Web服务器


数据库服务器


桌面工作站


虚拟化宿主机


练习4:内核安全加固

启用所有推荐的安全参数


配置模块签名


设置AppArmor策略


禁用不必要的内核功能


第十部分:内核维护脚本

10.1 内核更新脚本

bash

#!/bin/bash

# update_kernel.sh

# 安全更新内核


set -e  # 出错时退出


echo "=== 内核更新脚本 ==="

echo "当前内核: $(uname -r)"

echo


# 备份当前内核配置

echo "备份当前内核配置..."

sudo cp /boot/config-$(uname -r) /boot/config-$(uname -r).backup

sudo cp /lib/modules/$(uname -r) /lib/modules/$(uname -r).backup -r


# 更新系统

echo "更新系统包..."

sudo apt update

sudo apt upgrade -y


# 安装新内核(如果有)

echo "检查新内核..."

new_kernels=$(apt list --upgradable 2>/dev/null | grep linux-image | wc -l)


if [ $new_kernels -gt 0 ]; then

   echo "发现 $new_kernels 个内核更新"

   echo "安装新内核..."

   sudo apt install linux-image-generic linux-headers-generic -y

   

   # 清理旧内核(保留最近2个)

   echo "清理旧内核..."

   sudo apt autoremove --purge -y

   

   echo "新内核安装完成,需要重启"

   read -p "是否现在重启? (y/N): " choice

   if [[ $choice =~ ^[Yy]$ ]]; then

       sudo reboot

   fi

else

   echo "没有发现内核更新"

fi


echo "脚本完成"

10.2 内核模块监控脚本

bash

#!/bin/bash

# monitor_modules.sh

# 监控内核模块状态


LOG_FILE="/var/log/kernel_modules.log"

ALERT_THRESHOLD=1000  # 模块加载次数阈值


log() {

   echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"

}


check_modules() {

   echo "=== 内核模块状态检查 ==="

   echo "检查时间: $(date)"

   echo

   

   # 1. 检查失败的模块

   echo "1. 检查加载失败的模块..."

   failed_modules=$(dmesg | grep "failed to load" | tail -10)

   if [ -n "$failed_modules" ]; then

       log "发现加载失败的模块:"

       echo "$failed_modules" | while read line; do

           log "$line"

       done

       echo "$failed_modules"

   else

       echo "  无加载失败的模块"

   fi

   echo

   

   # 2. 检查模块使用计数

   echo "2. 检查高使用计数的模块..."

   lsmod | awk 'NR>1 && $3 > '$ALERT_THRESHOLD' {print $1, $3}' | while read module count; do

       echo "  警告: $module 使用计数过高: $count"

       log "模块 $module 使用计数过高: $count"

   done

   echo

   

   # 3. 检查未签名的模块

   echo "3. 检查未签名模块..."

   find /lib/modules/$(uname -r) -name "*.ko" | while read module; do

       if ! modinfo "$module" | grep -q "signature:"; then

           echo "  未签名: $module"

           log "未签名模块: $module"

       fi

   done

   echo

   

   # 4. 检查可疑模块

   echo "4. 检查可疑模块..."

   suspicious_patterns=("backdoor" "keylogger" "rootkit" "hack")

   for pattern in "${suspicious_patterns[@]}"; do

       suspicious=$(lsmod | grep -i "$pattern")

       if [ -n "$suspicious" ]; then

           echo "  发现可疑模块: $suspicious"

           log "可疑模块: $suspicious"

       fi

   done

}


# 主程序

check_modules

echo "详细日志请查看: $LOG_FILE"

10.3 内核性能分析脚本

bash

#!/bin/bash

# analyze_kernel_perf.sh

# 内核性能分析


REPORT_DIR="/var/log/kernel_perf_$(date +%Y%m%d_%H%M%S)"

mkdir -p "$REPORT_DIR"


echo "=== 内核性能分析 ==="

echo "报告目录: $REPORT_DIR"

echo


# 1. 系统概览

echo "1. 系统概览..."

{

   echo "系统信息:"

   uname -a

   echo

   echo "CPU信息:"

   lscpu

   echo

   echo "内存信息:"

   free -h

   echo

   echo "运行时间:"

   uptime

   echo

} > "$REPORT_DIR/01_system_overview.txt"


# 2. 内核参数

echo "2. 收集内核参数..."

sysctl -a > "$REPORT_DIR/02_sysctl_all.txt" 2>/dev/null


# 3. 中断统计

echo "3. 中断统计..."

cat /proc/interrupts > "$REPORT_DIR/03_interrupts.txt"


# 4. 进程调度

echo "4. 进程调度信息..."

{

   echo "调度器:"

   cat /sys/block/*/queue/scheduler 2>/dev/null

   echo

   echo "CPU调度域:"

   find /sys/devices/system/cpu/cpu*/cpufreq -type f -name "*" 2>/dev/null | xargs grep . 2>/dev/null || true

} > "$REPORT_DIR/04_scheduler.txt"


# 5. 内存管理

echo "5. 内存管理信息..."

{

   echo "页面分配统计:"

   grep -E "(pages|alloc|free)" /proc/vmstat

   echo

   echo "大页信息:"

   grep -i huge /proc/meminfo

   echo

   echo "页面回收:"

   grep -E "(pgscan|pgsteal)" /proc/vmstat

} > "$REPORT_DIR/05_memory.txt"


# 6. 文件系统缓存

echo "6. 文件系统缓存..."

{

   echo "dentry和inode缓存:"

   grep -E "(dentry|inode)" /proc/slabinfo

   echo

   echo "页面缓存:"

   free -h | grep -i cache

} > "$REPORT_DIR/06_fs_cache.txt"


# 7. 网络统计

echo "7. 网络统计..."

{

   echo "网络接口统计:"

   netstat -i

   echo

   echo "连接统计:"

   ss -s

} > "$REPORT_DIR/07_network.txt"


# 8. 块设备统计

echo "8. 块设备统计..."

iostat -x 1 3 > "$REPORT_DIR/08_block_io.txt" 2>/dev/null


# 9. 使用perf采样

echo "9. 使用perf采样(需要sudo权限)..."

if command -v perf &>/dev/null; then

   sudo perf record -a -g -o "$REPORT_DIR/perf.data" sleep 10 2>/dev/null

   sudo perf report -i "$REPORT_DIR/perf.data" > "$REPORT_DIR/09_perf_report.txt" 2>/dev/null

fi


echo "分析完成。报告保存在: $REPORT_DIR"

echo "可以查看以下文件:"

find "$REPORT_DIR" -name "*.txt" -type f | sort

今日总结

今天我们深入学习了Linux内核和驱动管理:


内核基础:理解内核架构和版本管理


内核模块:模块的加载、卸载和管理


内核编译:从源码编译和安装自定义内核


内核参数:调优系统性能和安全设置


设备驱动:硬件识别、驱动安装和问题排查


显卡驱动:NVIDIA、Intel、AMD显卡管理


内核调试:日志分析、性能调优和问题诊断


内核安全:安全模块、参数加固和模块签名


实用工具:维护脚本和监控工具


重要原则:


谨慎操作:内核修改可能让系统无法启动


备份优先:重要操作前备份数据和配置


测试环境:先在虚拟机或测试机验证


文档记录:记录所有配置和修改


逐步验证:每次修改后验证系统稳定性


内核管理是Linux系统管理的进阶技能,需要理论知识和实践经验结合。建议在安全的测试环境中多加练习。


有问题吗?完成练习后,我们可以继续第十六课:Linux集群和高可用性。


明扬工控商城

推荐阅读:

Linux基础教程 第20课:Linux安全攻防和渗透测试基础

Linux基础教程 第19课:性能调优和容量规划

Linux基础教程 第18课:Linux云计算基础

Linux基础教程 第17课:自动化运维工具

Linux基础教程 第16课:集群和高可用性

Linux基础教程 第15课:Linux内核和驱动管理

热门标签:
Linux基础教程 第15课:Linux内核和驱动管理.docx

将本文的Word文档下载到电脑

推荐度:

下载

全部评论

请登录
产业新闻-明扬资讯网
科技资讯-明扬资讯网