linux 入门Word文件下载.docx
《linux 入门Word文件下载.docx》由会员分享,可在线阅读,更多相关《linux 入门Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
如果我们有了一个连接在主板上主IDE插口上的主设备位置的硬盘/dev/hda,我们开始为硬盘分区,从上面所讲,我们知道硬盘最多可以有4个主分区,而在Linux就这么约定的1-4是主分区(不管实际上有几个主分区),5-8是逻辑分区(不管它在哪个基本分区中),所以从/dev/hda1到/dev/hda4这4个分区设备文件是为主分区预留的。
扩展分区可以是从/dev/hda2到/dev/hda4中的任意一个,但逻辑分区只能是从/dev/hda5开始,而且一定是从/dev/hda5开始的。
分区使用的fdisk我想大家应该都会使用吧,而且在Linux安装过程之中可以使用图形化的工具DiskDruid,很容易,使用确省选项就很好。
在windows之中每个硬盘或者分区都有个盘符,好像C:
,D:
之类的。
这一点Linux是与之大不相同的,在Linux之中一切皆文件,我们知道/dev之下的设备文件代表了这个硬盘或者分区,如果分区要能够被我们使用的话,其实最终也需要在其上建立文件系统(就是格式化啊),并最终成为一个目录。
所以可能/usr和/boot是在两个不同的分区(甚至硬盘)之下的。
不要认为大家都在/之下就认为在一个分区之内。
我把这种目录叫做接挂点(mountpoint),比如/opt与/不在同一个分区之内,如果我只是把/mount了,而没有mount/opt,我会发现虽然在/之下有一个/opt目录(怎么发现,使用ls或者dir命令嘛),但是这时候你会发现/opt这时只是一个空目录而已。
所有的接挂目录都必须事先存在的,好像我们要mount一个cdrom到/mnt/cdrom,我们必须事先建立一个空的/mnt/cdrom目录。
Note:
e2label又是什么东西呢,我觉得就是我们给分区取的别名。
比如我们把hda1分区的mountpoint设为了/boot,那么我们如果引用/boot的时候,其实也就是在引用hda1。
这种资料应该记录在分区的superblock之中。
在使用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,我是用的VMWareworkstation5
2.VirtualPC
详细安装略。
三.RHEL4的安装
VMWareWorkstationV5下的安装:
1.New一个virtualmachine,记得选择redhat的enterprise4。
2.将CD-ROM选择用下载的第一张CD
3.接下来poweron这台virtualmachine
4.基本上一切的选用default,中间切换一下CD就搞定了
四.深入BootLoader
我详细讲解一下两种Linux下的Bootloader:
Linux的启动方式
基本方式有如下三种:
1、Bootloader
大多数启动都是通过这种方式。
Linux的Bootloader可以安装在MBR或者某个分区(第二Bootloader)。
2、Loadlin
Loadlin是一个DOS命令,可以在DOS之中启动Linux。
3、软盘启动
当然可以通过软盘来启动Linux,这样可以将MBR留给其他操作系统的Bootloader。
MBR只是硬盘的第一个扇区,容量只有512k字节,一般来说复杂的bootloader会分2个阶段来执行。
Stage1/Stage2
Stage1:
这一阶段必须安装在MBR或者分区的引导扇区。
Stage2:
第二阶段载入bootloader的所有配置文件,好像GRUB是在/boot之下。
Bootloader除了引导系统,另外一个重要的功能是可以指向另外一个分区的引导扇区,也就是另外一个Bootloader。
比如我的hda1分区安装的是windows,hda2分区内安装的是Linux的/boot,那么在MBR内的GRUB就可以实现以下几种开机方法:
∙直接交给Linux的内核开机
∙将控制权交给/dev/hda2的启动扇区,有可能安装的是LILO
∙将控制权交给/dev/hda1的启动扇区,应该是windows的Loader
但是windows的bootloader总是要写入MBR,这样就无法识别Linux的bootloader了,所以一般来说我们需要先安装windows然后再安装Linux。
initrd
在载入内核的过程之中,都只会mount根目录/,而且一般只以readonly的方式挂接。
为了更加方便接挂驱动之类,通常会使用虚拟磁盘(Ramdisk)来辅助实现,这就是initrd和linuxrc了。
initrd映像会被一起载入,Linux内核系统会设置虚拟磁盘,并使用linuxrc这个程序的功能来进行模块的加载。
完成加载驱动的工作之后,initrd所建立的虚拟磁盘就会被从内存之中去除了。
Initrd并非必要的,不过现在的版本好像都有initrd。
Linuxrc一般要符合以下条件:
∙文件名必须是linuxrc
∙放置在initrd的最顶层目录
∙是可以被内核执行的
LILO
如果按照之前的default安装,将会选定GRUB作为Bootloader,所以如果要使用LILO的话,需要自己安装LILO包。
可以使用rpm命令安装。
具体操作如下:
将安装盘4装入CD-ROM
$mount/mnt/cdrom
$cd/mnt/cdrom/RedHat/RPMS
$rpm–Uvhlilo*
记住这只是LILO软件的安装,并不代表LILO已经安装至MBR或者Linux的分区。
如果要将LILO安装成真正的Bootloader,(当然Linux安装过程已经帮我们做了这些事情)跟着以下步骤:
第一步,编辑lilo的配置文件
第二步,运行lilo命令。
LILO的stage1和stage2的两个部分通过lilo命令都被写入了MBR或者是分区的启动扇区之中。
Notes:
Lilo命令的作用是读取LILO的配置文件(一般是/etc/lilo.conf,可在命令行指定),然后更新MBR或者分区启动扇区的引导纪录,在引导纪录之中包含了诸如内核文件,initrd文件的在硬盘位置之类的寻址资料,所以每次配置文件有变化,或者内核文件和initrd文件的任何可能移动都要重新运行lilo更新MBR或者启动扇区内的LILO引导纪录。
Lilo命令和/etc/lilo.conf文件只是安装LILO的辅助工具。
其实在PC启动过程之中是完全无用甚至是不可见的。
配置文件的部分参数解释:
全局参数:
boot=/dev/hda#Thebootdeviceis/dev/had
指定LILO安装的设备,如果是硬盘/dev/had这样的没有数字在后面的,会写入硬盘的MBR,如果是分区后面带有数字比如/dev/hda1,则只会写入分区的启动扇区。
map=/boot/map#Savethemapfileas/boot/map
指定map文件的位置,预设是/boot/map
install=boot-sector
使用指定文件作为新的bootsector.预设是/boot/boot.b.
password=password
启动时候进入交互模式的访问密码。
并未加密。
default=name
设定预设的启动image,如果没有设定将会按顺序的第一个。
delay=tsecs
进入defaultimage的等待时间。
1/10秒为单位,30表示3秒。
message=message-file
指定message文件。
最大65,535bytes.
prompt
显示boot:
命令行模式。
linear
生成并使用linersectoraddresses寻址。
Image选项:
image=pathname
指定Linux内核文件。
label=name
为image指定一个名称。
如果没有指定就是文件名(不包括路径)
alias=name
还可以再指定一个别名。
loader=chain-loader
对于非Linux系统,可以指定下一个bootloader,预设是/boot/chain.b,这个预设的chainloader会交给other选项指定的设备,或者是第一个硬盘的活动分区的启动扇区。
password=password
image的密码。
other=devicename
非Linux系统,指定该系统的安装分区。
内核Kernel选项:
其中的append,read-only,read-write,root,和vga也可以作为全局参数配置。
append=string
会传送给内核的参数,比如BIOS无法识别大于64M内存时可以使用append="
mem=128M"
。
initrd=filename
指定initrd的ramdisk映像文件。
noinitrd
不使用ramdisk?
root=root-device
指定root分区。
vga=mode
VGA模式设定。
read-only
启动时以readonly方式mount根,这个只是启动第二阶段的根,不是最后我们所看到的根,一般都会使用read-only方式
read-write
启动时以readwrite方式mount根,这个只是启动第二阶段的根,不是最后我们所看到的根
LILO配置文件示例:
1、(摘自RHCERedHatCertifiedEngineerLinuxStudyGuide(ExamRH302),FourthEdition):
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image=/boot/vmlinuz-2.4.21-3
label=linux
initrd=/boot/initrd-2.4.21-3.img
append="
hdc=ide-scsiroot=LABEL=/"
other=/dev/hda1
label=Win98
table=/dev/hda
2、(摘自LinuxinaNutshell,3rdEdition):
install=/boot/boot.b
map=/boot/map
image=/boot/vmlinuz
label=linux
root=/dev/hda2
read-only##Imagesection:
FortestinganewLinuxkernelimage=/testvmlinuz
label=testlinux
read-only
optional#Omitimageifnotavailablewhenmapis
built##Imagesection:
ForbootingDOS
other=/dev/hda1
label=dos
loader=/boot/chain.b
table=/dev/hda#Thecurrentpartitiontable##Imagesection:
ForbootingWindows95
label=win95
table=/dev/hda
LILO的交互模式:
有必要在这里介绍一下LILO的交互模式。
可以进行配置(主要是内核参数)的调试。
不过交互模式不会帮你修改配置文件,调试完成后需要自己更改配置文件并重新运行lilo更新MBR或者是相应的分区。
∙如果设定了prompt,LILO总会停留在等待画面,等待用户的输入。
如果你选择按CTRL+X进入text的命令行模式,你可以再指定内核参数。
∙如果没有设定prompt,当出现"
LILO"
的时候,按Control,Shift,或者Alt,就会到boot:
的text命令行模式。
∙在boot:
之下,你可以使用tab来选择image,就是之前的label名称,也可以输入。
而且可以在后面增加参数。
例如:
boot:
linuxsingle
以下参数可以在这时传送给内核:
debug
打印所有内核消息到console。
hd=cylinders,heads,sectors
指定硬盘参数。
load_ramdisk=n
指定多少个ramdisk会传送给内核。
mem=size
指定内存参数。
如果设定后,不会进行thetwo-stage的启动,而且保留在/dev/initrd的内容,于是启动后还可见。
number
指定runlevel。
ro
Mount根为readonly。
rw
Mount根为read-write。
如果没有制定ro或者rw,将会用rw方式。
single
启动单用户模式。
对排错很有帮助。
GRUB
GRUB同样支持菜单和命令行两种方式来控制启动。
GRUB通过filesystem进行寻址并将内核读入内存。
GRUB启动过程:
1、GRUB启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件
2、如果找不到此文件则不进入菜单模式而直接进入命令行模式。
3、找到文件后根据文件显示菜单
4、用户选择后,根据配置文件制定的路径加载内核
5、将控制交给Linux内核
安装到MBR或者分区:
GRUB的软件安装在这里就不做多讲了,这里讲讲如何重新安装GRUB到MBR或者某个分区。
好比我一直使用LILO,现在我想换成GRUB了,需要做什么。
方法一:
$grub-installinstall_device
方法二:
$grub
grub>
setupinstall_device
两种方法都可以有不同的选项。
可以自行察看帮助文件。
GRUB的文件系统规范
GRUB支持FAT、FFS、minix、ext2和ReiserFS分区。
GRUB之中的的一些约定与Linux的约定不尽相同,大家需要注意一下。
所谓此root不是彼root,很容易搞混淆,所以我打算先说说这一点。
hd还是hd的,这点没有区别,接下去就不同了。
GRUB使用数字来区别硬盘,不象Linux的had-hdd的字母表示,所以在GRUB之中的对应分别是hd0-hd3,我们也可以看出在GRUB之中一切都是从0开始计数的。
分区怎么表示呢,在GRUB完整的分区表示是这样的:
(hd0,0)。
最后一个位只是需要用Linux的分区规则减一就好了。
重点是GRUB的所谓root,GRUB作为一个多系统的bootloader,并不关心启动之后的事情,所以对于GRUB的root通常就是Linux内核文件的放置位置,一般是/boot。
当然如果/boot没有自己的分区,就是/了。
定义了root之后在之后的配置之中所有的文件将会是相对于这个root的,比如内核是/boot/vmlinuz,而/boot又是一个独立的分区,那么在配置文件里我们应该使用kernel/vmlinuz而不是kernel/boot/vmlinuz。
后者会让GRUB去寻找/boot/boot/vmlinuz的。
利用chainloader的方式:
Chainloader就是将控制权交给下一个bootloader。
启动事也交给下一个bootloader,所以需要知道的只是下一个bootloader的分区和所在的磁盘位置,GRUB可以指定那个扇区。
比如我们的windows安装在hda1,Linux安装在hda2,在MBR的GRUB的有关启动windows的设定如下:
titlewindowspartition
root(hd0,0)
chainloader+1
这里root就是代表了windows所在的分区hda1,而chainloader的+1就是代表第一个扇区。
配置文件:
(/boot/grub/grub.conf或者/boot/grub/menu.lst,后者是前者的链接)
全局选项
default=0
GRUB的计数都是从0开始的。
timeout=3
表示默认等待的时间,这儿是3秒钟。
超过3秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。
root=device
指定GRUB的root,就是stage2的所在分区。
splashimage=pathname
指定开机画面文件的位置
Title选项
类似LILO的image部分。
titledescription
为每个启动设定义一个说明
kernel=pathname
initrd=pathname
指定initrd映像文件。
chainloader+1
指定下一个bootloa