《Essential Linux Device Drivers》中文版第2章
-宋宝华(Barry Song)
在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念。我们将学习内核定时器、同步机制以及内存分配方法。不过,我们还是得从头开始这次探索之旅。因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点。
2.1 启动过程
图2-1显示了基于x86计算机Linux系统的启动顺序。第一步是BIOS从启动设备中导入主引导记录(MBR),接下来MBR中的代码查看分区表并从活动分区读取GRUB、LILO或SYSLINUX等引导装入程序(Bootloader),之后引导装入程序会加载压缩后的内核映像并将控制权传递给它。内核取得控制权后,会将自身解压缩并投入运转。
基于x86的处理器有两种操作模式:实模式和保护模式。在实模式下,用户仅可以使用1 MB内存,并且没有任何保护。保护模式要复杂得多,用户可以使用更多的高级功能(如分页)。CPU必须中途将实模式切换为保护模式。但是,这种切换是单向的,即不能从保护模式再切换回实模式。
内核初始化的第一步是执行实模式下的汇编代码,之后执行保护模式下init/main.c文件(上一章修改的源文件)中的start_kernel()函数。start_kernel()函数首先会初始化CPU子系统,之后让内存和进程管理系统就位,接下来启动外部总线和I/O设备,最后一步是激活init进程,它是所有Linux进程的父进程。init进程执行启动必要的内核服务的用户空间脚本,并且最终派生控制台终端程序以及显示登录(login)提示。
x86保护模式
arch/x86/boot/pm.c
x86实模式
用户进程和守护程序
init进程
保护模式内核
实模式内核
引导装入程序(GRUB/LILO/…)
BIOS
上电
图2-1 基于x86硬件上的Linux的启动过程
本节内的3级标题都是图2-2中的一条打印信息,这些信息来源于基于x86的笔记本电脑的Linux启动过程。如果在其他体系架构上启动内核,消息以及语义可能会有所不同。如果感觉本节中的一些内容非常晦涩,请不要担心。当前的目的仅是让你有一个大概的印象,让你先品尝内核甜点的味道。接下来要提到的许多概念都会在以后的章节中进行更深入的论述。
2.1.1 BIOS-provided physical RAM map
内核会解析从BIOS中读取到的系统内存映射,并率先将以下信息打印出来:
BIOS-provided physical RA
相关文档:
(本文章来此网络,但是作者进行了相关的整理)。
想在Linux系统下远程访问Windows系统,在Windows、UNIX下远程访问Linux系统吗,本文教您如何做。
rdesktop
是UNIX和Linux系统的一个远程桌面连接软件,它通过MicrosoftWindowsNT、Windows2000提供的终端服务
(TerminalServices)以及Win ......
Centos redhat ,oracle10g,oracle11g均适用
1. 编写脚本:
# vi startoracle.sh
#11g的话只是这个目录有所区别
ORACLE_HOME=/home/oracle/product/10.2.0/db_1;export ORACLE_HOME
ORACLE_SID=orcl;export ORACLE_SID #这里配上你的本地示例名
&nbs ......
在命令模式下设置IP地址,有两种方式,一种是本次开机有效,即使用ifconfig eth0 IP netmask 的方式,系统一旦关机重启需要重新设置IP;另一种直接更改配置文件。在这里采用直接修改配置文件的方式进行设置IP。
LINUX IP配置文件为ifcfg-eth0,该文件存放在/etc/sysconfig/network-scripts路径下,
采用V ......
# cd /home/tmp (进入压缩包所在目录)
# groupadd mysql (建立mysql组)
# useradd -g mysql mysql (在mysql组中建立mysql用户)
# tar -zxvf mysql-5.0.37.tar.gz (解压mysql源码,bz2压缩包请用“tar -jvxf 文件名”指令)
# cd mysql-5.0.37 (进入解压目录)
# ./configure --prefix=/usr/local/mysql (p ......