© / Posted in Linux / August 16, 2007
——————
姓名:Emi 职业:linux爱好者年龄:28 位置:北京
这几天看了很多文档,算是对linux的启动过程有了比较细致的了解.
网上有很多文章谈到这方面的内容,但总觉得没有一篇完全的解析linux启动的
细节,下面是我小弟在学习的过程中总结出来的一些东东.这个是完整的linux启动过程,
不涉及内核,但是我觉得比较详细哦.
(由于本人比较懒,这一段是从网上抄的)
机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘
设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被配置成首先检查
© / Posted in Linux / August 15, 2007
——————
注意:我用的是Ubuntu,它的apt太好用了,用其他版本的就要注意了!
1. KDevelop只是一个IDE,要想编译c/c++程序,要安装make和GCC,以及头文件,那就从这里开始:
sudo apt-get build-dep gcc
sudo apt-get install build-essential
2.安装KDevelop
sudo apt-get install kdevelop3
3.安装好后,可以在应用程序->编程 中看到 KDevelop了。下面这个使用KDevelop开发程序是转的,偷下懒:-)
基本步骤
© / Posted in Linux / August 12, 2007
——————
开机流程分析开机不是只要按一下电源钮而关机只要关掉电源钮就可以了 吗?有何大学问?话是这样没错啦,但是由于 Linux 是一套多人多任务的操作系统,你难保你在关机时没有人在在线,如果你关机的时候碰巧一大群人在在线工作,那会让当时在在线工作的人马上断线的!那不是害死 人了!一些数据可以无价之宝哩!另外,与 DOS 环境不同的是, Linux 在执行的时候,虽然你在画面上只会看到黑压压的一片,完全没有任何画面,但其实他是有很多的程序在背景底下执行的,例如邮件程序、浏览器主机程序等,你如 果随便关机的话,是很容易伤害硬盘及数据传输的动作的!所以在 Linux 下关机可是一门大学问喔 .既然开机是很严肃的一件事,呵呵,那我们来了解一下整个开机的过程吧!好让大家比较容易发现开机过程里面发生错误的地方,与解决之道!不过,由于开机 的过程中,那个 Boot Loader 使用的软件可能不一样,例如 Mandrake 9.0 已经同时提供 Lilo 与 Grub 这两个开机管理程序,虽然 lilo 与 grub 的启动过程或许有点不太相同,但是他的原理则都是一样的哩!这里我们先介绍较老牌的 Lilo 啰! Lilo 是什么?!简单的说,他是 LInux LOader 的缩写,就是 Linux 开机时候载入的咚咚就对了!这东西可是控制了你的多重开机的命脉!底下的篇幅会再分别介绍这两套开机管理程序!底下先开始来谈谈 Linux 是如何开机的呢?基本的流程为:
加载 BIOS 的硬件信息; 读取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)开机信息; 加载 Kernel 的操作系统核心信息; Kernel 执行 init 程序并取得 run-level 信息; init 执行 /etc/rc.d/rc.sysinit 档案; 启动核心的外挂式模块 (/etc/modules.conf); init 执行 run-level 的各个批次档( Scripts ); init 执行 /etc/rc.d/rc.local 档案; 执行 /bin/login 程序; 登入之后开始以 Shell 控管主机。大概的流程就是上面写的那个样子啦,而每一个程序的内容主要是在干嘛呢?底下就分别来谈一谈吧! 寻找 BIOS 加载硬件信息:
稍微有 PC 硬件经验的人们大概都知道 BIOS ( Basic Input/Output Setup ) 的作用!他是第一个被加载计算机的数据!你主机的 CPU 数据、开机顺序、硬盘大小、芯片组工作状态、PnP 的开启与否、内存的频率等等等…这都记录在 BIOS 当中!所以啦,开机之后,系统会先去找这个东西; 可开机硬盘的 MBR 读取 Kernel loader:
再来呢?呵呵!当然就是硬盘的开机数据啰!由于个人计算机的系统在读完 BIOS 之后,会先去读取第一个开机硬盘的第一个扇区(就是 master boot record, MBR 啰!),还记得这个 MBR 吗?嗄!忘记了?赶紧回到第二篇好好的再复习一遍ㄋㄟ?。而这个扇区主要就是在记录开机的信息!还记得上面提到的 Lilo 及 grub 吧?他的纪录就是在这里啰!所以啰,这个时候 Lilo 纪录的信息就会被读出来,系统并依 Lilo 的信息去不同的系统开机,这也就是多重开机设定的地方啦。
好了,先再来回忆一下,如果你是以 grub 程序开机的话,那么在开机的时候会显示什么数据呢?呵呵!会显示蛮多的开机选单,没错?就是『选单』,然后选择了你的选择项目之后,系统就会跑到该扇区去 读取该操作系统的核心啰!呵呵!所以一个好的 boot loader 会具有两个功能,就是:
选单功能 ( menu ) 指向功能 ( pointer )
那么为何要有 loader 呢?我想,我们得先来探讨一下这个话题才行!要探讨之前先来了解一下,晓不晓得 Windows 与 Linux 的档案格式一不一样?!呵呵!当然不一样对不对,好了,那么再来说一说,请问,你的计算机怎么知道你的硬盘的数据是什么系统?哈哈!那就是 loader 的主要功能啰!在你能使用系统之前,一定需要加载核心对吧!?但是怎样让你的硬件认识核心呢?那就是 kernel loader 的主要功能了!所以这里需要提出的是, Linux 的 loader ( lilo 或 grub ) 是可以认识 windows 的核心档案的,但是 Windows 的 loader 却不认识 Linux 的核心档案,因此,作为一个多重开机的设定 loader ,就无法使用 Windows 所提供的 loader 啰!由于需要让系统认识你的 kernel ,因此,就需要 kernel loader 啦!这样想就对啦!
这一部份的信息我们在后续的章节会再提及! 载入核心( Kernel ):