深度探索Linux操作系统-系统构建和原理解析-(附光盘)

价格 89.00对比
发货 广东东莞市
销量 暂无
评价 已有 0 条评价
人气 已有 2 人关注
数量
+-
库存100
 
联系方式
加关注0

新图书资料发布

VIP   VIP会员第1年
资料未认证
保证金未缴纳

内容简介

本书是探索Linux操作系统原理的里程碑之作,在众多的同类书中独树一帜。它颠覆和摒弃了传统的从阅读Linux内核源代码着手学习Linux操作系统原理的方式,而是基于实践,以从零开始构建一个完整的Linux操作系统的过程为依托,指引读者在实践中去探索操作系统的本质。这种方式的妙处在于,让读者先从宏观上全面认清一个完整的操作系统中都包含哪些组件,各个组件的作用,以及各个组件间的关系,从微观上深入理解系统各个组件的原理,帮助读者达到事半功倍的学习效果,这是作者潜心研究Linux操作系统10几年的心得和经验,能避免后来者在学习中再走弯路。此外,本书还对编译链接技术(尤其是动态加载和链接技术)和图形系统进行了原理性的探讨,这部分内容珍贵。
  全书一共8章:第1章介绍了如何准备工作环境。在第2章中构建了编译工具链,这是后面构建操作系统各个组件的基础。在这一章中,不仅详细讲解了工具链的构建过程,而且还通过对编译链接过程的探讨,深入讨论了工具链的组成及各个组件的作用,理解工具链的工作原理对理解操作系统至关重要。第3~4章,从零开始构建了一个具备用户字符界面的操作系统,详细讲解了构建的过程以及涉及的技术细节。第5章从理论的角度探讨了这一过程,从内核的加载、解压一直讨论到用户进程的加载,包括用户空间的动态链接器为加载程序所作的努力。第6~7章先构建了操作系统的基础图形系统,然后在此基础上构建了桌面环境。第8章深入探讨了计算机图形的基础原理,包含2D和3D程序的渲染、软件渲染、硬件渲染等内容,同时也从操作系统的角度审视了Pipeline。

目录

前  言
第1章 准备基本环境
1.1 安装VirtualBox
1.2 创建虚拟计算机
1.3 安装Linux系统
1.4 使用root用户
1.5 启用自动登录
1.6 挂载实验分区
1.7 安装ssh服务器
1.8 更改网络模式
1.9 安装增强模式
1.10 使用Xephyr
第2章 工具链
2.1 编译过程
2.1.1 预编译
2.1.2 编译
2.1.3 汇编
2.1.4 链接
2.2 构建工具链
2.2.1 GNU工具链组成
2.2.2 构建工具链的过程
2.2.3 准备工作
2.2.4 构建二进制工具
2.2.5 编译freestanding的交叉编译器
2.2.6 安装内核头文件
2.2.7 编译目标系统的C库
2.2.8 构建完整的交叉编译器
2.2.9 定义工具链相关的环境变量
2.2.10 封装“交叉”pkg-config
2.2.11 关于使用libtool链接库的讨论
2.2.12 启动代码
第3章 构建内核
3.1 内核映像的组成
3.1.1 一级推进系统——setup.bin
3.1.2 二级推进系统——内核非压缩部分
3.1.3 有效载荷——vmlinux
3.1.4 映像的格式
3.2 内核映像的构建过程
3.2.1 kbuild简介
3.2.2 构建过程概述
3.2.3 vmlinux的构建过程
3.2.4 vmlinux.bin的构建过程
3.2.5 setup.bin的构建过程
3.2.6 bzImage的组合过程
3.2.7 内核映像构建过程总结
3.3 配置内核
3.3.1 交叉编译内核设置
3.3.2 基本内核配置
3.3.3 配置处理器
3.3.4 配置内核支持模块
3.3.5 配置硬盘控制器驱动
3.3.6 配置文件系统
3.3.7 配置内核支持ELF文件格式
3.4 构建基本根文件系统
3.4.1 根文件系统的基本目录结构
3.4.2 安装C库
3.4.3 安装shell
3.4.4 安装根文件系统到目标系统
第4章 构建initramfs
4.1 为什么需要initramfs
4.2 initramfs原理探讨
4.2.1 挂载rootfs
4.2.2 解压initramfs到rootfs
4.2.3 挂载并切换到真正的根目录
4.3 配置内核支持initramfs
4.4 构建基本的initramfs
4.5 将硬盘驱动编译为模块
4.5.1 配置devtmpfs
4.5.2 将硬盘控制器驱动配置为模块
4.6 自动加载硬盘控制器驱动
4.6.1 内核向用户空间发送事件
4.6.2 udev加载驱动和建立设备节点
4.6.3 处理冷插拔设备
4.6.4 编译安装udev
4.6.5 配置内核支持NETlink
4.6.6 配置内核支持inotify
4.6.7 安装modules.alias.bin文件
4.6.8 启动udevd和模拟热插拔
4.7 挂载并切换到根文件系统
4.7.1 挂载根文件系统
4.7.2 切换到根文件系统
第5章 从内核空间到用户空间
5.1 Linux操作系统加载
5.1.1 GRUB映像构成
5.1.2 安装GRUB
5.1.3 GRUB启动过程
5.1.4 加载内核和initramfs
5.2 解压内核
5.2.1 移动内核映像
5.2.2 解压
5.2.3 重定位
5.3 内核初始化
5.3.1 初始化虚拟内存
5.3.2 初始化进程
5.3.3 创建进程
5.4 进程加载
5.4.1 加载可执行程序
5.4.2 进程的投入运行
5.4.3 按需载入指令和数据
5.4.4 加载动态链接器
5.4.5 加载动态库
5.4.6 重定位动态库
5.4.7 重定位可执行程序
5.4.8 重定位动态链接器
5.4.9 段RELRO
第6章 构建根文件系统
6.1 初始根文件系统
6.2 以读写模式重新挂载文件系统
6.3 配置内核支持网络
6.3.1 配置内核支持TCP/IP协议
6.3.2 配置内核支持网卡
6.4 启动udev
6.5 安装网络配置工具并配置网络
6.6 安装并配置ssh服务
6.7 安装procps
6.8 安装X窗口系统
6.8.1 

摘要与插图

第1章
  准备基本环境
  在开始Linux操作系统的探索旅程之前,我们先需要准备一下环境,读者在真实的计算机上安装一个Linux操作系统作为工作机。毫无疑问,使用是的学习方法,如果日常工作系统也是Linux,那么这无疑有助于更好地理解Linux操作系统。但是这不是必须的,也可以安装一台虚拟机作为工作机。鉴于现在的Linux发行版的安装过程友好和自动化,本章无意浪费版面介绍其安装过程。
  另外,在构建操作系统时,需要频繁重启系统,因此强烈建议读者不要使用工作机作为实验机,而是另外安装一台虚拟机作为实验机。本章将介绍如何创建一个虚拟的裸机以及如何在其上安装Linux操作系统,并且介绍为了后面的开发和调试,在虚拟机上需要进行的一些必要的准备。
  因为桌面环境可以利用一个模拟的小X服务器Xephyr来调试,所以我们可以先在宿主机的Xephyr上进行开发和调试,然后再到构建的真实系统上调试。因此,本章的一部分介绍了如何使用Xephyr。
  1.1 安装VirtualBox
  笔者建议在真实的计算机上安装一个Linux操作系统,这个系统作为工作机,主要进行编译、构建和开发,另外辅助提供做一些实验及阅读源代码等。理论上使用哪家的发行版或者哪个版本都可以,但是为了避免意外的麻烦,建议使用和笔者相同的环境。在写作这本书的,笔者使用Ubuntu12.10将构建过程全部验证了一遍,所以建议读者也使用这个版本。
  另外,我们当然不希望使用工作机调试我们构建的操作系统,因为这样需要频繁的启动。所以我们需要一个虚拟机,笔者使用的虚拟机是VirtualBox。在Ubuntu12.10下,使用如下命令安装VirtualBox:
  root@baisheng:~# apt-get
install virtualbox
  因为我们是从零开始构建系统,因此虚拟机上还需要一个额外的Linux系统作为桥梁。鉴于其只是一个桥梁,所以使用什么版本没有关系,比如笔者虚拟机上使用的是Ubuntu11.10。
  1.2 创建虚拟计算机
  在安装Linux操作系统之前,我们需要从硬件层面创建一个虚拟的计算机。VirtualBox启动后,主界面如图1-1所示。
  
  图1-1 VirtualBox主界面
  单击图1-1中VirtualBox主界面工具条中的“新建”按钮,新建虚拟机的向导将启动。这个过程简单,读者按照新建向导一路执行下去就好。读者只需要注意在安装过程中要选择安装Linux操作系统,其他全部默认即可。
  创建好虚拟机后,在VirtualBox主界面中将出现新建的虚拟裸机,如图1-2所示,其中,ubuntu11.10就是笔者新创建的虚拟机。
  1.3 安装Linux系统
  本节我们将在1.2节创建的裸机上安装Linux操作系统。
  在图1-2所示的工具栏上单击“设置”按钮,当然要确保在左侧的列表中选中的是刚刚创建的裸机,出现如图1-3所示的界面。
  
  
  图1-2 新建的虚拟裸机
  
  图1-3 载入虚拟光盘映像
  在图1-3中,先在左侧的列表中选择“存储”。在默认情况下,我们会看到虚拟机已经添加了一个空的虚拟光驱。如果VirtualBox没有自动添加,读者手动添加即可。至于是SATA接口还是IDE接口,是没有关系的,毕竟是虚拟的。然后,选中虚拟光驱,即图1-3所示的IDE控制器下的“没有盘片”,然后单击“分配光驱”文本框旁的带有光盘图片的按钮。VirtualBox将打开一个文件选择对话框,读者找到Linux操作系统的光盘映像即可。这个过程与我们将物理光盘放入光驱道理相同。
  在将光盘映像放入虚拟光驱后,在图1-2所示的界面中单击工具栏上的“启动”按钮,启动Linux系统的安装过程。鉴于现在的发行版的安装过程友好且全程
举报收藏 0
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2021111040号