支持BIOS和uEFI启动的GRUB2引导盘
2023上半年 国产操作系统(麒麟)运维师(中级)考前冲刺卷A2卷
2023上半年国产操作系统(麒麟)运维师(中级)考前冲刺卷A2卷1.【单选题】以下哪种情况适合使用自动分区配置( )。
A:多系统并存B:磁盘空间紧张C:全新磁盘并使用全部磁盘D:数据分区需要保留正确答案:C答案解析:全新磁盘并使用全部磁盘可使用自动分区配置2.【单选题】关于系统安装完成后的接受许可描述正确的是( )。
A:不带UKUI的系统安装完毕后,会显示文字版的许可协议B:无论带不带UKUI的系统安装完毕后,都会显示图形化的许可协议C:安装完成后可跳过接受许可也可以进入操作系统D:每次启动麒麟高级服务器操作系统都会显示许可协议正确答案:A答案解析:不带UKUI的系统安装完毕后,会显示文字版的许可协议,同样必须确认通过以后才能正常登录系统3.【单选题】启动流程的正确顺序应为( )。
1.Kernel自身初始化2.BIOS加电自检3.把MBR加载到内存4.加载grub引导程序5.启动systemdA:23415B:12345C:23145D:23451正确答案:A答案解析:正确顺序为234154.【单选题】下列不属于麒麟服务器系统下的bootloader的是哪项( )。
A:grubB:grub2C:spfdiskD:BOOTMGR正确答案:D答案解析:BOOTMGR是windows的bootloader5.【单选题】内核文件放置在什么目录下( )。
A:/B:/rootC:/bootD:/bin正确答案:C答案解析:内核文件放置在/boot目录下6.【单选题】为何使用ps aux查看到的1号进程不是systemd( )。
A:systemd进程号是隐藏的B:1号进程/sbin/init是链接到systemd的C:1号进程/sbin/init会调用systemdD:systemd进程号不是1正确答案:B答案解析:/sbin/init实际上是链接到systemd的,是软连接,所以不能算是调用systemd7.【单选题】在grub引导界面,修改系统启动项可选择快捷键( )。
grub2引导光盘镜像的制作
grub2引导光盘镜像的制作这个东东很简单,但差不多还是花了一两天时间。
关键是引导不起来,最后找出了原因,在制作ISO的时候出错了。
制作前最好su得到管理员权限。
一般我们都是有win系统的,那么可以vmware虚拟机安装ubuntu,再用它制作即可,至于导出方法,自己百度首先用ubuntu1404的版本为例,只是与ubuntu1204的目录有点区别ubuntu1404的grub2已经是2.02的版本的,ubuntu1204还是1.991,复制模块文件等su输入管理员密码cp -a /usr/lib/grub/ ./ 制作文件夹到当前目录mv grub grub2 改名为grub2grub2/grub.cfg这个是配置文件,可以根据需要更改,最好是改一下2,制作一个bootcfg的文件可用vi bootcfgsearch -f -n --set=root /grub2/grub.cfgconfigfile /grub2/grub.cfgset color_normal=light-gray/blackset pager=1按ESC:wq也可用gedit bootcfg,最后记得保存就行了3,定制启动内核grub-mkimage -d /usr/lib/grub/i386-pc/ -p /grub2/ -c bootcfg -o core.img -O i386-pc biosdisk iso9660 search configfile part_msdos fat ntfs ext2-d 指定定制内核时的要用的目录-p 指定在引导时要用到的目录,包含模块点-c 指定一些简单配置的文件-o 输出路径及文件名-O 指定格式i386-pc biosdisk iso9660指光盘文件系统一定要4,制作光盘引导文件cat /usr/lib/grub/i386-pc/cdboot.img core.img >g2ldr5,制作可启动的iso镜像文件mkisofs -R -J -v -l -no-emul-boot -boot-info-talbe -boot-load-size 4 -b g2ldr -o ../grub2cd.iso ./-b 启动文件,它是以后的引导文件,所以前面什么都不用加,不管是什么路径-o 输入路径及文件名../是上一级目录./是当前目录注意这里一定要加-no-emul-boot -boot-info-table -boot-load-size 4grub2可以加载jpg图片为背景,比g4d要漂亮一些,还增加了模块设计,可以加载缷载,还有中文字体一般配置菜单为grub.cfg再用buntu1204的版本为例,制作一个可引导启动的iso镜像文件1,复制模块文件等su输入管理员密码cp -a /usr/lib/grub/ ./ 制作文件夹到当前目录mv grub grub2 改名为grub22,制作一个bootcfg的文件可用vi bootcfgsearch -f -n --set=root /grub2/grub.cfgconfigfile /grub2/grub.cfgset color_normal=light-gray/blackset pager=1按ESC:wq3,定制启动内核grub-mkimage -d /boot/grub/ -p /grub2/ -c bootcfg -o core.img -O i386-pc biosdisk iso9660 search configfile part_msdos fat ntfs ext24,制作光盘引导文件cat /boot/grub/cdboot.img core.img >g2ldr5,制作可启动的ISO镜像文件mkisofs -R -J -l -v -no-emul-boot -boot-info-table -boot-load-size 4 -b g2ldr -o ../grub2cd.iso ./。
U盘UEFI与BIOSS双启动制作教程
U盘UEFI与BIOSS双启动制作教程此教程由本人亲手制作由IT天空 C大的U盘装机助理手动拓展EFI支持及存储单个大于4GB的文件的方法学习后,以自己的经验重新整理制作,方法更简单。
我发布的原帖在IT天空网址:/forum.php?mod=viewthread&tid=341046&page=1#pid7667054 版权归 IT天空 C大所有(如需转载请注明出处)一制作之前准备制作UEFI启动首先需要准备三个工具1.U盘装机助理2.0(这个在IT天空首页即可下载)2.傲梅分区助手PE启动测试工具”)1.使用U盘装机助理2.0 制作U盘PE启动(去除拓展UEFI功能)已经制作好的可以跳过此步三创建UEFI启动分区1.打开“傲梅分区助手”右键点击U盘非UD分区选择"调整/移大小在300M左右即可我个人使用500M 点击“确定”2.在“傲梅分区助手”的左上侧有个提交(在傲梅分区助手上的所有操作都需要点击提交才能进行下一步)点击“执行”点击“确定”3.下面开始创建UEFI启动分区首先右键点击新调整出来的分区选择“创建分区”如图点击“是"注意一定要FAT16 或者FAT32格式(我个人使用FAT32,并且测试过;FAT16我没有试过)确定之后别忘了左上角的”执行“到这里UEFI的启动盘制作就完毕了,接下来就是写入UEFI启动文件四隐藏非UD分区由于U盘只能识别一个主分区,而写入UEFI又必须是可见分区,所以首先要隐藏非UD分区也就是数据区域,怎样才能隐藏呢?我们只要把非UD的分区转换成逻辑分区这种转换不会删除数据但以防万一请大家做好备份1.首先右键点击非UD分区——高级操作——转换到逻辑分区确定这时电脑中就能看到UEFI启动的分区了如果不能识别请重新插拔U盘五写入UEFI引导文件之前按照C大的提取引导文件结果没弄明白然后就突发奇想用2.0直接写入没想法到成功了而且方法更简单1.打开"U盘装机助理2.0 选中”拓展UEFI“升级PE启动到这里整个UEFI启动盘制作基本结束但别忘了现在的可见分区是UEFI引导分区,还要把非UD分区显现出来2.打开傲梅分区助手,右键点击非UD分区——高级操作——转换到主分区之后电脑中就可以看到U盘的非UD分区了(如不能识别请重新插拔U盘)此时分区是FAT32格式想用NTFS的请手动格式化,这个相比大家都会,我就不说了到这里整个UFFI与BIOSS启动盘就制作成功了下面是测试结果UEFI启动BIOSS启动补充一下这种方法我只试过使用 IT天空U盘装机助理制作理论换成其他如:老毛桃、电脑店等也应该一样可以但我一直钟情于 U盘装助理其他未曾尝试如果需要请自行尝试希望此帖能够帮到大家请尊重版权转载注明出处。
grub2 原理
grub2 原理全文共四篇示例,供读者参考第一篇示例:Grub2是一款广泛应用于Linux操作系统的引导管理器,其设计的初衷是为了解决引导多个操作系统的问题。
Grub2的设计极具灵活性和可扩展性,使得它成为目前最流行的引导管理器之一。
Grub2的工作原理十分复杂,但可以简单地分为几个主要步骤:第一步是启动引导加载程序。
当计算机启动时,BIOS会加载Grub2引导加载程序到内存中,并执行引导加载程序。
引导加载程序的主要功能是在系统启动时向用户提供一个选择菜单,让用户选择要启动的操作系统。
第二步是加载内核。
一旦用户选择了要启动的操作系统,Grub2会加载该操作系统的内核文件到内存中。
内核文件包含了操作系统的核心功能,如进程管理、文件系统等。
第三步是加载初始化RAM磁盘(initrd)。
在加载内核之后,Grub2会加载initrd文件到内存中。
initrd是一个临时的文件系统,用于初始化硬件设备和加载驱动程序,以便系统能够顺利启动。
第四步是启动操作系统。
Grub2会将控制权交给内核,由内核初始化系统并启动用户空间进程,最终启动操作系统。
Grub2的设计具有许多优点,例如支持多种文件系统和操作系统,能够通过脚本和配置文件自定义启动选项,支持密码保护和图形界面等。
Grub2还支持在启动时对引导选项进行编辑,方便用户在系统启动时进行调试和配置。
Grub2也存在一些缺点,例如在配置文件中出现错误可能导致系统无法启动,引导加载程序的体积相对较大,可能会增加系统启动时间等。
在使用Grub2时,用户需要仔细阅读文档并谨慎配置,以避免出现问题。
Grub2是一款功能强大且灵活的引导管理器,能够帮助用户管理多个操作系统的启动过程。
它的工作原理虽然复杂,但通过对其原理和配置文件的深入了解,用户可以充分利用其强大的功能,提高系统的稳定性和性能。
第二篇示例:Grub2是一个多重引导加载程序,常用于Linux系统,负责加载操作系统。
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系统。
使用Linux系统安装grub2到u盘并启动系统或者iso镜像文件
使⽤Linux系统安装grub2到u盘并启动系统或者iso镜像⽂件⼀、使⽤fdisk命令对u盘进⾏分区1、fdisk -l 查看那个设备时u盘(现在以/dev/sdc为例)2、fdisk /dev/sdc 对u盘分区 p:查看当前分区 d:删除当前分区 n:新建分区 w:保存⼆、使⽤mkfs 将u盘格式化为fat32格式,fat32 通⽤性⽐较好mkfs.vfat -F 32 /dev/sdc1 或者 mkfs -t vfat /dev/sdc1三、将grub2安装到u盘1、sudo grub-install --boot-directory=/media/u /dev/sdc 问题:--boot-dircetory 和 --root-dircetory 的区别或:grub-install --no-floppy --boot-directory=/mnt/img /dev/sdc2、 sudo update-grub3、sudo grub-mkconfig -o /media/u/boot/grub/grub.cfg以上代码中的/dev/sdc是U盘对应设备,/media/u是U盘的挂载点。
经过上⾯的操作,grub2被安装到u盘的mbr上了,⽣成了默认的启动菜单/grub/grub.cfg,通过u盘启动就能看到grub2的引导界⾯了,完全可以引导电脑硬盘上的操作系统了。
四、使⽤grub命令⾏启动系统启动linux系统(本⽂的grub指的全部是grub2)1、set root=(hd1,msdos1) (hd1,msdos1)是启动分区。
(在输到"("之后,按⼀下tab,我的能⾃动填充hd1,之后,再按⼀下tab键,可以显⽰出磁盘分区,在我的电脑上显⽰出了2个ext分区,以及这些分区的基本信息,我的安装在hd1,msdos1)2、linux /boot/vmlinux-xxx-xxx root=UUID=xxxxxxxxx 或者 linux /boot/vmlinuz-***** -generic root=UUID=****** (root=后可以使⽤uuid也可使⽤ /dev/sda1 挂载分区,但是本⼈个⼈暂时⽆法获取是sda1还是sdb1,所以⽤UUID,第⼀步tab补全显⽰磁盘分区详情时会显⽰分区的uuid号)3、initrd /boot/initdxxx(按tab补全)4、boot 启动五、grub可以直接启动grub4dos2、配置 grub.cfgmenuentry "Grub4dos"{set root='hd0,msdos1'linux16 /grub/grub4dos/grub.exe boot}六、grub启动winpe1、消灾镜像⽂件到u盘2、配置grub.cfgmenuentry 'winpe'{ set root='hd0,msdos1' insmod lvm insmod xfs insmod memdisk insmod part_msdos echo 'loading memdisk...' linux16 /grub/memdisk iso raw echo 'loading iso...' initrd16 /grub/dabaicai.iso}七、grub4dos启动winpe(grub启动winpe有时候会失败所以使⽤grub4dos启动)修改grub4dos下的menu.lst⽂件(menu.lst⽂件最好拷贝到根⽬录或者boot⽬录,要不然系统可能找不到)title find and boot dabaicai.ISOfallback 6root (hd0,0) (系统默认是在当前磁盘,如果iso和grub4dos在同⼀个磁盘分区可以不⽤写这⼀句)find --set-root /grub/dabaicai.isomap /grub/dabaicai.iso (0xff) || map --mem /grub/dabaicai.iso (0xff)map --hookchainloader (0xff)savedefault --wait=2命令解释set: 设置环境变量,如果不带参数,则是显⽰当前所有的环境变量。
BOOTICE安装GRUB2到U盘
BOOTICE安装GRUB2到U盘第一篇:BOOTICE安装GRUB2到U盘BOOTICE安装GRUB2到U盘在windows(32位)环境下,将GRUB2安装到U盘中,并引导各种工具维护系统。
所需要的软件:BOOTICE v1.3.2所需要的附件:GRUB2的模块,各种工具第一步:插入U盘,等待U盘被电脑正确识别后,运行BOOTICE,出现如下界面。
根据磁盘的大小,选中目标磁盘为U盘。
不要选成电脑中的硬盘了。
点击分区管理。
第二步:在下图的分区管理中,点击重新分区。
对U盘进行分区操作。
下面的一个8G新U盘的情形,如果显示的信息与这个有区别时,不用担心,直接点重新分区,原来的分区信息就不存在了,U盘中的数据也会完全丢失。
千万注意:如果U盘中有重要的数据,一定要先将数据复制到电脑的硬盘中,再用BOOTICE软件重新进行分区。
第三步:接下来,一定要选择第四种模式,多分区的USB-HDD 模式。
主要是为了让U盘的第一个分区在windows系统中显示出来,当普通的U盘存数据用。
而第二个分区中存放GRUB2的模块,以及各种工具软件,在windows系统中是一般看到到的。
第四步:先将前3个分区的大小分别改为0MB,500MB,0MB,这样,第4个分区中会自动显示出U盘剩余的容量,比如这个8G的U盘剩余7222MB。
其实这个7222MB的容量是第一个分区应该设置的大小,这样做只是免于自己计算。
第五步:再将第1个分区的大小改为7222MB,第3、第4个分区的大小自动为0MB。
为了让第一个分区中能存放大于4GB(单个文件)的文件,应改为NTFS文件系统,最好加个卷标为DATAS(这个名字可随意),说明是用来存放数据的。
为了让GRUB2的主引导记录MBR读出GRUB2的模块,将第2个分区应设为FAT32文件系统,最好加个卷标为GRUB2(这个名字可随意),说明是用来存放GRUB2模块的。
点击确定后,会出现如下的提示信息,放心的点确定。
云主机添加Grub2引导WinPE ISO(Windows系统)-V1
云主机添加Grub2引导WinPE ISO(Windows系统)导读云主机安装的系统是Windows 2008 R2,BIOS+MBR,想利用Grub2引导发位于磁盘上Windows PE ISO 或其他系统,可以采用在Windows 系统中安装grub2实现。
安装配置步骤第一步、Grub2下载,文件准备到Grub2官网ftp:///gnu/grub/ 下载文件grub-2.02-for-windows.zip,将其解压至任意路径下,比如D:\。
这样Grub2的主程序目录将位于D:\grub-2.02-for-windows第二步,Grub2安装以管理员身份运行CMD,输入命令wmic diskdrive list brief,记录下安装目标磁盘DeviceID,本教程将安装至\\.\PHYSICALDRIVE0============================================== ====================================Microsoft Windows [Version 10.0.10586](c) 2015 Microsoft Corporation. All rights reserved.C:\Windows\system32>wmic diskdrive list briefCaption DeviceID Model Partitions Size WDC WD5000AAKX-001CA0 \\.\PHYSICALDRIVE0 WDC WD5000AAKX-001CA0 3 500105249280C:\Windows\system32>===================================================== =============================将当前路径切换至Grub2主程序所在路径,输入cd /d d:\grub-2.02-for-windows===================================================== =============================C:\Windows\system32>cd /d d:\grub-2.02-for-windowsd:\grub-2.02-for-windows>===================================================== =============================查看grub-install.exe的帮助文件,可以输入grub-install.exe --help或grub-install.exe -?,显示如下内容:===================================================== =============================Usage: grub-install [OPTION...] [OPTION] [INSTALL_DEVICE]Install GRUB on your drive.--compress=no|xz|gz|lzo compress GRUB files [optional]-d, --directory=DIR use images and modules under DIR[default=C:\grub-2.02-for-windows/<platform>]--fonts=FONTS install FONTS [default=unicode]--install-modules=MODULES install only MODULES and their dependencies[default=all]-k, --pubkey=FILE embed FILE as public key for signature checking --locale-directory=DIR use translations under DIR[default=C:\grub-2.02-for-windows/locale]--locales=LOCALES install only LOCALES [default=all]--modules=MODULES pre-load specified modules MODULES--themes=THEMES install THEMES [default=starfield]-v, --verbose print verbose messages.--allow-floppy make the drive also bootable as floppy (defaultfor fdX devices). May break on some BIOSes.--boot-directory=DIR install GRUB images under the directory DIR/grubinstead of the boot/grub directory--bootloader-id=ID the ID of bootloader. This option is onlyavailable on EFI and Macs.--core-compress=xz|none|autochoose the compression to use for core image--disk-module=MODULE disk module to use (biosdisk or native). Thisoption is only available on BIOS target.--efi-directory=DIR use DIR as the EFI System Partition root.--force install even if problems are detected--force-file-id use identifier file even if UUID is available--label-bgcolor=COLOR use COLOR for label background--label-color=COLOR use COLOR for label--label-font=FILE use FILE as font for label--macppc-directory=DIR use DIR for PPC MAC install.--no-bootsector do not install bootsector--no-nvram don't update the `boot-device'/`Boot*' NVRAMvariables. This option is only available on EFIand IEEE1275 targets.--no-rs-codes Do not apply any reed-solomon codes whenembedding core.img. This option is only availableon x86 BIOS targets.--product-version=STRING use STRING as product version--recheck delete device map if it already exists--removable the installation device is removable. This optionis only available on EFI.-s, --skip-fs-probe do not probe for filesystems in DEVICE--target=TARGET install GRUB for TARGET platform[default=i386-pc]; available targets: arm-efi,arm-uboot, arm64-efi, i386-coreboot, i386-efi,i386-ieee1275, i386-multiboot, i386-pc,i386-qemu, i386-xen, ia64-efi, mips-arc,mips-qemu_mips, mipsel-arc, mipsel-loongson,mipsel-qemu_mips, powerpc-ieee1275,sparc64-ieee1275, x86_64-efi, x86_64-xen-?, --help give this help list--usage give a short usage message-V, --version print program versionMandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.INSTALL_DEVICE must be system device filename.grub-install copies GRUB images into boot/grub. On some platforms, it may also install GRUB into the boot sector.Report bugs to <bug-grub@>.===================================================== =============================参数说明:--directory 指定镜像和模块的路径,本教程将此参数设置为--directory=D:\grub-2.02-for-windows\i386-pc,如果把grub2压缩包解压至c盘,此参数可以不进行设置,因为default=C:\grub-2.02-for-windows/<platform>,platform 会根据当前的平台从i386-pc和i386-efi两个路径中进行自动选择。
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及启动过程详解作者: 南瓜剪子2016年7月28日1. 概述 (2)2. CentOS7中GRUB2 (3)3。
GRUB2 的bootstrap image文件 (5)3.1。
boot。
img (5)3。
2。
diskboot。
img (5)3.3. kernel。
img (6)3.4。
core。
img (6)3。
5. *.mod (6)4. 对比GRUB Legacy (7)4.1. stage1 (7)4。
2. *_stage1_5 (7)4.3。
stage2 (7)5。
grub2-mkimage定制core.img (8)6。
GRUB2安装 (10)6。
1. Linux是怎么命名设备(/dev/sda) (10)6.2. MBR(Master Boot Record) (11)6。
3。
MBR分区表DPT(Disk Partition Table) (14)6.4。
LBA and CHS (22)6.4。
1. CHS(cylinders—heads—sectors) (22)6.4。
2。
LBA(Logical Block Address) (23)6。
5。
boot。
img和core.img安装 (23)6.6。
硬盘总结 (28)7. 启动过程 (29)7。
1. BIOS (29)7.2。
GRUB2中boot.img (31)7.2。
1。
Step1无条件跳转 (32)7。
2。
2. Step2 初始化 (32)7。
2.3. Step3 判断硬盘是否支持LBA还是只支持CHS (34)7。
2.4。
Step4 采用LBA加载core.img第一个扇区 (37)7。
2.5. Step5 拷贝core.img第一个扇区到内存指定位置 (40)7。
2。
6。
Step6 执行core。
img第一条语句 (42)7。
2。
7。
Step7 boot。
img总结 (43)7。
3。
GRUB2中core。
img (44)7.3.1。
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 和 grub0.97 的启动项⽬差别还是⽐较⼤的,最近Ubuntu⾃动更新,把默认启动项⽬给更改了,导致很多驱动⽆法成功加载,需要改回去,这⾥记录下修改过程:通过sudo vim /boot/grub/grub.cfg打开grub2的默认配置⽂件注意:grub2的⼀级和⼆级 menu 的索引都是从 0 开始的假如第⼀个启动项(索引为0)不包含⼦menu,可以通过修改配置set default="0"把默认启动项设为第⼀个如果⼀个启动项包含⼦menu,可以通过set default="1> 3"的形式来设置默认启动项,其中1是⼀级menu的索引,2是⼆级menu的索引If you have a submenu in your grub.cfg you should use two digits like this:grub-reboot '1>3'The first is menu index, and the second is submenu index.For example, to boot last entry from config like this:grep menu /boot/grub/grub.cfgmenuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (sysvinit)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' { menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (sysvinit)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {you should use:grub-reboot '1>5'and reboot.参考链接。
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还是测试软件。
在windows多系统中安装grub2
在windows多系统中安装grub2本帖最后由 fanet 于 2013-12-15 21:54 编辑grub2是现在linux版本中的流行启动器。
它可以启动各种系统,也可直接硬盘装系统。
一直以来它只支持在linux系统中安装,这是它在windows系统不能广泛应用的主要原因吧,目前这方面的探索论坛里有一些主题。
这里不仔细讨论linux下的安装方式,我依据个人使用grub的经验,提供两个windows下的安装方案:方法1>用bootice安装grub2到mbr。
pauly兄的bootice最新版本1.06,经测试安装grub2-2.00成功。
适合bios+mbr磁盘结构,但由于保留扇区容量的限制,目前只支持把grub2模块放在fat,exfat, ext分区上,不支持ntfs分区搜索grub2模块step1,用bootice安装grub2引导代码到硬盘MBR。
占用63个扇区。
安装到u盘的要自行检查U盘前面的保留扇区是否够用!用diskgenius可以调整保留扇区数。
step2,将附件grub2模块考到硬盘fat,exfat,ext分区(例如X:),解压到根目录。
step3,修改菜单配置文件X:\boot\grub\grub.cfg,关于启动菜单的隐藏,需修改set timeout=1部分为set timeout=0.唤出菜单用shift键。
但我更乐意将时间设置为set timeout=1,这样可以用上下方向键,esc键等大部分键hold菜单。
重启,grub2装在u盘上做启动是非常好用的维护工具。
方法2>自定制gr2ldr,用bootmgr的BCD菜单加载启动。
在linux下用#grub-mkimage --output=./core.img -c config.cfg --format=i386-pc biosdisk part_msdos fat ntfs ext2search_fs_file自定制core.img嵌入以下config.cfg文件,/////////////////////////////////////////set cfgfile='/boot/grub/grub.cfg'search.file $cfgfile rootset prefix=($root)/boot/grub//////////////////////////////////////////在安装的grub目录,找到lnxboot.img用cat合并两个文件(lnxboot.img+core.img)即可得gr2ldr引导文件。
启动完全教程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脚本的声明,必须放在第一行。
支持BIOS和uEFI启动的GRUB2引导盘
支持BIOS和uEFI启动的GRUB2引导盘利用GRUB2启动程序,合并网上优秀资源(感谢原作者)生成一个启动的U盘/光盘。
根目录只有引导所需要的EFI、BOOT二个目录无其它内容,简洁清爽。
各种引用的ISO资源使用原版而没有解包出来,方便管理以及后期维护使用。
现共享相关的内容出来供有需要的朋友参考。
1、包含MAXDOS工具包(仅BIOS引导可用),Windows密码清除/绕过工具;2、WinPE使用MEMDISK载入ISO镜像(仅BIOS引导时可用;uEFI引导因暂不支持ISO装载不能使用,如需要可以使用EFIShell方式加载);3、Parted_Magic、Linux Live CD使用linux/initrd方式载入。
添加LiveCD的一些光盘路径写法(findiso=$isofile、iso_filename=$isofile、iso-scan/filename=$isofile),核心的引用参数可以参考各linuvCD内的配置文件,然后在配置文件中加入ISO路径中引用即可。
4、UsbBoot.ima镜像只有基础的引导程序,大家可根据实际需要放置相关文件,如各种ISO文件WinPE、PartedMagic、Linux liveCD等(注意不支持本身通过MEMDISK加载的各型PE ISO,例如众多GHOST系统盘中带的一般就是此类),然后修改GRUB2相关配置菜单即可使用。
关于修改grub.cfg配置菜单,请使用文本编辑器(如:notepad++、UltraEdit)保存为无签名的UTF8编码,详情参考配置文件。
光盘目录:+--- /|+-- /EFI ——GRUB2 uEFI引导文件|+-- /BOOT/GRUB2 ——GRUB2 配置文件及相关模块|+-- /BOOT/GRUB2/grub.cfg ——GRUB2主配置文件|+-- /BOOT/GRUB2/os_list.cfg ——LiveCD及系统安装配置文件|+-- /BOOT/GRUB2/os_menu.cfg ——获取本地硬盘启动项配置文件|+-- /BOOT/GRUB2/pmagic.cfg ——PartedMagic配置文件|+-- /BOOT/GRUB2/pwd.cfg ——Windows登陆密码工具配置文件|+-- /BOOT/Tools ——一些实用小工具软件|+-- /BOOT/Tools/GrubLDR ——GRUB2引导文件备份|+-- /SoftWare/ISO ——各种ISO镜像文件,如:WinPE、PartedMagic、Linux liveCD等。
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退出,回到菜单项。
BOOTICE安装GRUB2到U盘
BOOTICE安装GRUB2到U盘在windows(32位)环境下,将GRUB2安装到U盘中,并引导各种工具维护系统。
所需要的软件:BOOTICE v1.3.2 所需要的附件:GRUB2的模块,各种工具第一步:插入U盘,等待U盘被电脑正确识别后,运行BOOTICE ,出现如下界面。
根据磁盘的大小,选中目标磁盘为U盘。
不要选成电脑中的硬盘了。
点击分区管理。
第二步:在下图的分区管理中,点击重新分区。
对U盘进行分区操作。
下面的一个8G新U盘的情形,如果显示的信息与这个有区别时,不用担心,直接点重新分区,原来的分区信息就不存在了,U盘中的数据也会完全丢失。
千万注意:如果U盘中有重要的数据,一定要先将数据复制到电脑的硬盘中,再用BOOTICE 软件重新进行分区。
第三步:接下来,一定要选择第四种模式,多分区的USB-HDD模式。
主要是为了让U盘的第一个分区在windows系统中显示出来,当普通的U盘存数据用。
而第二个分区中存放GRUB2的模块,以及各种工具软件,在windows系统中是一般看到到的。
第四步:先将前3个分区的大小分别改为0MB,500MB,0MB,这样,第4个分区中会自动显示出U盘剩余的容量,比如这个8G的U盘剩余7222MB。
其实这个7222MB的容量是第一个分区应该设置的大小,这样做只是免于自己计算。
第五步:再将第1个分区的大小改为7222MB,第3、第4个分区的大小自动为0MB。
为了让第一个分区中能存放大于4GB(单个文件)的文件,应改为NTFS文件系统,最好加个卷标为DATAS(这个名字可随意),说明是用来存放数据的。
为了让GRUB2的主引导记录MBR读出GRUB2的模块,将第2个分区应设为FAT32文件系统,最好加个卷标为GRUB2(这个名字可随意),说明是用来存放GRUB2模块的。
点击确定后,会出现如下的提示信息,放心的点确定。
经过一段时间后,分区操作与格式化操作都将完成,并给出成功的提示。
记一次在U盘上安装Manjaro
记⼀次在U盘上安装Manjaro前情提要由于在我的笔记本上WIndwos和别的系统⽔⽕不容(启动到Windows,GRUB的引导项就会被删除),于是我把2020-04-01装的Windows格掉,装了Arch。
但Windows在某些时候⼜是刚需,我⼿头正好有个SanDisk CZ880。
于是我在CZ880上部署了WTG,还挺流畅的,插在USB2.0的⼝上也能很好地运⾏。
前天,我试着在CZ880剩下的1GB的分区⾥安装Manjaro,可能是配置有问题,没启动起来,还顺便把Windows的引导⼀块弄没了(没错,是我格式化的),不慌,还有备⽤的MBR引导。
昨天,我⼜试着在880的MBR引导扇区⾥安装wee63,操作有误,把MBR引导也弄挂了。
既然挂了那我就想办法修复吧,但在微PE下,系统分区和EFI分区由于⽞学原因只能同时挂载⼀个,试着修复MBR引导,⼜提⽰BCD配置有误,我⼲脆直接备份好数据之后格了盘。
正⽂128GB的U盘我平时根本⽤不到,我⼜打起了在880上安装“随⾝”操作系统的打算,这次我选择了Manjaro。
为什么不是Debian,Ubuntu,抑或是Arch呢?因为我感觉⼤版本更新很⿇烦,Arch的滚动更新就很对我胃⼝。
⽽Arch更新得实在是太勤了,快到了令⼈担⼼的地步,所以我选择了更新速度稍慢的Manjaro。
开始操作我的“野⼼”很⼤,我想让Manjaro同时兼容UEFI启动和legecy启动。
我不喜欢MBR分区表,因为“引导扇区”“扩展分区”等概念着实是令⼈头疼。
但⼜没法往GPT分区表⾥写MBR的引导扇区数据,也就是说在legecy模式下⽆法启动。
这时候我在Archwiki⾥看到了这样⼀段内容。
BIOS/GPT配置中,必须使⽤ BIOS 启动分区。
GRUB将core.img嵌⼊到这个分区。
安装 GRUB 前,在⼀个没有⽂件系统的磁盘上,创建⼀个1兆字节(使⽤ fdisk 或 gdisk 和参数+1M)的分区,将分区类型设置为 GUID 21686148-6449-6E6F-744E-656564454649。