欢迎来到天天文库
浏览记录
ID:1536747
大小:42.50 KB
页数:7页
时间:2017-11-12
《grub2启动代码详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GRUB2的介绍目前Grub1已经停止开发了,不再增加新的功能,所有的开发都转移到Grub2上了,Grub2是新一代的Grub,它实现了一些Grub中所没有的功能:1.模块化设计 不同于Grub的单一内核结构,Grub2的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。 2.支持多体系结构 Grub2可支持PC(i386),MAC(powerpc)等不同的体系结构,而且支持最新的EFI架构。 3.国际化的支持 Grub2可以支持非英语的语言。 4.内存管理 Grub2有真正的内存管理系统。 5.脚本语言 Grub2可以支持脚本语言,例如条件,循
2、环,变量,函数等。 当然,Grub2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。如果你熟悉Grub2,应该可以看明白里面的内容。要注意的是: a、timeout,default等参数用变量来储存 b、菜单项由menuentry定义 c、第1个分区是(hd0,1)而不是(hd0,0)理论的东西说多了大家估计也晕,举个简单的例子:在grub1中,要改变启动背景的时候只能选择支持640X480分辨率并且格式也只能是.xpm的图片,分辨率稍微大点的图就显示不出来了,但grub2不存在这个问题,它有更绚丽的菜单界面,grub2默认.png.tga.jpeg等
3、很多种格式的图片都支持,而且支持的图片分辨率也更大。GRUB2启动代码分析# #DONOTEDITTHISFILE # #Itisautomaticallygeneratedby/usr/sbin/grub-mkconfigusingtemplates #from/etc/grub.dandsettingsfrom/etc/default/grub # ###BEGIN/etc/grub.d/00_header### if[-s$prefix/grubenv];then#如果“$prefix/grubenv”目录不为空load_env#从grubenv文件中加载环境变量
4、 fi setdefault="0"#启动第1项#if[${prev_saved_entry}];then#如果prev_saved_entry的值不为空 setsaved_entry=${prev_saved_entry} #将saved_entry的值设置成变量prev_saved_entry的值。save_envsaved_entry #将变量saved_entry保存到grubenv文件中。setprev_saved_entry= #将prev_saved_entry的值设置为空save_envprev_saved_entry #将prev_saved_entr
5、y保存到grubenv文件中setboot_once=true #将boot_once的值设置为真(貌似是为了标志已经设置过启动的相关环境变量了)fi functionsavedefault{ if[-z${boot_once}];then #如果已经设置过相关环境变量saved_entry=${chosen} #用变量chosen的值给saved_entry赋值。save_envsaved_entry#将saved_entry保存到grubenv文件中fi } functionrecordfail{#存在启动失败记录时调用,设置变量recordfail。setreco
6、rdfail=1 if[-n${have_grubenv}];thenif[-z${boot_once}];thensave_envrecordfail;fi;fi #如果grubenv文件存在,并已设置过相关变量,就将变量recordfail保存到grubenv文件。} insmodext2#插入ext2文件系统支持的模块setroot='(hd0,9)'#指定系统root分区,也就是/分区为第1个磁盘的第9个分区search--no-floppy--fs-uuid--setd9985e84-7b54-4e5d-8ce9-c25cf88330aa #指定uuid=d9
7、985e84-7b54-4e5d-8ce9-c25cf88330aa的分区为root分区,如果前面的分区#号(hd0,9)的uuid与这里的uuid一致,这两句作用一样,如果不一致,则指定uuid的起#作用。ifloadfont/usr/share/grub/unicode.pf2;then #设置终端字体,unicode.pf2支持中文字符显示setgfxmode=640x480 #设置显示分辨率,默认为640×480insmodgfxterm #插入终端模块gfxterm,支持中文字符显示和支持24位图像。insmodvbe #插入v
此文档下载收益归作者所有