美文网首页
GRUB制作启动U盘

GRUB制作启动U盘

作者: a11oy | 来源:发表于2022-03-12 00:12 被阅读0次
  1. U盘分区
    由于windows系统限制,使用Linux gdisk等工具对U盘分区
    GPT
    分区1:EFI分区,FAT,50M,hex code:ef00
    分区2:存储分区,FAT,视U盘大小设置,hex code:0700
    分区3:linux根分区,EXT4,10G,hex code:8304
    分区4:biosboot分区,无需格式化,2M,hex code:ef02
    若无需随身启动linux,可无需分区3
    若无需兼容传统bios启动,可无需分区4
  2. grub-install
挂载分区1、分区2
# mount /dev/sdx1 /mnt/efi
# mount /dev/sdx2 /mnt/boot

UEFI启动引导安装
# grub-install --target=x86_64-efi --efi-directory=/mnt/efi --boot-directory=/mnt/boot --removable
传统BIOS启动引导安装
# grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sdx

sdx替换为真实的U盘设备符
若采用一些linux发行版的grub软件,程序或为grub2-install
在U盘安装UEFI引导时,必须加上removable参数

  1. grub.cfg
    在分区2,grub文件夹中,创建简易的grub.cfg配置文件。
set default="0" 
loadfont unicode
set gfxmode=auto
function load_video {           ///此段用于
  echo                          ///ARM64
}                               ///启动
function load_video {           ///此
  insmod video                  
  insmod video_bochs            ///段
  insmod video_cirrus           ///
  insmod video_fb               ///用
  insmod all_video              
  insmod videoinfo              ///于
if [ $grub_platform = efi ];then///x86_64
  insmod efi_gop
  insmod efi_uga
elif [ $grub_platform = pc ];then///启
  insmod vga
  insmod vbe
fi
}                               ///动
load_video
insmod gfxterm
insmod gettext
set locale_dir=$prefix/locale
set lang=zh_CN
terminal_output gfxterm
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=60
set rootuuid=""                                          ///设置分区2的UUID
set p3uuid=""                                            ///设置分区3的UUID
search --no-floppy --set=root --fs-uuid $rootuuid        ///将分区2设置为根分区
search --no-floppy --set=p3part --fs-uuid $p3uuid        ///设置分区3别名

grub.cfg文件接下来设置系统启动项,所有以下的iso安装镜像文件均放在分区2中。
RHEL、Centos、Fedora系列iso安装镜像

menuentry '安装 CentOS或其他命名' --class fedora --class gnu-linux --class gnu --class os {
  set isofile=/[安装镜像文件名].iso
  loopback loop $isofile
  probe -u (loop) --set=loopuuid
  set id=UUID=$loopuuid
  linux (loop)/images/pxeboot/vmlinuz iso-scan/filename=$isofile inst.stage2=hd:$id ks=hd:$id:/ks.cfg inst.nosave=all inst.gpt quiet
  initrd (loop)/images/pxeboot/initrd.img
}
///采用anaconda安装程序,配置详情(inst.stage2、ks等)请自行查阅资料。

debian发行版iso安装镜像

menuentry '安装 debian或其他命名' --class gnu-linux --class gnu --class os {
  linux /debianhdd/vmlinuz quiet
  initrd /debianhdd/initrd.gz
}
///debian需要下载支持磁盘安装的内核文件(hd media installer),可将下载文件放在分区2任意位置

opensuse发行版iso安装镜像

menuentry ‘安装 openSuSE或其他命名’ --class fedora --class gnu-linux --class gnu --class os {
set isofile=/[安装镜像文件名].iso
loopback loop $isofile
linux (loop)/boot/x86_64/loader/linux iso-scan/filename=$isofile
initrd (loop) /boot/x86_64/loader/initrd
}
///suse内核本身自带硬盘安装支持,因此直接拉取安装镜像中的内核文件

windows链式启动

menuentry ‘Windows PE’ {
  if [ $grub_platform = efi ]; then
    insmod chain
    chainloader /winpe/EFI/Boot/bootx64.efi
  elif [ $grub_platform = pc ]; then
    linux16 /boot/grub/memdisk harddisk
    initrd16 /winpe/WinPE_BIOS.vhd
  fi
}
///windows PE系统可由windows ADK工具生成,memdisk由syslinux工具提供

U盘分区3 linux启动

menuentry "随身linux或其他命名" {
  set root=$p3part
  linux /boot/vmlinuz-5.3.18-lp152.19-default root=UUID=$p3uuid quiet mitigations=off
  initrd /boot/initrd-5.3.18-lp152.19-default
}
///将linux安装至分区3,即可实现u盘启动

相关文章

网友评论

      本文标题:GRUB制作启动U盘

      本文链接:https://www.haomeiwen.com/subject/aoohdrtx.html