目录
第1 章 概述 1
1.1 Linux 操作系统中的抽象级别和层次 2
1.2 硬件系统:理解主内存 3
1.3 内核 3
1.3.1 进程管理 4
1.3.2 内存管理 5
1.3.3 设备驱动程序和设备管理 5
1.3.4 系统调用和系统支持 5
1.4 用户空间 6
1.5 用户 7
1.6 前瞻 8
第2 章 基础命令和目录结构 9
2.1 Bourne shell: /bin/sh 9
2.2 shell 的使用 10
2.2.1 shell 窗口 10
2.2.2 cat 命令 11
2.2.3 标准输入输出 11
2.3 基础命令 11
2.3.1 ls 命令 12
2.3.2 cp 命令 12
2.3.3 mv 命令 12
2.3.4 touch 命令 13
2.3.5 rm 命令 13
2.3.6 echo 命令 13
2.4 浏览目录 13
2.4.1 cd 命令 14
2.4.2 mkdir 命令 14
2.4.3 rmdir 命令 14
2.4.4 shell 通配符 14
2.5 中间命令 15
2.5.1 grep 命令 15
2.5.2 less 命令 16
2.5.3 pwd 命令 16
2.5.4 diff 命令 16
2.5.5 file 命令 17
2.5.6 find 和locate 命令 17
2.5.7 head 和tail 命令 17
2.5.8 sort 命令 17
2.6 更改密码和shell 18
2.7 dot 文件 18
2.8 环境变量和shell 变量 18
2.9 命令路径 19
2.10 特殊字符 19
2.11 命令行编辑 20
2.12 文本编辑器 21
2.13 获取在线帮助 21
2.14 shell 输入输出 23
2.14.1 标准错误输出 23
2.14.2 标准输入重定向 24
2.15 理解错误信息 24
2.15.1 解析Unix 的错误信息 24
2.15.2 常见错误 25
2.16 查看和操纵进程 26
2.16.1 命令选项 26
2.16.2 终止进程 27
2.16.3 任务控制 27
2.16.4 后台进程 28
2.17 文件模式和权限 28
2.17.1 更改文件权限 29
2.17.2 符号链接 30
2.17.3 创建符号链接 30
2.18 归档和压缩文件 31
2.18.1 gzip 命令 31
2.18.2 tar 命令 31
2.18.3 压缩归档文件(.tar.gz) 32
2.18.4 zcat 命令 32
2.18.5 其他的压缩命令 33
2.19 Linux 目录结构基础 33
2.19.1 root 目录下的其他目录 34
2.19.2 /usr 目录 35
2.19.3 内核位置 35
2.20 以超级用户的身份运行命令 35
2.20.1 sudo 命令 35
2.20.2 /etc/sudoers 35
2.21 前瞻 36
第3 章 设备管理 37
3.1 设备文件 37
3.2 sysfs 设备路径 38
3.3 dd 命令和设备 39
3.4 设备名总结 40
3.4.1 硬盘:/dev/sd* 40
3.4.2 CD 和DVD:/dev/sr* 41
3.4.3 PATA 硬盘:/dev/hd* 41
3.4.4 终端设备/dev/tty/*、/dev/pts/*和/dev/tty 41
3.4.5 串行端口:/dev/ttyS* 42
3.4.6 并行端口:/dev/lp0 和/dev/lp1 42
3.4.7 音频设备:/dev/snd/*、/dev/dsp、/dev/audio 和其他 43
3.4.8 创建设备文件 43
3.5 udev 44
3.5.1 devtmpfs 44
3.5.2 udevd 的操作和配置 44
3.5.3 udevadm 46
3.5.4 设备监控 47
3.6 详解SCSI 和Linux 内核 47
3.6.1 USB 存储设备和SCSI 50
3.6.2 SCSI 和ATA 50
3.6.3 通用SCSI 设备 51
3.6.4 访问设备的多种方法 51
第4 章 硬盘和文件系统 53
4.1 为磁盘设备分区 55
4.1.1查看分区表 55
4.1.2 更改分区表 56
4.1.3 磁盘和分区的构造 57
4.1.4 固态硬盘 58
4.2 文件系统 59
4.2.1 文件系统类型 59
4.2.2 创建文件系统 60
4.2.3 挂载文件系统 60
4.2.4 文件系统UUID 62
4.2.5 磁盘缓冲、缓存和文件系统 62
4.2.6 文件系统挂载选项 63
4.2.7 重新挂载文件系统 64
4.2.8 /etc/fstab 文件系统表 64
4.2.9 /etc/fstab 的替代者 65
4.2.10 文件系统容量 65
4.2.11 检查和修复文件系统 66
4.2.12 特殊用途的文件系统 68
4.3 交换空间 68
4.3.1 使用磁盘分区作为交换空间 69
4.3.2 使用文件作为交换空间 69
4.3.3 你需要多大的交换空间 69
4.4 前瞻:磁盘和用户空间 70
4.5 深入传统文件系统 70
4.5.1 查看inode 细节 72
4.5.2 在用户空间中使用文件系统 73
4.5.3 文件系统的演进 73
第5 章 Linux 内核的启动 75
5.1 启动消息 75
5.2 内核初始化和启动选项 76
5.3 内核参数 77
5.4 引导装载程序 78
5.4.1 引导装载程序任务 78
5.4.2 引导装载程序概述 79
5.5 GRUB 简介 79
5.5.1 使用GRUB 命令行浏览设备和分区 81
5.5.2 GRUB 配置信息 83
5.5.3 安装GRUB 84
5.6 UEFI 安全启动的问题 86
5.7 链式加载其他操作系统 86
5.8 引导装载程序细节 86
5.8.1 MBR 启动 87
5.8.2 UEFI 启动 87
5.8.3 GRUB 工作原理 87
第6 章 用户空间的启动 89
6.1 init 介绍 89
6.2 System V 运行级别 90
6.3 识别你的init 91
6.4 systemd 91
6.4.1 单元和单元类型 91
6.4.2 systemd 中的依赖关系 92
6.4.3 systemd 配置 94
6.4.4 systemd 操作 96
6.4.5 在systemd 中添加单元 98
6.4.6 systemd 进程跟踪和同步 99
6.4.7 systemd 的按需和资源并行启动 99
6.4.8 systemd 的System V 兼容性 103
6.4.9 systemd 辅助程序 103
6.5 Upstart 104
6.5.1 Upstart 初始化过程 104
6.5.2 Upstart 任务 105
6.5.3 Upstart 配置 107
6.5.4 Upstart 操作 110
6.5.5 Upstart 日志 111
6.5.6 Upstart 运行级别和System V兼容性 111
6.6 System V init 112
6.6.1 System V init 启动命令顺序 113
6.6.2 System V init 链接池 114
6.6.3 run-parts 115
6.6.4 System V init 控制 115
6.7 关闭系统 116
6.8 initramfs 117
6.9 紧急启动和单用户模式 118
第7 章 系统配置:日志、系统时间、批处理任务和用户 119
7.1 /etc 目录结构 119
7.2 系统日志 120
7.2.1 系统日志 120
7.2.2 配置文件 120
7.3 用户管理文件 122
7.3.1 /etc/passwd 文件 122
7.3.2 特殊用户 123
7.3.3 /etc/shadow 文件 124
7.3.4 用户和密码管理 124
7.3.5 用户组 124
7.4 getty 和login 125
7.5 设置时间 125
7.5.1 内核时间和时区 126
7.5.2 网络时间 127
7.6 使用cron 来调度日常任务 127
7.6.1 安装crontab 文件 128
7.6.2 系统crontab 文件 128
7.6.3 cron 的未来 129
7.7 使用at 进行一次性任务调度 129