本发明涉及服务器应用技术领域,具体涉及一种基于grub2的linux系统启动bootloader的制作方法。
背景技术:
当前linux系统的内核版本已经升级至4.0以上,最新的linux系统大多采用3.0以上的kernel版本,这些kernel均采用grub2作为bootloader。而在实际应用和生产环境中,许多场景依然采用grub作为bootloader,这就导致了很多架构、兼容性、驱动及扩展方面的问题。
技术实现要素:
本发明的技术任务是提供一种基于grub2的linux系统启动bootloader的制作方法,制作一种实用、方便、兼容性高、功能性强的系统引导文件,对当前的linux启动、引导方式进行了很多方面的补充和完善,制作方便,实用性强,兼容性高。
本发明解决其技术问题所采用的技术方案是:
一种基于grub2的linux系统启动bootloader的制作方法,利用shell脚本,自动生成bootloader,引导不同的方式包括网络、dvd、硬盘和uefishell的启动,并扩展驱动,生成引导菜单。
进一步的,该方法的具体实现包括环境准备、功能实现和自动化脚本编写,
环境准备:
1)、安装uefi的linux系统,
2)、配置可用的yum源,
3)、执行yuminstallgrub2-efi*;
功能实现:
1)、确定所需驱动,
2)、确定系统引导方式,
3)、确定引导os版本,
4)、确定所需额外功能。
进一步的,系统引导方式包括网络、光驱和硬盘。
进一步的,确定引导os版本为linux。
进一步的,所需额外功能包括无盘引导和kickstart启动。
进一步的,脚本实现步骤如下:
1)、开始,生成工作目录,确定系统版本;
2)、确定kernel、驱动文件路径;
3)、确定系统启动参数;
4)、生成grub.cfg文件配置驱动,设置网络,启动选项;
5)、生成包含grub.cfg的grub2.efi文件,启动自动进入grub2环境;
6)、配置输出文件路径;
7)、删除缓存文件;结束。
本发明的一种基于grub2的linux系统启动bootloader的制作方法与现有技术相比,具有以下有益效果:
该方法在linux系统下实现,利用shell脚本,自动生成bootloader,可引导不同方式(网络,dvd,硬盘,uefishell)的启动,并且可扩展驱动,生成引导菜单。对当前的linux启动、引导方式进行了很多方面的补充和完善,制作方便,实用性强,兼容性高。
附图说明
图1是脚本实现流程图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
一种基于grub2的linux系统启动bootloader的制作方法,利用shell脚本,自动生成bootloader,引导不同的方式包括网络、dvd、硬盘和uefishell的启动,并扩展驱动,生成引导菜单。
该方法的具体实现包括环境准备、功能实现和自动化脚本编写。
环境准备:
1)、安装uefi的linux系统,
2)、配置可用的yum源,
3)、执行yuminstallgrub2-efi*;
功能实现:
1)、确定所需驱动,
启动文件中添加方法:
{
insmodnet
insmodefinet
insmodtftp
insmodgzio
insmodpart_gpt
insmodefi_gop
insmodefi_uga
}
2)、确定系统引导方式,
a)、网络
b)、光驱
c)、硬盘
3)、确定引导os版本,
linux
4)、确定所需额外功能。
a)、无盘引导
b)、kickstart启动。
脚本实现:
实现步骤如下:
1)、开始,生成工作目录,确定系统版本;
2)、确定kernel、驱动文件路径;
3)、确定系统启动参数;
4)、生成grub.cfg文件配置驱动,设置网络,启动选项;
5)、生成包含grub.cfg的grub2.efi文件,启动自动进入grub2环境;
6)、配置输出文件路径;
7)、删除缓存文件;结束。
scripts:
#!/bin/bash
#program:
#onlyusetogeneratoravalidbootloaderfile(orksloaderfile).
#condition:
#yoursystemmusthavegrub2-efiinstalled.
functionsep()#生成分割线
{
echo-e"\033[33m=======================================\033[0m"
}
functionconfig()#启动引导配置
{
echo$os|greprh7#不同系列os引导参数配置
if[$-eq0];then
repo=inst.repo
else
repo=repo
fi
#grub.cfg文件配置
cat>boot/grub/grub.cfg<<eof
settimeout=0
menuentry"$os"--classos{
#添加必备驱动,网络、硬盘、显卡
insmodnet
insmodefinet
insmodtftp
insmodgzio
insmodpart_gpt
insmodefi_gop
insmodefi_uga
setnet_default_server=100.2.36.2#设置dhcp服务器
net_add_addreno0efinet0100.2.36.9#设置静态ip
echo'loadinginitialvmlinuzramdisk...'
#配置系统引导参数
linux(tftp)/images/rhel/$os/vmlinuz$repo=http://100.2.36.3/iso/redhat/$osmodprobe.blacklist=qat_c62xinst.ks=http://100.2.36.194/ks/ali/auto-rh73-64.cfg
echo'loadinginitialinitrdramdisk...'
initrd(tftp)/images/rhel/$os/initrd.img
}
eof
#.............ks.efi..............
#配置额外功能,kickstart
echo
read-p"buildagrubforks-boot(y/n)"check
if["$check"=="y"];then
echo$os|greprh7
if[$-eq0];then
ks=inst.ks
else
read-p"whichnicyouwanttoconfig(eth0/eth1/..):"ksde
ks="ksdevice=$ksdeks"
fi
#read-p"enterthenameofksfile:"ksname
#read-p"enterthepath:"kspath
sed-i"15alinux(tftp)/images/rhel/$os/vmlinuz$repo=http://100.2.36.3/iso/redhat/$os$ks=http://100.2.36.2/ks/rhel/rhel${release}.cfg"boot/grub/grub.cfg
sed-i'15d'boot/grub/grub.cfg
fi
#...................................
}
functiongenerate()#一键生成gurb.efi文件
{
if["$check"=="y"];then
os=${os}_ks
fi
grub2-mkstandalone-d/usr/lib/grub/x86_64-efi/-ox86_64-efi--fonts="unicode"-obootx64.efiboot/grub/grub.cfg
read-p"enterthedirtoputgrubfile,leaveblankfordefault(defaultis/var/lib/tftpboot/grub2.cfg/rhel):"location#输入生成的grub.efi文件存放的路径
if["$location"==""];then
cpbootx64.efi/var/lib/tftpboot/grub2.cfg/rhel/${os}.efi
else
cpbootx64.efi$location/$os.efi
fi
rm/root/desktop/workspace-rf#删除临时文件
}
###############main#################
echo
mkdir-p/root/desktop/workspace/grub2-efi/#生成工作目录
cd/root/desktop/workspace/grub2-efi/
read-p"entertherelease(66_6472_64):"release
os=rh$release
dir=rhel
mkdir-p$os/boot/grub/
cd$os
config#系统配置
generate生成所需文件
###############end################
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。