【Grub2】制作UEFI版本Grub2引导_uefi引导grub_Beatfan_N的博客-程序员宅基地

技术标签: 系统安装与维护  系统安装维护  

可以直接下载以下操作的所有文件https://download.csdn.net/download/u010875635/10655981

本来不想设置积分,无奈最低只能设置1分,大家见谅。没有积分的还是从grub2官网下载按照下面的修改吧

 

首先要从grub官网下在grub2,grub2中包含所有grub2相关的命令,可以用来生成grub2引导,这里着重介绍制作UEFI版本的grub2


        


        UEFI启动是fat/fat32分区/EFI/Boot/bootia32.efi或者/EFI/Boot/bootx64.efi,然后进程由UEFI交给efi程序,我们就是制作这个efi程序,使用grub-mkimage命令即可生成。

        efi程序中需要内置配置文件,类似grub的grldr文件,一旦生成后就很难修改了,所以,我们需要一个类似与menu.lst的配置文件,所以我们指定的配置文件中指向外部的cfg配置文件
        以下为64位efi生成,32位参考文件夹名称,将x86_64-efi修改为i386-efi即可,一般是不需要,支持UEFI的基本都是64位的PC。
 

        内置配置文件为:x86_64-efi.cfg,内置配置文件搜索/EFI/grub/x64.cfg 文件,并将其设定为配置文件。

将其保存在grub2解压目录下,内容如下:

 

search.file /EFI/grub/x64.cfg root
set prefix=($root)/EFI/grub
configfile ($root)/EFI/grub/x64.cfg


        在grub2解压目录下,输入以下命令:

 

 

grub-mkimage.exe -d x86_64-efi -c x86_64-efi.cfg -p /EFI/grub -o z_bootx64.efi -O x86_64-efi part_gpt part_msdos disk fat exfat ext2 ntfs xfs appleldr hfs iso9660 normal search_fs_file configfile linux linux16 chain loopback echo efi_gop efi_uga video_bochs video_cirrus file gfxmenu gfxterm gfxterm_background gfxterm_menu halt reboot help jpeg ls png true

 


-d 表示指定查找模块目录

-c 表示指定配置文件,这个配置文件会集成到efi文件内,就是我们刚刚编写的x86_64-efi.cfg

-p 设置偏好文件夹,cfg文件中会调

-o 表示生成的目标文件
-O 表示集成的模块

 

 

以上生成完毕,在文件夹下会出现一个bootx64.efi文件,将其和x86_64-efi、locale文件夹、unicode.pf2一起拷贝到第一个fat/fat32分区,并新建一个x64.cfg。

其中,x86_64-efi为模块目录,locale为地区语言,unicode.pf2为字体,x64.cfg为配置文件

目录如下:

FAT/FAT32

#########################
/EFI/Boot/bootx64.efi
/EFI/grub/x64.cfg

/EFI/grub/unicode.pf2

/EFI/grub/x86_64-efi/

/EFI/grub/locale/

#####################


x64.cfg内容示例:

 

 

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}


insmod part_gpt
insmod fat
set root='hd0,gpt1'

#set font
font="/EFI/grub/unicode.pf2"
if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=zh_CN
  insmod gettext
fi

#adjust the screen resolution
terminal_output gfxterm

#background
insmod jpeg
if background_image /EFI/grub/background.jpg; then
  true
else
  set menu_color_normal=white/black
  set menu_color_highlight=black/light-gray
  if background_color 255,255,155,0; then
    clear
  fi
fi



#default select menu index
set default=0

#timeout
set timeout_style=menu
set timeout=5


menuentry "启动 delta win7" --class windows --class os {
	insmod ntfs
	set root='(hd0,gpt2)'

	clear
	echo "Start Windows"
	chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "local win7" --class windows --class os {
	insmod ntfs
	set root='(hd0,gpt3)'
	

	clear
	echo "Start Windows"
	chainloader /EFI/Microsoft/Boot/bootmgfw.efi

}

menuentry "ubuntu16.04 x86" --class ubuntu --class os {
	insmod ext2
	set root='(hd0,gpt5)'
	linux /vmlinuz ro root=/dev/sda5
	initrd /initrd.img
	echo "Start Ubuntu 16.04"
}



menuentry "ubuntu16.04 x64" --class ubuntu --class os {
	insmod ext2
	set root='(hd0,gpt6)'
	linux /vmlinuz ro root=/dev/sda6
	initrd /initrd.img
	echo "Start Ubuntu 16.04"
}

menuentry "-------------------" --class ubuntu --class os{
	set root=(hd0,gpt1)
}

menuentry "ubuntu-efi" --class ubuntu --class os {
	insmod ext2
	set root='(hd0,gpt5)'
	chainloader /efi/grub.efi
}

menuentry "install ubuntu" --class ubuntu --class os {
	insmod ext2
	insmod loopback
	set root=(hd0,gpt4)
	set isofile=/OS/linux/ubuntu-16.04.2-desktop-amd64.iso
	loopback loop $isofile
	linux	(loop)/casper/vmlinuz.efi  boot=casper iso-scan/filename=$isofile
	initrd	(loop)/casper/initrd.lz
}

menuentry "-------------------" --class ubuntu --class os{
	set root=(hd0,gpt1)
}

menuentry "reboot" --class windows --class os{
	insmod reboot
	reboot
}

menuentry "halt" --class windows --class os{
	insmod halt
	halt
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010875635/article/details/74289971

智能推荐

SpringBoot学习Day02——配置_江海i的博客-程序员宅基地

SpringBoot配置1.配置文件在SpringBoot中使用一个标准名称的配置文件。application.properties/application.yml。作用:修改SpringBoot中的默认配置和配置其它模块。2.YMAL以数据为中心,比json和xml更适合做配置文件。2.1基本语法k:(空格)v键值对以空格的缩进来表示层级。属性和值区分大小写。server:...

Java HashMap API_LZW760907的博客-程序员宅基地

!!转载于:https://www.cnblogs.com/rrttp/p/9049282.html

webpack如何使用css文件的配置_webpack多页面css文件路径设置_Kikyo--的博客-程序员宅基地

将css文件打包步骤一:创建 一个css文件步骤二:添加css文件依赖步骤三:在webpack.config.js中添加相关配置步骤四:安装css-loader和style-loader(注意css-loader和style-loader两个版本要一样)步骤五:运行后引入HTML代码中运行即可...

android studio中的对话框----------AlertDialog_IDEA_TEYU_1112的博客-程序员宅基地

几乎大多数的安卓应用都用到了对话框这个功能,可见它在安卓开发中的重要性了,但是,它会屏蔽掉其他控件的交互能力,所以它的使用一定要慎重,一定是十分重要的信息才需要使用这个对话框,否者,这样的对话框多了,就会使用户的体验非常差。首先定义一个Button,在布局xml文件中加入如下代码<Button android:id="@+id/button" and...

freemark 踩坑之旅-使用openhtmltopdf 将 html 转 为 pdf分页问题_openhtmltopdf 分页_漫漫蜗牛路的博客-程序员宅基地

image概述想要做出比较美观的pdf ,比较好的实现方式是使用html 转 pdf。后端生成html可以使用 freemark 去实现。由于很多时候freemark 中的数据是动态的,所以生成的html 也是动态的。很难排版,无法确定分页位置。那么在转pdf 的时候就面临分页的问题,特别是表格。一个表格被分割成两页,不仅影响美观,查看数据也不是很方便,如下所示...

Java篇 - 反射机制分析(附面试中的坑)_反射会导致重复吗_Tony-老师的博客-程序员宅基地

反射的运用很广泛,很多库都运用了反射,如Junit,EventBus,Gson,Retrofit,Spring等。动态代理,Android的Hook技术也离不开反射的身影。 目录:反射的概念 反射的使用 反射的优缺点 如何提高反射效率 面试中的反射问题 1. 反射的概念在Java运行时环境中,对于任意一个类,可以知道这个类有哪些属性和方法。对于任意一个对象,可以调...

随便推点

【调剂】2020年上海海事大学接收调剂硕士生专业及联系方式_计算机与软件考研的博客-程序员宅基地

点击文末的阅读原文或者公众号界面左下角的调剂信息或者公众号回复“调剂”是计算机/软件等专业的所有调剂信息集合,会一直更新的。欢迎报考、调剂上海海事大学硕士研究生!2020年我校拟接收调剂...

【恋上数据结构】串匹配算法(蛮力匹配、KMP【重点】、Boyer-Moore、Karp-Rabin、Sunday_m0_64867435的博客-程序员宅基地

蛮力(Brute Force)KMPBoyer-MooreKarp-Rabin / Rabin-KarpSunday下面用 tlen 代表文本串 text 的长度,plen 代表模式串 pattern 的长度;蛮力(Brute Force)==================================================================================以字符为单位,从左到右移动模式串,直到匹配成功 ;蛮力算法有..

android MediaPlayer surface分析_sujia13的博客-程序员宅基地

简单记录一下mediaplayer Surface和Render的过程void setSurface(Surface surface) ------MediaPlayer.java void android_media_MediaPlayer_setVideoSurface ---- android_media_MediaPlayer.cpp 313 s

Node.Js + Socket.IO vs SignalR vs C# WebSocket Server_signalr socketio_besley的博客-程序员宅基地

12down votefavorite5I currently have a TCP server application written in .Net that receives and submits messages to clients. I am looking at building a web application so need the

手写springboot--依据原理(内置tomcat的手写,以及内置springmvc的手写)撰写_RollinSpark的博客-程序员宅基地

声明:本文针对于含有springboot基础上讲解,至少涉猎过springboot的原理。一、首先我们先来复习下springboot的核心原理要点。1.基于SpringMVC无配置文件(纯Java)完全注解化+内置tomcat-embed-core实现SpringBoot框架,Main函数启动。2.SpringBoot核心快速整合第三方框架原理:Maven继承依赖关系3.SpringBoot内嵌入...

linux 自做iso文件夹,制作ubuntu16.04 (12.04)自动安装iso镜像(只需要手动分区,其他自动)..._李博杰的博客-程序员宅基地

背景:官网下载Ubuntu镜像安装,交互模式需要手动配置很多东西,为了快速安装,特制作自动安装镜像,方便安装系统。以下方法是参照已经做好的12.04自动安装镜像修改16.04的镜像,最终成功,此配置方法应该是普适的。制作方法:下载官网镜像iso文件:ubuntu-16.04.4-server-amd64.iso (http://mirrors.zju.edu.cn/ubuntu-releases/...

推荐文章

热门文章

相关标签