第一章:Linux的安装
每次学习我碰到的第一个问题就是环境问题,我总想第一时间搭建一个学习的环境。尤其是Linux这种的企鹅动物类的确是一个需要亲历亲为才能掌握的冬冬。于是我,一个Linux新手,第一件事情就是在自己常去的技术网站和google寻找RHEL的最新的安装盘片了。(我总是喜新厌旧,总想要找到最新的版本,不过也是,最新版本应该也是最简单的版本,因为软件总是在不断进步的,越来越好用才对。)不辞辛苦,你总能找到的,我就在网站找到iso盘片,下载并安装的。如果在公司使用有盗版问题的话,对于RHEL来说,CentOS是一个很好的替代品,其实就是用redhat源代码重新编译,大家可以去centos.org下载,其实是完全一样的东西,而且是free的,很棒哦。我都开始转向CentOS了,懒得去每次找RHEL的最新版本。
有了安装盘片,就可以开始安装了。可以在自己的家用电脑上安装windows+linux双系统,如果在公司,我想大家最好的办法还是使用VMWare或者是Virtual PC这样的虚拟机。虽然本人觉得VMWare更好用和更健壮,不过Virtual PC没有版权问题,对于我们这种只是用于学习的人来说也是已经足够的了。我个人就在家使用vmware,在公司使用virtual pc。
我以前安装过RHEL3,感觉RHEL4的安装过程更加友好了,不过在virtual pc上却给我带来很多的麻烦。我把我的安装经历和我觉得应该知晓的预备知识document在这里。
一. 预备知识:
分区
PC的BIOS的工作真的是很简单,做完机器自检之后,如果是从硬盘启动的,只会认定硬盘的0磁面0磁道1扇区,将之读入内存,并将控制权交给它。这个0磁面0磁道1扇区就是我们常常称为硬盘主引导扇区的MBR (Master Boot Record),我们知道一个扇区只有512个字节,还被分成了三个部分:前面部分是启动代码,叫作主引导记录,共446个字节,接着后面的是64个字节是硬盘分区表DPT (Disk Partition Table),用于存放主分区信息,MBR的最后是结束标志2字节。
由于PC硬盘的最初的分区方案只允许4个主分区(Primary Partition )。实际使用中这太少了,为克服这个设计问题,人们发明了扩展分区(Extended Partition)。这个方法允许将基本分区分为若干子分区,这个基本分区被称为扩展分区,而其子分区被称为逻辑分区(Logical Partition)。硬盘是一个整体,每个主分区都有一个启动扇区。
最简单的主引导记录包括一段小程序,读入分区表,检查哪个分区是活动分区(即启动分区),并读入活动分区的第一个扇区:该分区的启动扇区(MBR是整个硬盘的启动扇区)。这个启动扇区包括另一个小程序,读入这个分区(假设是可启动的)上操作系统的第一个部分,然后把控制权交给它。
大家都知道在Linux中一切都是文件,包括我们的硬盘和分区!在Linux 里硬盘和分区都是设备文件,存放在/dev目录下。IDE设备是/dev/hdX,而SCSI设备是/dev/sdX,X是设备标签。IDE设备标签一般从a到d ,为什么,因为我们只有两个IDE接口,而每个IDE接口只能接最多两个硬盘。/dev/hda代表主板上主IDE插口上的主设备,/dev/hdb代表主板上主IDE插口上的从设备,/dev/hdc代表主板上从IDE插口上的主设备,/dev/hdd代表主板上从IDE插口上的从设备。我没有SCSI硬盘,所以不做过多讲述。
如果我们有了一个连接在主板上主IDE插口上的主设备位置的硬盘/dev/hda ,我们开始为硬盘分区,从上面所讲,我们知道硬盘最多可以有4个主分区,而在Linux就这么约定的1-4是主分区(不管实际上有几个主分区),5-8是逻辑分区(不管它在哪个基本分区中),所以从/dev/hda1到/dev/hda4 这4个分区设备文件是为主分区预留的。扩展分区可以是从/dev/hda2到/dev/hda4中的任意一个,但逻辑分区只能是从/dev/hda5开始,而且一定是从/dev/hda5开始的。分区使用的fdisk我想大家应该都会使用吧,而且在Linux安装过程之中可以使用图形化的工具Disk Druid,很容易,使用确省选项就很好。
在windows之中每个硬盘或者分区都有个盘符,好像C:, D:之类的。这一点Linux是与之大不相同的,在Linux之中一切皆文件,我们知道/dev之下的设备文件代表了这个硬盘或者分区,如果分区要能够被我们使用的话,其实最终也需要在其上建立文件系统(就是格式化啊),并最终成为一个目录。所以可能/usr和/boot是在两个不同的分区(甚至硬盘)之下的。不要认为大家都在/之下就认为在一个分区之内。
我把这种目录叫做接挂点(mount point),比如/opt与/不在同一个分区之内,如果我只是把/ mount了,而没有mount /opt,我会发现虽然在/之下有一个/opt目录(怎么发现,使用ls或者dir命令嘛),但是这时候你会发现/opt这时只是一个空目录而已。所有的接挂目录都必须事先存在的,好像我们要mount一个cdrom到/mnt/cdrom,我们必须事先建立一个空的/mnt/cdrom目录。
Note:
e2label又是什么东西呢,我觉得就是我们给分区取的别名。比如我们把hda1分区的mount point设为了/boot,那么我们如果引用/boot的时候,其实也就是在引用hda1。这种资料应该记录在分区的super block之中。在使用fdisk等分区工具创建新的分区的时候,已经帮我们用接挂目录建立了别名。当然我们可以通过e2label命令进行更改,不过最好不要更改,因为如果在Bootloader或者其他什么脚本使用了LABEL=/之类的引用的话,会导致我们的linux的无**常启动。有兴趣可以做个小实验,启动linux之后,在shell之中打入以下命令,使用fdisk –p /dev/hda 列出分区(不要用swap分区做实验,swap分区没有别名的),然后使用e2label /dev/hda? 逐个查看一下它的别名,找到/boot分区,我知道一般GRUB会用LABEL来引用他们,现在使用e2label /dev/hda? newlabel来更改它的别名,不要再叫/boot。好了, reboot后看看结果吧。
BootLoader
Bootloader的出现也是因为原来的引导代码只是将控制交给活动分区的启动扇区,这样的代码实在太简单了,现实之中有很多更多的需要,比如我们要实现在多个系统之中选择性的启动某个系统。于是出现了更加强大的启动代码,在Linux之中常用的就是以下两个:LILO和GRUB。现在我们没有必要知道这两个Bootloader的不同之处,反正这两个都可以被安装在MBR之中(直接控制启动过程)或者安装在某个分区(需要是活动分区或者需要其他Bootloader的配合)完成启动的任务,GRUB是更新的产品,所以一定比LILO更好些。
对于启动Linux的主要任务是接手控制,加载指定内核,并最终把控制交给内核。
PC的Linux启动过程
我简叙我所理解的Linux的启动过程:
1.BIOS读取MBR主引导扇区(LILO或者GRUB的一部分一般已经写入MBR);
2.于是LILO或者GRUB被加载入内存;
3.LILO或者GRUB会负责加载LINUX内核;
4.内核取得控制权之后会接挂根文件系统/,启动init,一切进程的“鼻祖”,读取/etc/inittab文件;
5.允许所有运行级别1指定的脚本程序;
6.在运行级别1的结尾处告诉系统前进到运行级别n(/etc/inittab之中指定);
允许所有运行级别n(/etc/inittab之中指定)指定的脚本程序;系统就绪;
双系统
通过硬盘分区和相应的BootLoader可以使Windows和Linux在一台电脑上和平共处。
虚拟机的安装
1. VMWare,我是用的VMWare workstation 5
2. Virtual PC |