GRUB2启动详解

合集下载

GRUB启动命令详解

GRUB启动命令详解

GRUB启动命令详解一、菜单命令菜单命令只能用于grub配置文件的全局配置部分,不能用在grub命令行交互界面,菜单命令在配置文件中应放在其它命令之前。

1、default //设置默认启动的菜单项2、fallback //设置启动某菜单项失败后反回的菜单项3、hiddenmenu //隐藏菜单界面4、timeout //设置菜单自动启动的延时时间5、title //开始一个菜单项二、常规命令常规命令可以应该于配置文件和grub命令行交互界面,可使用的常规命令有1、bootp //通过bootp初始化网络设备2、color //设置菜单界面的颜色3、device //指定设备文件作为驱动器4、dhcp //通过DHCP初始化网络设备5、hide //隐藏某分区6、ifconfig //手工配置网络设备7、pager //改变内部页程序的状态8、partnew //新建一个主分区9、parttype //改变分区的类型10、password 为菜单界面设置口令11、rarp //通过RARP初始化网络设置12、serial //设置串口设备13、setkey //设置键盘映射14、splashimage //设置GRUB启动时的背景图片文件15、termainal //选择终端类型16、tftpserver //指定TFTP服务器17、unhide //还原某隐藏分区三、命令行和菜单项命令命令行和菜单项命令可应该于GRUB配置文件的菜单项设置中,也可以用在GRUB命令交互界面。

1、bolcklist //显示某文件所在分区位置(block list notation)2、boot //启动操作系统3、cat //显示文件内容4、chainloader //把启动控制权软交给另外的启动引导器5、cmp //比较两个文件6、configfile //加载已存在的GRUB配置文件7、debug //设置为debug模式8、displayapm //显示APM BIOS信息9、displaymem //显示内存配置10、embed //嵌入Stage 1.5文件11、find //查找包括某文件的所有设备12、fstest //测试文件系统13、geometry //显示某驱动器的物理信息14、halt //停止计算机运行(软件关机)15、help //显示GRUB的命令帮助信息16、impsprobe //查询对称多处理器(SMP)的信息17、initrd //加载initrd文件18、install //安装GRUB19、ioprobe //查询某驱动器的输入输出(I/O)端口20、kernel //引导操作系统内核21、lock //锁定某GRUB导菜单项,使其输入密码后才可启动22、makeactive //激活某主分区23、map //虚拟映射某驱动器24、md5crypt //使用MD5加密口令25、module //加载模块26、modulenounzip //加载模块不进行解压27、pause //暂停并等待按键28、quit //退出GRUB29、reboot //重新启动计算机30、read //读取内存中的内容31、root //设置GRUB的root设备32、rootnoverify //设备GRUB的root设备但不装载文件系统33、savedefault //保存当前的启动菜单项为默认启动34、setup //自动安装GRUB35、testload //从文件系统中测试读取某文件36、testvbe //测试VESA BIOS EXTENSION37、uppermem //强制设置主机上位内存的大小38、vbeprobe //查询VESA BIOS EXTENSION信息GRUB 里的设备命名法则它使用了UNIX对设备的命名方法.比如我们拥有两块硬盘,那么采用这种形式(hdx,y), 这里,x,y,都是从0开始计数的.所以两块硬盘是 (hd0,y),(hd1,y). 他们位于第一个IDE接口上. 对 hd0 来说, 请看下图:(注, C: 为第一主分区, 其他分区是扩展分区.由于主分区只能有四个,即 0,1,2,3, 所以第一个扩展分区的编号从 4 开始.)这是硬盘,那么光驱哪? 对,采用 (cd) 就可以了. 网络设备使用 (nd). 我估计,以后支持usb以后,可以使用 (ud). ;-) 欢迎你的参与,我们的开发还在继续.ROOT的使用格式是:ROOT(HDX,Y)其中X从0---N,Y也是。

直接用grub2启动硬盘上的liveCD,不需解压ISO

直接用grub2启动硬盘上的liveCD,不需解压ISO

直接用grub2启动硬盘上的liveCD,不需解压ISO有感于千里不留行兄的用grub4dos实现多重live启动(详见:/viewtopic.php?f=77&t=226247)但这个问题有个麻烦是必须要把内核解压到文件夹下,以grub4dos载入,进而实现live启动。

既然grub2有loopback命令可以载入iso文件,能不能直接用grub2实现硬盘liveCD的启动呢?况且grub2是U9.10默认带的,update-grub很方便,也懒的再折腾grub4dos了。

经过一晚上的google搜索和实验,已成功完成。

具体思路如下:1 将下载的iso放入分区中,分区任意。

(我这里ntfs和ext4均通过,其他未测试)2 在grub2启动项挂载iso。

比如我的电脑有C: D: E: F: ,NTFS 格式和ext4, swp分区。

将a.iso放在D:盘根目录下。

grub2启动项上按c进入命令行模式,3345完成。

测试新氧的9.04, U原版CD通过。

均是CD版,DVD版未测试。

把1~4直接写入到/etc/grub.d/40.custom下,直接生成grub.cfg. 具体代码如下:然后大功告成!依此类推,可以填加任意多个liveCD了,你的启动菜单也会变的很壮观,但其实不占用过多的硬盘空间,只是各个ISO而已。

现在可以轻松自己打包各自的liveCD,再加上grub2有自己的启动盘,这样,不管是从机子硬盘还是移动硬盘、U盘、光驱内启动grub2,都可以应用以上思路直接启动硬盘或移动硬盘、U盘内的iso 文件,而且是ISO的live系统,不影响移动硬盘、U盘的正常使用,grub2实在是强大。

grub2 原理

grub2 原理

grub2 原理全文共四篇示例,供读者参考第一篇示例:Grub2是一款广泛应用于Linux操作系统的引导管理器,其设计的初衷是为了解决引导多个操作系统的问题。

Grub2的设计极具灵活性和可扩展性,使得它成为目前最流行的引导管理器之一。

Grub2的工作原理十分复杂,但可以简单地分为几个主要步骤:第一步是启动引导加载程序。

当计算机启动时,BIOS会加载Grub2引导加载程序到内存中,并执行引导加载程序。

引导加载程序的主要功能是在系统启动时向用户提供一个选择菜单,让用户选择要启动的操作系统。

第二步是加载内核。

一旦用户选择了要启动的操作系统,Grub2会加载该操作系统的内核文件到内存中。

内核文件包含了操作系统的核心功能,如进程管理、文件系统等。

第三步是加载初始化RAM磁盘(initrd)。

在加载内核之后,Grub2会加载initrd文件到内存中。

initrd是一个临时的文件系统,用于初始化硬件设备和加载驱动程序,以便系统能够顺利启动。

第四步是启动操作系统。

Grub2会将控制权交给内核,由内核初始化系统并启动用户空间进程,最终启动操作系统。

Grub2的设计具有许多优点,例如支持多种文件系统和操作系统,能够通过脚本和配置文件自定义启动选项,支持密码保护和图形界面等。

Grub2还支持在启动时对引导选项进行编辑,方便用户在系统启动时进行调试和配置。

Grub2也存在一些缺点,例如在配置文件中出现错误可能导致系统无法启动,引导加载程序的体积相对较大,可能会增加系统启动时间等。

在使用Grub2时,用户需要仔细阅读文档并谨慎配置,以避免出现问题。

Grub2是一款功能强大且灵活的引导管理器,能够帮助用户管理多个操作系统的启动过程。

它的工作原理虽然复杂,但通过对其原理和配置文件的深入了解,用户可以充分利用其强大的功能,提高系统的稳定性和性能。

第二篇示例:Grub2是一个多重引导加载程序,常用于Linux系统,负责加载操作系统。

Grub2配置详解

Grub2配置详解

Grub2配置详解一、grub.cfg详解(红色为说明)grub.cfg 默认为只读,要修改前先设为可写sudo chmod +w /boot/grub/grub.cfgset default=0#默认为0insmod jpeg#添加jpg支持,如要使用png或tga文件做背景,加上 insmod png或insmod tgainsmod ext2#除了用作启动的分区外,其他分区格式可在menu底下再添加set root=(hd0,7)#设定root分区search --no-floppy --fs-uuid --set f255285a-5ad4-4eb8-93f5-4f767190d3b3#设定uuid=****的分区为root,和上句重复,可删除# 以下为终端配置if loadfont /usr/share/grub/unicode.pf2 ; then#设置终端字体,unicode.pf2支持中文显示set gfxmode=640x480#设置分辨率,默认为 640x480,可用800x600,1024x768,建议跟你想设定的图片大小一致insmod gfxterm#插入模块 gfxterm,支持中文显示,它还支持 24 位图像insmod vbe#插入 vbe 模块,GRUB 2 引入很多模块的东西,要使用它,需要在这里加入if terminal_output gfxterm ; then true ; else# For backward compatibility with versions of terminal.modthat don't# understand terminal_outputterminal gfxterm#设置 GRUB 2 终端为 gfxtermfifiset timeout=10background_image (hd0,7)/boot/images/1.jpg#设置背景图片### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/05_debian_theme ###set menu_color_normal=white/blackset menu_color_highlight=cyan/black#这两行为 Debian 下的菜单颜色设置,如果默认的话,你会发现背景完全被蓝色挡住了,你需要修改 blue 为 black,这样背景就会出现### END /etc/grub.d/05_debian_theme #### 10_linux 为自动添加的当前root分区linux引导项### BEGIN /etc/grub.d/10_linux ####菜单项,要包括 menuentry 双引号" " 和大括号 { }才完整,否则不显示菜单menuentry "Ubuntu, Linux 2.6.31-9-386" {insmod ext2set root=(hd0,7)search --no-floppy --fs-uuid --set f255285a-5ad4-4eb8-93f5-4f767190d3b3#这句与set root=(hd0,7)重复,可删除linux /boot/vmlinuz-2.6.31-9-386 root=UUID=f255285a-5ad4-4eb8-93f5-4f767190d3b3 ro quite splash#不喜欢看到一长串的, roo=UUID=***可用root=/dev/sda7代替initrd /boot/initrd.img-2.6.31-9-386}### END /etc/grub.d/10_linux ###### BEGIN /etc/grub.d/20_memtest86+ ###menuentry "Memory test (memtest86+)" {linux16 /boot/memtest86+.bin}### END /etc/grub.d/20_memtest86+ #### 自动添加存在于其他分区的系统引导项### BEGIN /etc/grub.d/30_os-prober ####windows 启动菜单menuentry "Windows Vista (loader) (on /dev/sda1)" {insmod ntfs#windows格式为ntfs,或为fat32改为insmod fatset root=(hd0,1)search --no-floppy --fs-uuid --set ece067d2e067a196#可删除#grub2比较先进的地方就是如果发现windows启动是通过ntldr 引导的,定为2000/xp/2003,会在这加上drivemap -s (hd0) ${root} ,作用相当于grub的map,可正常启动非第一硬盘的xp/2003系统。

GRUB2启动代码详解

GRUB2启动代码详解

GRUB2的介绍目前Grub1已经停止开发了,不再增加新的功能,所有的开发都转移到Grub2上了,Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:1.模块化设计不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。

2.支持多体系结构Grub 2可支持PC(i386), MAC(powerpc)等不同的体系结构,而且支持最新的EFI架构。

3.国际化的支持Grub 2 可以支持非英语的语言。

4.内存管理Grub 2 有真正的内存管理系统。

5.脚本语言Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。

当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。

如果你熟悉Grub2,应该可以看明白里面的内容。

要注意的是:a、timeout, default等参数用变量来储存b、菜单项由menuentry定义c、第1个分区是(hd0,1)而不是(hd0,0)理论的东西说多了大家估计也晕,举个简单的例子:在grub1中,要改变启动背景的时候只能选择支持640X480分辨率并且格式也只能是.xpm的图片,分辨率稍微大点的图就显示不出来了,但grub2不存在这个问题,它有更绚丽的菜单界面,grub2默认.png .tga .jpeg等很多种格式的图片都支持,而且支持的图片分辨率也更大。

GRUB2启动代码分析## DO NOT EDIT THIS FILE## It is automatically generated by /usr/sbin/grub-mkconfig using templates# from /etc/grub.d and settings from /etc/default/grub#### BEGIN /etc/grub.d/00_header ###if [ -s $prefix/grubenv ]; then#如果“$prefix/grubenv”目录不为空load_env#从grubenv文件中加载环境变量fiset default="0"#启动第1项#if [ ${prev_saved_entry} ]; then #如果prev_saved_entry的值不为空set saved_entry=${prev_saved_entry}#将saved_entry的值设置成变量prev_saved_entry的值。

grub2修改启动菜单原理

grub2修改启动菜单原理

windows linux 双系统grub2默认启动项的更改和早期grub的启动菜单不一样,以前只要修改/boot/grub/menu.lst就行了。

linux7中已经没有menu.lst文件了。

+++++++++++++++++++以下是重点理论知识++++++++++++++++++++++grub2由三个部分组成:/etc/default/grub文件、/etc/grub.d目录、/boot/grub/grub.cfg文件。

在开机启动时,linux系统是调用/boot/grub/grub.cfg 文件执行的。

但这个文件即使手动编辑后也是会被还原的,为什么呢?当我们或linux系统更新后,会自动执行update-grub更新启动菜单命令。

该命令会根据/etc/default/grub文件和/etc/grub.d/的所有配置文件重新生成/boot/grub/grub.cfg文件;也就是说update-grub命令执行后,/boot/grub/grub.cfg文件就被更新了。

+++++++++++++++++++++以上是理论知识+++++++++++++++++++++++++++++配置文件:/etc/default/grub文件//保存开机默认启动项、倒计时内容;GRUB_TIMEOUT=5 //超时时间GRUB_DEFAULT=saved //开机菜单默认项,可以使用0-nGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console" /启用 consoleGRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet" //追加内核安全性;GRUB_DISABLE_RECOVERY="true" //禁止显示救援模式;/etc/grub.d/* //保存各个启动项;[root@tang ~]# ls /etc/grub.d/00_header 10_linux 30_os-prober README00_tuned 20_linux_xen 40_custom01_users 20_ppc_terminfo 41_custom其中,30_os-prober 是windows系统的启动项;其中,10_linux 是linux 系统的启动项;其中,/etc/grub.d/00_header //初始化默认选项,超时时间其中,/etc/grub.d/05_debian_theme //配置引导画面,主题颜色;其中,04_custom //自定义菜单;**注意**,这里的每个文件前面都有数字组成;数字越小启动顺序就越靠前。

Grub引导多系统启动图文讲解

Grub引导多系统启动图文讲解

RHEL开机时的先后顺序BIOS —> MBR —> Kernel —> init1、当电脑一打开电源时电脑就会进入BIOS(BIOS的工作主要是检测一些硬件设备);2、检测完后会进入MBR也就是boot loader(MBR位于硬盘的第一个扇区总共512bytes,其中前446bytes里面的编码是在选择引导分区也就是决定要由哪个分区来引导);3、载入系统的Kernel(核心),在Kernel里主要是载入电脑设备的驱动程序,以便可以控制电脑上的设备,并且以只读方式来挂载根目录,也就是一开始只能读取到根目录所对应的那个分区,所以/etc、/bin、/sbin、/dev、/lib这五个目录必须同根目录在一个分区中;4、最后启动init这个程序,所以init这个程序的进程编号为1,是Linux中第一个执行的程序;init这个程序会根据Run level来执行以下这些程序:·/etc/rc.d/rc.sysinit;·/etc/rc.d/rc 和etc/rc.d/rc?.d/·/etc/rc.d/rc.local·如果有适当的图形界面管理程序二、BIOS初始化时主要的三个任务BIOS(B asic I nput/O utput S ystem)1、电脑周边设备的检测,加电自检POST (Power on self test);2、BIOS会选择要由哪一个设备来开机,例如:软盘启动、光盘启动、网络启动、最常见的从硬盘启动;3、选择好由哪个设备开机后,就开始读取这个设备的MBR 引导扇区;三、介绍Boot Loader中的主要工作1、Boot Loader可以安装在两个地方:·安装在硬盘的MBR中;·当有时候MBR中被其他开机管理程序占用就可以将Boot Loader 安装在硬盘中的其中一个分区的引导扇区上,;2、Boot Loader的程序码分为两个阶段:(1)Boot Loader第一阶段的程序码非常小,只有446bytes,可以存入在MBR或是某一个分区的引导扇区里,(2)Boot Loader第一阶段的程序码是从boot 分区来载入的,就是说Boot Loader 第二阶段程序码存放在/boot 这个分区中;3、下面来看三个Boot Loader 的开机流程范例,如在一块硬盘中安装了两个系统分别为:windows 2003 和Red hat linux当电脑开机后,会先载入MBR通过第一阶段程序码来载入第二阶段程序码,进入GRUB开机菜单这里选择哪个系统就会载入相应的核心;splashimage=(hd0,0)/grub/splash.xpm.gz开机时使用的背景图案,这里的(hd0,0)意思为(硬盘编号,分区编号)hiddenmenu隐藏开机的菜单(2)用于区分多个系统的设定,如果这台主机中还安装了其它系统并设定了多重启动,在这里还可以看到其它系统的设定;title Red Hat Enterprise Linux AS (2.6.9-11.EL)在GRUB开机菜单中所显示的开机的系统名称root (hd0,0)指定下面的档案位于哪个目录中,这个hd0,0 同样指的是用于指引导的目录,通常指/boot目录kernel /vmlinuz-2.6.9-11.EL ro root=LABEL=/ rhgb quiet设定kernel镜像的存放位置,这个位置相对于上面root 那一行所指定的位置的相对位置,ro root=LABEL=/ 是设定/在根目录的位置,ro是只读的意思,也就是以只读方式挂载根目录,也可以使用root=/dev/hda2 类似于这种形式来挂载根目录;rhgb 意思是以图形界面显示开机过程,去掉则以文字界面显示;quiet 意思是设定开机过程中不显示错误信息;initrd /initrd-2.6.9-11.EL.img 将这个指定的文件载入到内存中,这个文件里都是存放一些驱动程序;3、如果我们修改完grub.conf 这个配置文件后,设定为立即生效;4、另外,如果硬盘上的MBR被清除掉了,可使用下面的指令来重新安装boot loader 到MBR中:/sbin/grub-install /dev/hda5、介绍进入GRUB的开机管理程式可以做哪些动作(开机前改Kernel的参数)(1)开机后在进入GRUB界面后,先选择要使用的系统(这里选择Linux)(2)按下a键,可以在开机修改Kernel的参数,也就是可以传一个参数给Kernel;这时可以看到下面这个界面(3)上图中root=LABEL=/ 这部分不可以动,将后面的都去掉后,先输入一个空格再输入一个1,如下图:这个1 就是附加的一个参数,表示要进入单用户模式,不需要输入root密码就可以以root 身份登录;(4)当进入到#提示字元时,就可以设定root 密码了。

GRUB2及启动过程详解

GRUB2及启动过程详解

GRUB2及启动过程详解作者: 南瓜剪子2016年7月28日1. 概述 (2)2. CentOS7中GRUB2 (2)3. GRUB2 的bootstrap image文件 (3)3.1. boot.img (3)3.2. diskboot.img (4)3.3. kernel.img (4)3.4. core.img (4)3.5. *.mod (4)4. 对比GRUB Legacy (5)4.1. stage1 (5)4.2. *_stage1_5 (5)4.3. stage2 (5)5. grub2-mkimage定制core.img (6)6. GRUB2安装 (7)6.1. Linux是怎么命名设备(/dev/sda) (7)6.2. MBR(Master Boot Record) (8)6.3. MBR分区表DPT(Disk Partition Table) (10)6.4. LBA and CHS (14)6.4.1. CHS(cylinders-heads-sectors) (14)6.4.2. LBA(Logical Block Address) (14)6.5. boot.img和core.img安装 (15)6.6. 硬盘总结 (18)7. 启动过程 (19)7.1. BIOS (19)7.2. GRUB2中boot.img (20)7.2.1. Step1无条件跳转 (20)7.2.2. Step2 初始化 (20)7.2.3. Step3 判断硬盘是否支持LBA还是只支持CHS (22)7.2.4. Step4 采用LBA加载core.img第一个扇区 (23)7.2.5. Step5 拷贝core.img第一个扇区到内存指定位置 (25)7.2.6. Step6 执行core.img第一条语句 (27)7.2.7. Step7 boot.img总结 (27)7.3. GRUB2中core.img (28)7.3.1. diskboot.img (28)7.3.2. GRUB2 core Startup (34)7.3.3. GRUB主函数即GRUB主要功能 (37)7.3.4. 加载Linux Kernel (38)7.4. Linux kernel (47)8. 结束语 (48)9. 参考文献 (48)1.概述计算机系统上电之后由固化到ROM中的BIOS(UEFI)进行操作,然后导入硬盘MBR中Boot Loader并调到其运行,由Boot Loader对操作系统内核进行加载,并将控制权交给操作系统.下图简单描述了CentOS7的启动过程(CentOS7使用GRUB2作为Boot Loader):现在的Boot Loader有很多类型,大致如下:1.对Linux来说GRUB2占据了统治地位2.对Windows来说Bootmgr/BCD占据了统治地位3.对Apple系统缺省的是BootX作为一名计算机工程师,了解Boot Loader的原理是很重要。

linux引导之grub2

linux引导之grub2

linux引导之grub2先了解下什么是Bootloader以下是百度百科释意在嵌⼊式操作系统中,BootLoader是在内核运⾏之前运⾏。

可以初始化硬件设备、建⽴内存空间映射图,从⽽将系统的软硬件环境带到⼀个合适状态,以便为最终调⽤准备好正确的环境。

在中,通常并没有像BIOS那样的程序(注,有的嵌⼊式CPU也会内嵌⼀段短⼩的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

在⼀个基于ARM7TDMI core的中,系统在上电或复位时通常都从地址0x00000000处开始执⾏,⽽在这个地址处安排的通常就是系统的BootLoader程序Bootloader不属于操作系统,⼀般采⽤汇编语⾔和C语⾔开发。

需要针对特定的硬件平台编写。

在移植过程时,⾸先为开发板移植Bootloader。

Bootloader不但依赖于CPU的体系架构,⽽且依赖于嵌⼊式系统板级设备的配置。

3.Bootloader的操作模式⾃启动模式:在这种模式下,Bootloader从⽬标机上的某个固态存储设备上将操作系统加载到RAM中运⾏,整个过程并没有⽤户的介⼊。

交互模式:在这种模式下,⽬标机上的Bootloader将通过串⼝或⽹络等通信⼿段从开发板上下载内核映射和根⽂件系统映像等待RAM中。

可以被Bootloader写到⽬标机上的固态存储媒介质中,或者直接进⼊系统的引导。

也可以通过串⼝接收⽤户的指令。

⼆、Bootloader的基本功能初始化相关硬件把Bootloader⾃搬移到内存中执⾏⽤户指令加载并执⾏内核⼀个嵌⼊式系统从软件的⾓度看通常可以分为三个层次: 1、引导加载程序。

包括固化在固件(firmware)中的Booter代码(可选),和Loader两⼤部分。

2、操作系统。

特定于嵌⼊式板⼦的定制内核以及内核的启动参数;以及在内核和应⽤程序之间可能还会包括⼀个嵌⼊式图形⽤户界⾯,常⽤的嵌⼊式GUI有:MicroWindows和MiniGUI等。

grub2详解

grub2详解

grub2详解分类: ,翻译了grub2的绝⼤部分内容,然后⾃⼰整理了⼀下。

因为内容有点杂,所以章节安排上可能不是太合理,敬请谅解。

本⽂主要介绍的是grub2,在⽂末对传统grub进⾏了简述,但在grub2的内容部分中包含了很多grub2和传统grub的对⽐。

如果仅仅是想知道grub2中的boot.img/core.img/diskboot.img/kernel.img或者传统grub中stage1/stage1_5/stage2⽂件的作⽤,请直接跳⾄阅读。

1.1 基础内容1.1.1 grub2和grub的区别只说明⼏个主要的:1.配置⽂件的名称改变了。

在grub中,配置⽂件为grub.conf或menu.lst(grub.conf的⼀个软链接),在grub2中改名为grub.cfg。

2.grub2增添了许多语法,更接近于脚本语⾔了,例如⽀持变量、条件判断、循环。

3.grub2中,设备分区名称从1开始,⽽在grub中是从0开始的。

4.grub2使⽤img⽂件,不再使⽤grub中的stage1、stage1.5和stage2。

5.⽀持图形界⾯配置grub,但要安装grub-customizer包,epel源提供该包。

6.在已进⼊操作系统环境下,不再提供grub命令,也就是不能进⼊grub交互式界⾯,只有在开机时才能进⼊,算是⼀⼤缺憾。

7.在grub2中没有了好⽤的find命令,算是另⼀⼤缺憾。

1.1.2 命名习惯和⽂件路径表⽰⽅式(fd0) :表⽰第⼀块软盘(hd0,msdos2) :表⽰第⼀块硬盘的第⼆个mbr分区。

grub2中分区从1开始编号,传统的grub是从0开始编号的(hd0,msdos5) :表⽰第⼀块硬盘的第⼀个逻辑分区(hd0,gpt1) :表⽰第⼀块硬盘的第⼀个gpt分区/boot/vmlinuz :相对路径,基于根⽬录,表⽰根⽬录下的boot⽬录下的vmlinuz,:如果设置了根⽬录变量root为(hd0,msdos1),则表⽰(hd0,msdos1)/boot/vmlinuz(hd0,msdos1)/boot/vmlinuz:绝对路径,表⽰第⼀硬盘第⼀分区的boot⽬录下的vmlinuz⽂件1.1.3 grub2引导操作系统的⽅式grub2⽀持两种⽅式引导操作系统:直接引导:(direct-load)直接通过默认的grub2 boot loader来引导写在默认配置⽂件中的操作系统链式引导:(chain-load)使⽤默认grub2 boot loader链式引导另⼀个boot loader,该boot loader将引导对应的操作系统⼀般只使⽤第⼀种⽅式,只有想引导grub默认不⽀持的操作系统时才会使⽤第⼆种⽅式。

GRUB2启动引导器–完全教程

GRUB2启动引导器–完全教程

GRUB2 启动引导器–完全教程GRUB2 启动引导器–完全教程本教程仅讨论GRUB版本2,流行的启动引导器的下一代。

如果您在寻找常规GRUB的教程,请查看这篇文章。

欢迎来到GRUB2启动引导器教程~你肯定已经读过我的关于GRUB legacy版本的指南。

在过去的两年半里面,它独自积累了五十万次阅读,在全世界的计算机使用者中相当流行和实用。

我希望利用我的GRUB2重新创造同样的成功。

目标为用户使用GRUB作为他们的启动引导器实现启动任何其钟情的类UNIX操作系统或者多重启动他们的计算机提供一个简单、实际、循序渐进、行之有效的教程,从而允许他们快速、简单、毫不不费力的控制他们的系统启动流程。

在这个教程里,您将学到如何使用GRUB2,添加和删除菜单,定制标题和启动选项,双重启动和三重启动操作系统,结合GRUB和GRUB2,我们甚至看一下Windows如何加入这个模式。

之后,我们将学习如何从错误中恢复。

目录目录警告GRUB2路标GRUB2介绍新布局Grub.cfg文件实例/etc/grub.d/目录示例/etc/default/grub示例基本用法GRUB2如何工作?添加新的GRUB脚本更新GRUB通过改变脚本名称中的数字改变脚本启动顺序替换默认条目操作系统探测器重装GRUB简短的总结现实多重启动情况双重启动:使用GRUB2启动两个操作系统双重启动:两个操作系统使用GRUB legacy和GRUB2的结合。

双启动Windows 7和Ubuntu把GRUB legacy升级到GRUB2附加的测试用例三重启动定制GRUB菜单编辑/etc/default/grub从菜单中去掉内存测试(memtest)如果您不想让GRUB菜单包含memtest项,可以将20_memtest86+这个脚本设置为不可执行,然后更新GRUB。

更改菜单行标题更改主题(启动背景图片)GRUB 2恢复(recovery) 从启动失败中恢复观察小问题内核损坏内核崩溃转储机制命令名称GRUB legacy对比GRUB 2GRUB legacyGRUB 2结论更多阅读(文档和链接)官方:其他有用的GRUB2资源结论更新警告警告~GRUB2还是测试软件。

启动完全教程GRUB2

启动完全教程GRUB2

启动完全教程GRUB2。

/etc/default/grub示例文件位于:/etc/default/目录下这个目录包含很多其他文件所以不要以为仅仅被GRUB使用。

grub文件是一个被00_header 脚本解析的文本文件。

您可以在这里更改如果您想改动的话。

我们稍侯在定制部分细谈。

现在我们知道了文件是什么样的,让我们看看怎么使用。

基本用法是将我们的理论知识转化为实际行动的时候了。

GRUB2如何工作?GRUB2这样工作:/etc/default/grub包含定制化;/etc/grub.d/脚本包含GRUB菜单信息和操作系统启动脚本。

当运行update-grub命令时,它读取grub文件的内容、执行grub.d中的脚本来创建grub.cfg 文件。

就是这样。

想要更改grub.cfg文件,您需要编辑grub文件或者grub.d下面的脚本。

脚本是被执行的,这意味这他们拥有执行权限,如果您取消了执行权限,他们将不会执行。

这意味着您可以在grub.d下放多个文件,您想放多少就放多少,像update-grub能读的shell 脚本那样长。

如果您想使用他们,就激活可执行权限(chmod +x),反之亦然,去掉可执行权限(chmod –x)。

让我们来看一下这些脚本:拿00_header和05_debian_theme作为示例:40_custom更有意义,但是它并没有告诉我们怎么定制脚本。

不要担心,我们会稍侯学习所有东西。

添加新的GRUB脚本添加一项新的启动选项,您必须遵循一些基本语法:创建一个新文件并且以数字和下划线作为文件名的前一部分。

如果您想把启动项放在其他选项的上边,使用一个稍小的数字,如果您想放在其他的后边,使用一个稍大的数字。

例如:11_something将被放在操作系统默认条目的后边,反之08_something将被放置在10_linux条目的上方。

下一步是写实际内容,下面是例子:#!/bin/sh -eecho "Some string"cat << EOFmenuentry "Something" {set root=(hdX,Y)-- boot parameters --}EOF让我们仔细看一下这个文件:#!/bin/sh –e 第一行是shell脚本的声明,必须放在第一行。

双系统grub2配置

双系统grub2配置
设置方法:在终端(Terminal)使中用这个命令sudo chmod +w /boot/grub/grub.cfg
然后就是打开它,输入命令sudo gedit /boot/grub/grub.cfg 。
然后在### END /etc/grub.d/05_debian_theme ###后加入以下代码保存。
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
2)配置grub启动分区为(hd0,1)
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sda1)' {
insmod ntfs
set root=(hd0,1)
search –no-floppy –fs-uuid –set fe24211f2420dc81
1重新安装linux系统安装了centos8但是要配置grub2在?上搜寻了之后找到了下?的?法
双系统grub2配置
双系统grub2配置
1.今天在删除Ubantu的时候,漏了grub,结果开机的时候卡到grub上了。
2 解决方法:
1)重新安装Linux系统,安装了Centos8,但是要配置grub2,在网上搜寻ቤተ መጻሕፍቲ ባይዱ之后,找到了下面的方法。但是这个方法有个缺点,就是一旦重新配置grub,grub2-mkconfig -o /boot/grub2/grub.cfg,就会失效。

GRUB2启动和组成结构

GRUB2启动和组成结构

GRUB2启动和组成结构1.1 GRUB2特⾊本⽂所⽤GRUB2版本为1.99,GRUB2是为了取代GRUB⽽完全重写的第⼆版,引⽤:GRUB 2, which is a rewrite of GRUB, is alive and under development. GRUB 2 aims at merging sources from PUPA in order to create the next generation of GNU GRUB. A mailing list and a wiki have been setup for discussing the development of GRUB 2.GRUB 2 has the following tasks:* Create a compact core image. This will make Stage 1.5 unnecessary.* Add support for dynamic loading to the core image, so that it can extend itself at the run time rather than at the build time.* Add real memory management, to make GNU GRUB more extensible.* Add a more object-oriented framework for file systems, files, devices, drives, terminals, commands, and OS loaders.* Add support for internationalization. This includes support for non-ASCII character code, message catalogs like gettext, fonts, graphics console, and so on.* Add an actual localization, based on the above internationalization support. We will target on Japanese as the first step.* Segregate code specific to i386-pc from generic code, to make GNU GRUB portable.* Add support for cross-platform installation.* Develop additional software packages which will help our project and hopefully other projects.GRUB2采⽤模块化动态加载的思想,相⽐GRUB来讲不⽤在构建时将所有功能都加⼊,这使得GRUB2的体积相⽐变得很⼩,整个GRUB2的内核映像可以控制在31KB以内(GRUB的映像在百KB级别),因此GRUB2完全可以移除GRUB中存在的stage 1.5阶段,⽽可以将整个映像放在GRUB中的stage1.5存放的位置。

GRUB启动引导器完全教程精编版

GRUB启动引导器完全教程精编版

G R U B启动引导器完全教程文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)G R U B2启动引导器–完全教程本教程仅讨论GRUB版本2,流行的启动引导器的下一代。

如果您在寻找常规GRUB的教程,请查看文章。

欢迎来到GRUB2启动引导器教程!你肯定已经读过我的关于GRUBlegacy版本的指南。

在过去的两年半里面,它独自积累了五十万次阅读,在全世界的计算机使用者中相当流行和实用。

我希望利用我的GRUB2重新创造同样的成功。

目标为用户使用GRUB作为他们的启动引导器实现启动任何其钟情的类UNIX操作系统或者多重启动他们的计算机提供一个简单、实际、循序渐进、行之有效的教程,从而允许他们快速、简单、毫不不费力的控制他们的系统启动流程。

在这个教程里,您将学到如何使用GRUB2,添加和删除菜单,定制标题和启动选项,双重启动和三重启动操作系统,结合GRUB和GRUB2,我们甚至看一下Windows 如何加入这个模式。

之后,我们将学习如何从错误中恢复。

目录1.2.3.4.5.6.7.8.9.10.11.12.13.14.警告警告!GRUB2还是测试软件。

尽管它已经获得Ubuntu的青睐,本身没有质量问题。

您可以没有问题的使用,虽然可能存在损害,但那离您是非常遥远的,即使真的发生,损害也只是轻微的一点点。

您需要认识到这些。

另外,任何处理危险的任务比如执行系统本身的危险命令,磁盘分区,启动序列,镜像,等等的时候,您应该时刻准备着最坏的情况。

这意味着:对您的数据来考虑您必须有一个可靠的备份过程。

您必须拥有从灾难中迅速恢复的知识和工具。

这包括可以恢复系统的前一个镜像,修复损毁。

配置,恢复启动引导器,还有更多。

您必须对您所做的有信心。

现在您知道了这些,让我们高兴并且安全的开始。

那么一定要铭记,GRUB2还是测试版。

尽管同样我们可以想到GoogleMail,它测试了六年或者更多,您必须小心练习。

grub2使用教程

grub2使用教程

grub2基础教程-修订版smallapple目录一、grub2新特性二、grub2安装与启动三、grub2配置文件详解四、脚本修改五、使用grub2常见错误及修复方法一、grub2新特性1、grub2和grub有很多不同的地方:a)图形接口b)使用了模块机制,通过动态加载需要的模块来扩展功能c)支持脚本语言,例如条件判断,循环、变量和函数d)支持rescue模式,可用于系统无法引导的情况e)国际化语言。

包括支持非ASCII的字符集和类似gettext的消息分类,字体,图形控制台等等f)有一个灵活的命令行接口。

如果没有配置文件存在,GRUB会自动进入命令模式g)针对文件系统、文件、设备、驱动、终端、命令、分区表、os loder的模块化、层次化、基于对象的框架h)支持多种文件系统格式i)可访问已经安装的设备上的数据j)支持自动解压2、设备的命名grub2同样以fd表示软盘,hd表示硬盘(包含IDE和SCSI硬盘)。

设备是从0开始编号,分区则是从1开始,主分区从1-4,逻辑分区从5开始,而grub分区编号是从0开始的。

下面给出几个例子:(fd0):表示整个软盘(hd0,1):表示BIOS中的第一个硬盘的第1个分区(hd0,5)/boot/vmlinuz:表示BIOS中的第一个硬盘的第一个逻辑分区下的boot目录下的vmlinuz文件二、grub2安装与启动1、安装ubuntu9.10时,grub默认安装在第一硬盘(hd0)的mbr,其实就是把引导文件boot.img写入硬盘的mbr,当然,用户也可以选择不写入硬盘mbr而是写入linux分区的引导扇区。

启动时根据mbr所提供信息找到启动分区后,加载分区内的grub核心文件core.img和配置文件grub.cfg,进入选择菜单画面,在菜单画面,按上下箭号选择需要系统菜单项,按Enter进入选项。

按e进入己选择菜单的编辑状态,在编辑状态下,由上下左右箭号来移动光标,enter键换行,ctrl+x以编辑的内容启动,ctrl+c 进命令行状态,按Esc退出,回到菜单项。

grub.cfg指令详解

grub.cfg指令详解

Grub v2 手册 grub.cfg ---启动配置文件作者:青草青园来源:隆安教育论坛发表:2010-09-22 09:57我要评论--------------------------------------------------------------------------------Grub v2 手册——版权信息The pages contributed here (FranklinPiat/*) were an attempt to write some documentation for Grub2. Thi s documentation isn't updated anymore (since grub2-1.96+20080203 approximately)This work, and (any further contribution), has copyri ght attribution to FSF. It's dual licensed under GPLv 1 or later and GFDL.--------------------------------------------------------------------------------grub.cfg --- GRUB2版的启动配置文件1.描述(DESCRIPTION)grub.cfg不是一个真正的配置文件,它实际上是一个由grub2的引导程序执行的bash 类脚本文件。

各种指令或者是内置的,或作为外部模块在使用前加载。

菜单的结构实际上是由menuentry 命令所表明。

一个菜单项(menu entry)是一种功能,用户选择它时被调用。

在大多数情况,/boot/GRUB/grub.cfg文件是由update-grub根据/etc/defaults/grub /etc/grub.d/*的内容建立和更新的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目前Grub1已经停止开发了,不再增加新的功能,所有的开发都转移到Grub2上了,Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:1.模块化设计不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。

2.支持多体系结构Grub 2可支持PC(i386), MAC(powerpc)等不同的体系机构,而且支持最新的EFI架构。

3.国际化的支持Grub 2 可以支持非英语的语言。

4.内存管理Grub 2 有真正的内存管理系统。

5.脚本语言Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。

当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。

如果你熟悉Grub2,应该可以看明白里面的内容。

要注意的是:a、timeout, default等参数用变量来储存b、菜单项由menuentry定义c、第1个分区是(hd0,1)而不是(hd0,0)理论的东西说多了大家估计也晕,举个简单的例子:在grub1中,要改变启动背景的时候只能选择支持640X480分辨率并且格式也只能是.xpm的图片,分辨率稍微大点的图就显示不出来了,但grub2不存在这个问题,它有更绚丽的菜单界面,grub2默认.png .tga .jpeg等很多种格式的图片都支持,而且支持的图片分辨率也更大。

GRUB2启动代码分析## DO NOT EDIT THIS FILE## It is automatically generated by /usr/sbin/grub-mkconfig using templates# from /etc/grub.d and settings from /etc/default/grub#### BEGIN /etc/grub.d/00_header ###if [ -s $prefix/grubenv ]; then#如果“prefix/grubenv”目录不为空load_env#从grubenv文件中加载环境变量fiset default="0"#启动第1项#if [ ${prev_saved_entry} ]; then #如果prev_saved_entry的值不为空set saved_entry=${prev_saved_entry} #将saved_entry的值设置成变量prev_saved_entry的值。

save_env saved_entry#将变量saved_entry保存到grubenv文件中。

set prev_saved_entry=#将prev_saved_entry的值设置为空save_env prev_saved_entry#将prev_saved_entry保存到grubenv文件中set boot_once=true#将boot_once的值设置为真(为了标志已经设置过启动的相关环境变量了)fifunction savedefault {if [ -z ${boot_once} ]; then#如果已经设置过相关环境变量saved_entry=${chosen}#用变量chosen的值给saved_entry赋值。

save_env saved_entry#将saved_entry保存到grubenv文件中fi}function recordfail { #存在启动失败记录时调用,设置变量recordfail。

set recordfail=1if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi#如果grubenv文件存在,并已设置过相关变量,就将变量recordfail保存到grubenv文件。

}insmod ext2#插入ext2文件系统支持的模块set root='(hd0,9)'#指定系统root分区,也就是/分区为第1个磁盘的第9个分区search --no-floppy --fs-uuid --setd9985e84-7b54-4e5d-8ce9-c25cf88330aa#指定uuid= d9985e84-7b54-4e5d-8ce9-c25cf88330aa的分区为root分区,如果前面的分区#号(hd0,9)的uuid与这里的uuid一致,这两句作用一样,如果不一致,则指定uuid 的起 # 作用。

if loadfont /usr/share/grub/unicode.pf2 ; then#设置终端字体,unicode.pf2支持中文字符显示set gfxmode=640x480#设置显示分辨率,默认为640×480insmod gfxterm#插入终端模块gfxterm,支持中文字符显示和支持24位图像。

insmod vbe#插入vbe模块,GRUB2引入模块化机制,要使用它,需要在这里加入。

if terminal_output gfxterm ; then true ; else#检测grub2是否将终端设设定为gfxterm# For backward compatibility with versions of terminal.mod that don't# understand terminal_outputterminal gfxterm#设定grub2终端为gfxtermfifiinsmod ext2#插入ext2文件系统支持的模块set root='(hd0,9)'#指定系统root分区,也就是/分区为第1个磁盘的第9个分区search --no-floppy --fs-uuid --setd9985e84-7b54-4e5d-8ce9-c25cf88330aa#指定uuid= d9985e84-7b54-4e5d-8ce9-c25cf88330aa的分区为root分区,如果前面的分区#号(hd0,9)的uuid与这里的uuid一致,这两句作用一样,如果不一致,则指定uuid 的起 # 作用。

set locale_dir=($root)/boot/grub/localeset lang=zhinsmod gettextif [ ${recordfail} = 1 ]; thenset timeout=-1 #若有启动失败的记录,则不再倒计时。

elseset timeout=10 #如果停留在grub选择系统界面,停顿时间就设置成10秒,十秒后按默认启动项#启动。

fi### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/05_debian_theme###设置菜单颜色和背景颜色set menu_color_normal=white/black#设定菜单字体及背景颜色set menu_color_highlight=black/light-gray#设定选择项字体及背景颜色### END /etc/grub.d/05_debian_theme ###### BEGIN /etc/grub.d/10_linux ####10_linux为系统自动添加的当前root分区linux引导项#菜单项,要包括 menuentry 双引号" " 和大括号 { }才完整,否则不显示菜单menuentry ''Ubuntu,Linux 2.6.32-30-generic'' --class ubuntu --classgnu-linux --class gnu --class os {recordfail#执行recordfail 函数insmod ext2#插入ext2文件系统支持的模块set root='(hd0,9)'#指定系统root分区,也就是/分区为第1个磁盘的第9个分区search --no-floppy --fs-uuid --setd9985e84-7b54-4e5d-8ce9-c25cf88330aa#这句与set root=(hd0,9)效果一样,可删除其一,二者不一致以这句为准linux/boot/vmlinuz-2.6.32-30-genericroot=UUID=d9985e84-7b54-4e5d-8ce9-c25cf88330aa ro quiet splash#加载内核# ro:可读写,当启动分区是JFS等格式时需要使用此参数使得系统可以在启动是存放日志。

#quiet:安静模式,不显示启动详细信息。

#splash:显示徽标。

initrd/boot/initrd.img-2.6.32-30-generic#初始RAM磁盘,在系统引导过程中挂载的一个临时根文件系统。

}menuentry ''Ubuntu,Linux 2.6.32-30-generic (恢复模式)'' --class ubuntu--class gnu-linux --class gnu --class os {#linux的恢复模式,与linux的启动项基本一样。

recordfail#执行recordfail 函数insmod ext2set root='(hd0,9)'search --no-floppy --fs-uuid --set d9985e84-7b54-4e5d-8ce9-c25cf88330aaecho'载入 Linux ...'linux/boot/vmlinuz-2.6.32-30-genericroot=UUID=d9985e84-7b54-4e5d-8ce9-c25cf88330aa ro single #加载内核貌似这个single参数就是指定的修复模式echo'载入引导虚拟磁盘。

'initrd/boot/initrd.img-2.6.32-30-generic#初始RAM磁盘,在系统引导过程中挂载的一个临时根文件系统。

}### END /etc/grub.d/10_linux ####20_memtest86+为系统自动添加的内存测试菜单项menuentry "Memory test (memtest86+)" {insmod ext2set root='(hd0,9)'search --no-floppy --fs-uuid --set=rootf8656ad4-390d-4a72-832a-1f4b313ac793linux16/boot/memtest86+.bin}menuentry "Memory test (memtest86+, serial console 115200)" { insmod ext2set root='(hd0,9)'search --no-floppy --fs-uuid --set=rootf8656ad4-390d-4a72-832a-1f4b313ac793linux16/boot/memtest86+.bin console=ttyS0,115200n8}### END /etc/grub.d/20_memtest86+ ###### BEGIN /etc/grub.d/30_os-prober #### 30_os-prober或30_others为系统自动查找并添加其他系统菜单项,按windows、# linux、macos顺序查找并添加,支持windows 7识别。

相关文档
最新文档