Linux爱好者入门教程.docx
《Linux爱好者入门教程.docx》由会员分享,可在线阅读,更多相关《Linux爱好者入门教程.docx(22页珍藏版)》请在冰豆网上搜索。
Linux爱好者入门教程
Linux爱好者入门教程(随时更新)!
!
文章来源:
(LinuxSir)
下面的是国内的优秀的Linux论坛:
http:
//www.linuxfans.org
声明:
本笔记并非原创,只是我个人的学习笔记!
很多的内容来自www.linuxfans.orgwww.linuxAID.com
非常感谢以上网站对我的学习提供的莫大的帮助,本着学习和分享的原则我贴出我的学习笔记,更希望兄弟们能给我指出其中错误的地方.谢谢!
!
!
学习这部分知识,首先要学到问题的思路,其次你还要记住一些东西,是死记硬背下来!
你会发现这点东东的确是很有用的!
尽管如此,本文档归属linuxsir-probing!
转载请注明出处!
更不能被用到商业用途上!
1首先要了解的几个概念
1.1启动管理器
启动管理器是存储在磁盘开始扇区中的一段程序,例如,硬盘的MBR(MasterBoot
Record),在系统完成启动测试后,如果系统是从MBR启动,则BIOS(BasicInput/Output
System)将控制传送给MBR。
然后存储在MBR中的这段程序将运行。
这段程序被称为启动管理器。
它的任务就是将控制传送给操作系统,完成启动过程》有许多可用的启动管理器,包括GNU
GRUB(GrandUnifiedBootLoader),Bootmanager,LILO(LInuxLOader),
NTLDR(bootloaderforWindowsNTsystems),等等等.
1.2什么是GRUB?
grub是一个多重启动管理器。
grub是GRandUnified
Bootloader的缩写,它可以在多个操作系统共存时选择引导哪个系统。
它可以引导的操作系统包括:
Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows
NT,Windows2000,WinXP。
它可以载入操作系统的内核和初始化操作系统(如Linux,FreeBSD),或者把引导权交给操作系统(如Windows
98)来完成引导。
1.3GRUB的特点
特别适用于linux与其它操作系统共存情况。
支持大硬盘
现在大多数Linux发行版本的lilo都有同样的一个问题:
根分区(/boot分区)不能分在超过1024柱面的地方,一般是在8.4G左右的地方,否则lilo不能安装,或者安装后不能正确引导系统。
而grub就不会出现这种情况,只要安装时你的大硬盘是在LBA模式下,grub就可以引导根分区在8G以外的操作系统。
支持开机画面
grub支持在引导开机的同时显示一个开机画面。
对于玩家来说,这样可以制作自己的个性化开机画面;对于PC厂商,这样可以在开机时显示电脑的一些信息和厂商的标志等。
grub支持640x480,800x600,1024x768各种模式的开机画面,而且可以自动侦测选择最佳模式,与Windows那320x400的开机画面不可同日而语。
两种执行模式
grub不但可以通过配置文件进行例行的引导,还可以在选择引导前动态改变引导时的参数,还可以动态加载各种设备。
例如你在Linux下编译了一个新的核心,但不能确定它能不能工作,你就可以在引导时动态改变grub的参数,尝试装载这个新的核心进行使用。
Grub的命令行有非常强大的功能,而且支持如bash或doskey一样的历史功能,你可以用上下键来寻找以前的命令。
菜单式选择 grub使用一个菜单来选择不同的系统进行引导。
你还可以自己配置各种参数,如延迟时间,默认操作系统等。
分区大小改变后不必重新配置 grub是通过文件系统直接把核心读取到内存,因此只要操作系统核心的路径没有改变,grub就可以引导系统。
除此之外,Grub还有许多非常强大的功能。
例如支持多种外部设备,动态装载操作系统内核,甚至可以通过网络装载操作系统核心。
Grub支持多种文件系统,支持多种可执行文件格式,支持自动解压,可以引导不支持多重引导的操作系统,支持网络启动等。
1.4MBR和第一扇区
你可以简单的理解为MBR是整个硬盘的物理第一位置,而第一扇区是硬盘的物理第二位置.
1.5一个GRUB配置文件
基于本例的分区如下:
hda15G
hda18G/REDHATLINUX8.0
hda57G/home
hdc20G
hdc16.4GWinXP
hdc56.4G
hdc66.4G
hdc76.4G
#fdisk-l
#Disk/dev/hdc:
255heads,63sectors,2434cylinders
Units=cylindersof16065*512bytes
DeviceBootStartEndBlocksIdSystem
/dev/hdc1*18947181023+bWin95FAT32
/dev/hdc2895243412370050fWin95Ext'd(LBA)
/dev/hdc589517877172991bWin95FAT32
/dev/hdc6178824345196996bWin95FAT32
Disk/dev/hda:
255heads,63sectors,1867cylinders
Units=cylindersof16065*512bytes
DeviceBootStartEndBlocksIdSystem
/dev/hda1*110208193118+83Linux
/dev/hda210211802628141583Linux
/dev/hda318031867522112+82Linuxswap
grub.conf,这个文件位于;/boot/grub/grub.conf
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangesto
thisfile
#NOTICE:
Youdonothavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/,eg.
#root(hd0,0)
#kernel/boot/vmlinuz-versionroroot=/dev/hda1
#initrd/boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=3
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
titleRedHatLinux(2.4.18-14)
root(hd0,0)
kernel/boot/vmlinuz-2.4.18-14roroot=LABEL=/
initrd/boot/initrd-2.4.18-14.img
titleMicrosoftWindowsXP
map(hd0)(hd1)
map(hd1)(hd0)
root(hd1,0)
chainloader(hd1,0)+1
makeactive
boot
2解读grub.conf文件
我们将来看看grub.conf文件内语句,(注:
...)内的东西是我们的解读内容.
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangesto
thisfile
#NOTICE:
Youdonothavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/,eg.
#root(hd0,0)
#kernel/boot/vmlinuz-versionroroot=/dev/hda1
#initrd/boot/initrd-version.img
#boot=/dev/hda(注:
以上以符号井"#"开头的行表示被注释掉,没有任何意义)
default=0(注:
默认的操作系统就是由default控制的。
default后加一个数字n,表明是第
n+1个。
需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。
所以,default0
表示默认的操作系统在这儿是RedHatLinux(2.4.18-14)如果你修改成1就是WinXP了)
timeout=3(注:
timeout表示默认等待的时间,这儿是3秒钟。
超过3秒,用户还没有作出选
择的话,系统将自动选择默认的操作系统;当然你可以改成任何你乐意的时间)
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
(注:
指定开机画面文件splash.xpm.gz的位置)
titleRedHatLinux(2.4.18-14)(注:
表示RedHatLinux的菜单项)
root(hd0,0)(注:
表示第一个硬盘第一个分区,这里的root和系统内的root不是一码事!
详细如下说明)
kernel/boot/vmlinuz-2.4.18-14roroot=LABEL=/(注:
指定内核的位置,详细说明如下文)
initrd/boot/initrd-2.4.18-14.img(注:
初始化)
titleMicrosoftWindowsXP(注:
表示MicrosoftWindowsXP的菜单项)
map(hd0)(hd1)(注:
map是命令,详细如下)
map(hd1)(hd0)
root(hd1,0)(注:
这是指第二个硬盘(从硬盘)上第一个分区)
chainloader(hd1,0)+1(注:
链式装入器,装入一个扇区的数据然后把引导权交给它。
详细说明如下)
makeactive
boot
(注:
在Linux中,当谈到"root"文件系统时,通常是指主Linux分区。
但是,GRUB有它自己的root
分区定义。
GRUB的root分区是保存Linux内核的分区。
这可能是您的正式root文件系统,也可能不是。
我们讨论的是
GRUB,需要指定GRUB的root分区。
进入root分区时,GRUB将把这个分区安装成只读型,这样就可以从该分区中装入
Linux内核。
GRUB的一个很“酷”的功能是它可以读取本机的FAT、FFS、minix、ext2和ReiserFS
分区.到目前为止,您可能会感到一点疑惑,因为GRUB所使用的硬盘/分区命名约定与Linux使用的命名约定不同。
在Linux
中,第一个硬盘的第五个分区称作"hda5"。
而GRUB把这个分区称作"(hd0,4)"。
GRUB对硬盘和分区的编号都是从0
开始计算。
另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。
现在,可以发现如果要引导Linux硬盘hda5,应输入"root
(hd0,4)"。
知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
kernel/boot/vmlinuz-2.4.18-14ro
root=LABEL=/说明/boot/vmlinuz-2.4.18-14就是要载入的内核。
后面的都是传递给内核的参数。
root=LABEL=/就是linux的硬盘分区表示法,ro是readonly的意思。
initrd用来初始的linux
image,并设置相应的参数。
命令map:
当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如Windowsxp,就可以使用map命令.你能够将hd0映射为hd1,将hd1映射为hd0。
换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统
。
命令形式如下:
grub>;map(hd0)(hd1)
grub>;map(hd1)(hd0)
GRUB使用了“链式装入器”(chainloader)。
链式装入器从分区(hd1,0)
的引导记录中装入winxp自己的引导装入器,然后引导它。
这就是这种技术叫做链式装入的原因--
它创建了一个从引导装入器到另一个的链。
这种链式装入技术可以用于引导任何版本的DOS或Windows。
GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“colorlight-gray/blue
”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“colorlight-blue/red",惊喜吗?
有趣吧!
)
3如何使用grub?
3.1安装
你可以从ftp:
//alpha.gnu.org/pub/gnu/grub下载GRUB的源代码。
得到文件grub-0.5.96.1.tar.gz,所以这样做:
#tar-xvzfgrub-0.5.96.1.tar.gz
这个命令将解开的文件和目录放在一个名为grub-0.5.96.1的目录中。
现在运行如
下命令:
#cdgrub-0.5.96.1
#./configure
如果你想定制GRUB,使之包含流行的文件系统和对网卡的支持,或者删除你不需要的网卡,可以运行如下命令:
#./configure--help
这个命令将输出所有的命令选项。
现在可以使用—enable和—disable选项增加或
删除对特定网卡的支持。
(注意:
GRUB支持网络启动)
为了开始编译过程,键入如下命令:
#make
#makeinstall
至此你已经为安装GRUB真正做好了准备。
将GRUB的相关文件保存在诸如/boot/grub的目录中是一个好主意。
为此,按如下步骤:
1.默认状态下,GRUB所有文件将安装在/usr/share/grub/i386-pc(或者在
/usr/local/share/grub/i386-pc目录下,这只取决于你的shell变量的设置。
)
2.建立一个叫做/boot/grub的目录,然后拷贝下列文件到这个目录:
stage1stage2*stage15
稍候将解释这些文件。
同时也要把GRUB(可能在/usr/sbin或者/usr/local/sbin
目录下)拷贝到/boot/grub目录下。
安装GRUB可以分为三个单独的步骤:
1.将“stage1”安装到MBR中。
2.设置“stage2”的地址或者位置。
3.设置一个菜单或选项,用来决定启动哪一个操作系统。
使用下面的命令开始安装GRUB。
#cd/boot/grub
#./grub
这个命令根据BIOS的设置检测硬件设备,同时产生一些输出信息。
这会花较长的时间。
end_request:
I/Oerror,dev02:
00(floppy),sector0
GRUBversion0.5.96.1(640Klower/3072Kuppermemory)
TAB键可列出可能的命令列表。
其它情况下TAB会列出设备或文件名。
类似下面的提示会出现:
grub>;
现在,假设你将Linux安装在了第一块硬盘的第一个分区中或者/dev/hda1中。
记住GRUB的命名规则,将上面的名字改为(hd0,0)。
键入下面的命令:
grub>;install(hd0,0)/boot/grub/stage1(hd0)
(hd0,0)/boot/grub/stage2
p(hd0,0)/boot/grub/menu.conf
现在分析一下这个命令的细节。
install
一个内置的命令,它告诉GRUB将(hd0,0)/boot/grub/stage1安装到hd0的主引导纪录中。
(hd0,0)/boot/grub/stage2
告诉GRUBstage2映象的位置。
pwiththethefollowingoptions:
(hd0,0)/boot/grub/menu.conf
为菜单的显示设置配置文件。
下面是对这个命令用法的总结:
1.install
2.ource_of_stage1
3.where_to_install
4.source_of_stage2
5.psource_of_configuration_file
现在,你完成了硬盘上的基本安装工作。
在软盘上的安装:
为了在软盘上安装GRUB,你要会用“dd”命令,并且了解它是如何工作的。
为了做一张GRUB启动盘,你要将stage1和stage2文件放到软盘的开始扇区中。
安装stage1到软盘上:
插入一张已格式化的软盘,键入命令:
#ddif=stage1of=/dev/fd0bs=512count=1
命令的详细说明如下:
if=inputfile
i.e.,stage1
of=outputfile
i.e.,floppydrive(thismaybedifferentonyourcomputer)
bs=bytestoreadandwrite
Hereitis512bytes.
count=howmanytimestoperformthisoperation
每次拷贝“bs”数目的块到目标地址。
安装stage2到软盘
#ddif=stage2of=/dev/fd0bs=512seek=1
这里的步骤同stage1的相同,除了一个seek选项外。
Seek选项将调过一个“bs”。
例如,在上面的命令中bs的值是512,这样seek=1意味着将跳过软盘上前512个字节
,从513字节开始。
这将使得第一步操作不会覆盖stage1的前512字节。
现在你完成了基本的软盘驱动器安装。
如果已经安装了grub要把grub重新安装到主引导扇区上,只需要简单打入makebootable命令就可以了。
3.2配置grub
grub启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件,如果找不到此文件则不进入菜单模式而直接进入命令行模式。
现在,我们来看一下如何在启动后进入各种操作系统,如何建立menu.conf文件。
我们就从GRUB支持的启动过程开始。
可以有两种方法来完成启动过程:
·A.通过调用内核本地启动
·B.连续启动或者将控制转给另一个引导器
A模式启动过程
1.配置跟设备或者告诉GRUB你的根文件系统。
2.告诉GRUB你的内核影像的位置,然后将参数传送给内核。
3.重新启动,试一下。
为了启动Linux,将内核以bzImage的文件名放在/boot/目录中,跟文件系统是
/dev/hda1,或者GRUB中的(hd0,0)。
启动过程如下:
1.root(hd0,0)[Thissetstherootpartition]
2.kernel/boot/bzImageroot=/dev/hda1[Thissetsthekernel]
B模式启动过程(这种模式假设当前的分区中安装了另一个启动管理器,例如LILO
或者NTLDR):
1.设置根分区但不要安装它
2.激活这个分区
3.配置需要启动的分区的第一个扇区
4.重新启动,看一下效果。
我们在试试启动安装在/dev/hdc1或者(hd1,0)的widows。
启动windows的过程如下:
1.rootnoverify(hd1,0)
2.makeactive
3.chainloader+1[+1setsthefirstsectorofthecurrentroot
partition]
4.boot[transfersthecontrolandquitsGRUB]
menu.conf文件:
它用于建立启动多操作系统时的菜单。
建立menu.conf并不难。
它使用简单的英语,就象你在这一节看到的那样。
所有的菜单项目都以没有逗号分隔的“titleTITLENAME”开头。
你可以随意设置
TITLENAME。
设置Linux启动菜单步骤如下:
1.设置标题
2.设置根分区
3.设置内核的相应参数
4.启动
一个菜单例子:
titleRedHatLinux(2.4.18-14)
root(hd0,0)
kernel/boot/vmlinuz-2.4.18-14roroot=LABEL=/
initrd/boot/initrd-2.4.18-14.img
前面有#的行是一个注释。
建立启动Windows或者DOS的菜单:
titleWindoze
rootnoverify(hd0,0)
makeactive
chainloader+1
boot
#----
又或者:
titleMicrosoftWindowsXP
map(hd0)(hd1)
map(hd1)(hd0)
root(hd1,0)
chainloader(hd1,0)+1
makeactive
boot
----
注意:
root和rootnoverify都是一样的,把rootnoverify改成root也行。
不过经过实践来看。
有时引导win时,系统安装好后,是rootnoverify
(hdX.Y)这样形式的,这样会出现windows起不来,出现什么windows什么文件损坏的情况。
这时,我们就要把在grub中,引导windows的那段中的rootnoverify改为root
root英文的意思